Për një metodë të çuditshme kursimi të hapësirës në diskun e hard

NjĂ« pĂ«rdorues tjetĂ«r dĂ«shiron tĂ« regjistrojĂ« njĂ« copĂ« tĂ« re tĂ« dhĂ«nash nĂ« hard disk, por i mungon hapĂ«sira e lirĂ« pĂ«r kĂ«tĂ«. Nuk dĂ«shiron tĂ« fshij asgjĂ«, pasi "gjithçka Ă«shtĂ« shumĂ« e rĂ«ndĂ«sishme dhe e nevojshme". ÇfarĂ« duhet tĂ« bĂ«jmĂ« me tĂ«?

Kjo problematikë nuk ndodhet vetëm te ai. Në hard diskët tanë prehen terabajt informacionesh, dhe kjo sasi nuk po bie. Por sa unike është ajo? Fundja, të gjitha skedarët nuk janë gjë tjetër veçse grupe bitësh me gjatësi të caktuar dhe, shumë për të, i reja nuk dallohet shumë nga ajo që është e ruajtur tashmë.

E kuptueshme, që të kërkosh për copat e informacionit të ruajtura në hard disk është një detyrë, nëse jo e dështuar, së paku joefikase. Në anën tjetër, nëse dallimi është i vogël, mund ta përshtatim disi...

Për një metodë të çuditshme kursimi të hapësirës në diskun e hard

TL;DR — njĂ« pĂ«rpjekje tjetĂ«r pĂ«r tĂ« treguar njĂ« metodĂ« tĂ« çuditshme tĂ« optimizimit tĂ« tĂ« dhĂ«nave duke pĂ«rdorur skedarĂ« JPEG, tani nĂ« njĂ« format mĂ« tĂ« kuptueshĂ«m.

Për bitët dhe dallimin

NĂ«se marrim dy copa tĂ« dhĂ«nash tĂ« rastĂ«sishme, atĂ«herĂ« nĂ« mes tyre pĂ«rputhen nĂ« mesatare gjysma e bitĂ«ve tĂ« pĂ«rfshira. NĂ« tĂ« vĂ«rtetĂ«, mes tĂ« gjitha kombinimeve tĂ« mundshme pĂ«r çdo çift (’00, 01, 10, 11â€Č), saktĂ«sisht gjysma ka vlera tĂ« pĂ«rputhshme, kĂ«tu gjithçka Ă«shtĂ« e thjeshtĂ«.

Por sigurisht, nĂ«se thjesht marrim dy skedarĂ« dhe pĂ«rshtatim njĂ«ri-njĂ« dhe, do tĂ« humbim njĂ«rin prej tyre. NĂ«se do t’i ruajmĂ« ndryshimet, atĂ«herĂ« thjesht do tĂ« rindĂ«rtojmĂ« kodimin delta, i cili edhe pa ne ekziston mjaft mirĂ«, megjithĂ«se zakonisht nuk pĂ«rdoret pĂ«r kĂ«to qĂ«llime. Mund tĂ« pĂ«rpiqemi tĂ« integrojmĂ« njĂ« sekuencĂ« mĂ« tĂ« vogĂ«l brenda njĂ« mĂ« tĂ« madhe, por edhe kĂ«shtu rrezikojmĂ« tĂ« humbasim segmente kritike tĂ« tĂ« dhĂ«nave nĂ« pĂ«rdorim tĂ« papĂ«rgjegjshĂ«m me çdo gjĂ«.

Ajo çfarë mund të eliminojmë dallimin mes çfarë? Domethënë, skedari i ri që regjistrohet nga përdoruesi është thjesht një sekuencë bitësh, me të cilën ne vetë nuk mund të bëjmë asgjë. Atëherë duhet thjesht të gjejmë në hard disk atyre bitëve, në mënyrë që të mund të ndryshohen pa nevojën për të ruajtur diferencën, për të përballuar humbjen e tyre pa pasoja serioze. Dhe ka kuptim të ndryshohet jo vetëm vetë skedari në FSH, por ndonjë informacion më pak të ndjeshëm brenda tij. Por çfarë dhe si?

Metodat e përshtatjes

Files compressed with loss come to the rescue. All these jpegs, mp3s, and others, although they involve lossy compression, contain a lot of bits that can be safely modified. Advanced techniques can be used to subtly alter their components in various coding sections. Wait. Advanced techniques... subtle modification... bits into others... this is almost what steganography!

Indeed, embedding one piece of information into another closely resembles its methods. The inconspicuousness of the changes made to human senses is also impressive. However, the paths diverge in secrecy: our task boils down to the user adding additional information to their hard drive, which will only cause them trouble. They'll forget it soon.

Therefore, even if we can use them, some modifications need to be made. I will explain and show these modifications using one of the existing methods and a widely used file format.

About jackals

If you are going to compress, compress the most compressible in the world. It’s obviously about JPEG files. Not only is there a ton of tools and existing methods to embed data into them, but it is also the most popular graphic format on the planet.

Për një metodë të çuditshme kursimi të hapësirës në diskun e hard

Nonetheless, to avoid excess, it’s necessary to limit the focus to files of this format. Nobody likes single-color squares that appear due to excessive compression, so it’s best to work with an already compressed file, avoiding transcoding. More specifically — with integer coefficients that remain after operations responsible for data loss — DCT and quantization, beautifully illustrated in the coding chart (thanks to the Bauman national library wiki):
Për një metodë të çuditshme kursimi të hapësirës në diskun e hard

There are numerous possible methods to optimize jpeg files. There is lossless optimization (jpegtran), and there is optimization that brings noticeable changes, but we won't be concerned with that. After all, if the user is ready to embed one piece of information into another for the sake of increasing free disk space, then they have either long optimized their images or prefer not to do so out of fear of losing quality.pa humbjeF5

F5

Këto kushte i përshtaten një familje të tërë algoritmesh, me të cilët mund të njiheni në këtë prezantim të mirë. Algoritmi më i avancuar ndër ta është F5 në autorësinë e Andreas Westfeld, që punon me koeficientët e komponentës së ndriçimit, pasi syri njerzor është më pak i ndjeshëm ndaj ndryshimeve të saj. Më shumë se kaq, ai përdor një metodologi të enkriptimit, bazuar në kodimin e matricave, duke e lejuar kështu të bëjë më pak ndryshime në enkriptimin e të njëjtit informacion sa më i madh të jetë madhësia e enkriptuesit të përdorur.

Ndryshimet vijnë si rezultat i reduktimit të vlerës absolute të koeficientëve me një njësi në kushte të caktuara (dmth, jo gjithmonë), e cila lejon përdorimin e F5 për optimizimin e ruajtjes së të dhënave në hard disk. Problemi është se koeficienti pas këtij ndryshimi, me siguri, do të zërë një numër më të vogël bitësh pas kryerjes së kodimit Huffman për shkak të shpërndarjes statistikore të vlerave në JPEG, dhe zerot e rinj do të sjellin përfitime në kodimin e tyre me RLE.

Modifikimet e nevojshme reduktohen në eliminimin e pjesës që lidhet me sekretin (këmbimi i fjalëkalimeve), e cila lejon disa kursime burimesh dhe kohëzgjatjeje, dhe shtimin e mekanizmit për të punuar me shumë skedare në vend të njëri-tjetrit. Procesi i ndryshimit, me siguri, do të jetë i padëshirueshëm për lexuesin, prandaj kalojmë në përshkrimin e zbatimit.

Teknologji të larta

PĂ«r tĂ« demonstruar funksionimin e kĂ«tij qasje, kam implementuar njĂ« metodĂ« nĂ« C tĂ« pastĂ«r dhe kam kryer njĂ« sĂ«rĂ« optimizimesh pĂ«r sa i pĂ«rket shpejtĂ«sisĂ« dhe kujtesĂ«s (nuk e imagjinoni sa peshojnĂ« kĂ«to imazhe pa kompresim edhe deri nĂ« DCT). Platforma e ndĂ«rthurur u arrit pĂ«rmes pĂ«rdorimit tĂ« njĂ« kombinimi bibliotekash libjpeg, pcre dhe tinydir, pĂ«r tĂ« cilat u falenderoj. TĂ« gjitha kĂ«to mblidhen me ‘make’, prandaj pĂ«rdoruesit e Windows duhet tĂ« instalojnĂ« ndonjĂ« Cygwin ose tĂ« merren me Visual Studio dhe bibliotekat e tjera vetĂ«.

Implementimi është i disponueshëm si një utilitet konsolë dhe bibliotekë. Më shumë për përdorimin e këtij të fundit, ata që janë të interesuar mund të informohen në README në repo në GitHub, për lidhjen e të cilës do të përfshij në fund të postës.

Si të përdorni?

Me kujdes. Imazhet e përdorura për paketimin zgjidhen duke kërkuar me shprehje të rregullta në direktorinë e përcaktuar. Pasi të përfundojë, skedarët mund të transferohen, rinovohen dhe kopjohen sipas dëshirës brenda saj, të ndryshohen sistemet e skedarit dhe ato operative, etj. Megjithatë, duhen marrë masa jashtëzakonisht të kujdesshme dhe përmbajtja e drejtpërdrejtë nuk duhet të ndryshohet. Humbja e vlerës edhe të një biti mund të çojë në pamundësinë për të rikuperuar informacionin.

Pas përfundimit të punës, utilitarja lë një skedë arkivi speciale, e cila përmban gjithë informacionin e nevojshëm për dekomprimimin, duke përfshirë të dhënat mbi imazhet e përdorura. Ai vetë peson afërsisht disa kilobajtë dhe nuk ka ndonjë ndikim të rëndësishëm në hapësirën e okupuar në disk.

Mund të analizoni kapacitetin e mundshëm me ndihmën e flamurit '-a': './f5ar -a [folderi i kërkimit] [shprehja e rregullt e përputhshme me Perl]'. Paketimi bëhet me komandën './f5ar -p [folderi i kërkimit] [shprehja e rregullt e përputhshme me Perl] [skedari i paketuar] [emri i arkivit]', ndërsa dekomprimimi me './f5ar -u [skedari i arkivit] [emri i skedarit të rikuperuar]'.

Demonstrimi i funksionimit

Për të treguar efikasitetin e metodës, kam ngarkuar një koleksion prej 225 fotografive të papaguara të qenve nga shërbimi Unsplash dhe gjeti në dokumente një pdf të madhe 45 metra nga vëllimi i dytë i Artit të Programimit Knuth.

Seanci është mjaft e thjeshtë:

$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/

$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Duke lexuar skedarin e kompresimit... në rregull
Duke iniciuar arkivin... në rregull
Duke analizuar kapacitetin e bibliotekës... e bërë në 17.0s
Kapaciteti i garantuar u zbulua shpërblim 48439359 byte
Kapaciteti i mundshëm deri në 102618787 byte
Duke kompresuar... e bërë në 39.4s
Duke shpëtuar arkivin... në rregull

$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Duke iniciuar arkivin... në rregull
Duke lexuar skedarin e arkivit... në rregull
Duke mbushur arkivin me skedarë... e bërë në 1.4s
Duke dekompresuar... e bëra në 21.0s
Duke shkruar të dhënat e nxjerra... në rregull

$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf

$ du -sh dogs/
551M dogs/

Screenshot për adhuruesit

Për një metodë të çuditshme kursimi të hapësirës në diskun e hard

Skedari i dekomprimuar ende mund dhe duhet të lexohet:

Për një metodë të çuditshme kursimi të hapësirës në diskun e hard

Si e duket, nga 633 + 36 == 669 megabajt të dhënash në hard disk, arritëm në 551 më të këndshme. Ky ndryshim radikal shpjegohet nga reduktimi i vlerave të koeficientëve, që ndikojnë në kompresimin e mëpasshëm pa humbje: reduktimi me vetëm një njësi mund të "prishë" disa byte nga skedari final. Megjithatë, këto janë akoma humbje të dhënash, edhe pse jashtëzakonisht të vogla, me të cilat duhet të pajtohemi.

Fatmirësisht, ato nuk janë aspak të dukshme për syrin. Nën spoiler (pasi habrastorage nuk mbështet skedarë të mëdhenj) lexuesi mund të vlerësojë ndryshimin si me sy ashtu edhe intensitetin e tij, të marrë nga zbritja e vlerave të komponentës të ndryshuara nga origjinali: origjinali, me informacionin brenda, ndryshimi (sa më e zbehtë të jetë ngjyra, aq më pak ndryshim ka në bllok).

Në përfundim

Duke parë të gjitha këto vështirësi, blerja e një hard disku ose ngarkimi i të gjitha në re mund të duket si një zgjidhje shumë më e thjeshtë e problemit. Por, ndonëse tani jetojmë në një kohë kaq të mrekullueshme, nuk ka asnjë garanci se nesër do të jetë ende e mundur të lidhemi në internet dhe të ngarkojmë të dhënat tona të tepërta diku. Ose të shkojmë në dyqan dhe të blejmë një hard disk tjetër prej një mijë terabajtësh. Por, përdorimi i atyre që janë rënduar në shtëpi mund të bëhet gjithmonë.

-> GitHub

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster