Përshëndetje, Habr.
Dëshiroj t'ju prezantoj një projekt të vogël mbi , i bërë në kohën time të lirë nga studimet.
Kam realizuar një projekt për ruajtjen e fshehtë të informacionit në sistemin e skedarëve (më poshtë FS).
Kjo mund të përdoret për vjedhjen e informacionit të ndjeshëm për qëllime edukative.

Si një mostër eksperimentale ishte zgjedhur një sistem skedarësh të vjetër linuks, .
Implementimi
Konsideratat për zbatimin
Nëse e "shkarkon" standardin ext2 mirë, mund të zbulosh se në FS ekziston një , në të cilin jepet informacioni kryesor rreth sistemit. Më pas, unë gjeta dhe . Pothuajse menjëherë lindi ideja për të regjistruar informacionin në blloqet për momentin bosh të FS. Tani duhej të mendohej për mbrojtjen nga programuesi, i armatosur me .
Nëse ruhet informacioni i fshehtë pa enkriptim, atëherë, përkundër paqartësisë së tij në FS, do të jetë ende shumë i dukshëm, veçanërisht nëse programuesi e di se çfarë duhet të kërkojë. Prandaj, u mor vendimi për të enkriptuar të gjitha blloqet e skedarit origjinal. Kam zgjedhur enkriptimin me bllok, por siç e kuptoni, kjo nuk është thelbësore.
Për të ndarë blloqet e nevojshme nga të tjerët gjatë leximit, u vendos të shtohet një shenjë speciale në fillim të çdo blloku. Kjo shenjë u enkriptua në varësi të numrit të bllokut në skedarin origjinal. Kjo strategji lejon jo vetëm të gjeje blloqet e nevojshme, por edhe të zbuloje rendin e tyre të saktë.
Parimi i përgjithshëm i punës së sistemit.

Algoritmi i regjistrimit
Hapat:
- Së pari, shkruani ndonjë informacion në sistemin e skedarëve origjinal;
- Fshihni këtë informacion (nuk është e nevojshme të fshihni të gjithë);
- Shkruani skedarin për t'u fshehur në blloqe me gjatësi të barabartë, duke shtuar një shenjë;
- Enkriptoni këto blloqe;
- Vendosni blloqet e enkriptuara në blloqet bosh të FS.
Për adhuruesit e diagrameve të bllokut
Më poshtë paraqitet një diagram blloku i algoritmit të regjistrimit. Në hyrje, algoritmi merr katër skedare:
- Imazhin e sistemit të skedarëve që do të ndryshohet;
- Skedarin që do të nënshtrohet steganografisë;
- Skedarin me çelësin e enkriptimit për AES;
- Skedarin me shenjën.

MenjĂ«herĂ« duhet theksuar se ky algoritĂ«m ka njĂ« disavantazh: pas regjistrimit tĂ« skedarit nĂ« FS, pĂ«r shkak tĂ« ndryshimeve qĂ« nuk janĂ« marrĂ« parasysh nĂ« paketĂ«n R â presim qĂ« tĂ« rregullojnĂ«. nuk mund tĂ« shkruani ndonjĂ« informacion tĂ« ri nĂ« FS, pasi çdo informacion i ri mund tĂ« mbulojĂ« blloqet qĂ« kemi rezervuar pĂ«r skedarin tonĂ« tĂ« steganografuar, megjithatĂ«, kjo hap mundĂ«sinĂ« e "pastrimit tĂ« shpejtĂ« tĂ« gjurmĂ«ve".
Porosinë është e qartë se si mund të rregullohet: është e nevojshme të riprogramohet algoritmi për regjistrimin e blloqeve në FS. Kjo është një detyrë e qartë, por jashtëzakonisht e lodhshme.
Për qëllime të Proof Of Concept nuk e kam realizuar këtë.
Si rezultat, do të kemi ndryshime të tilla në FS, ja si duket FS para steganografisë (një skedar audio është regjistruar paraprakisht).

Ja si duket FS me informacion të steganografuar tashmë.

Algoritmi i leximit
Hapat:
- Duke ditur çelësin dhe mënyrën e ndërtimit të markave, krijohet grupi i parë i N markave, me garanci që N, të shumëzohet me gjatësinë e bllokut të sistemit të skedarit, është më e madhe se gjatësia e skedarit të steganografuar.
- Të kërkosh blloqet në FS që fillojnë me markat;
- Dekripto blloqet e marra dhe ndaje markat;
- Mblidh blloqet e marra në rendin e duhur dhe merr skedarin origjinal.
Për adhuruesit e diagrameve të bllokut
Më poshtë është paraqitur një diagram i algoritmit të regjistrimit. Në hyrje, algoritmi merr tre skedarë:
-Imazhi i sistemit të skedarëve;
- Skedarin me çelësin e enkriptimit për AES;
- Skedarin me shenjën.

Pas ekzekutimit të programit, shfaqet skedari Read, i cili do të jetë skedari i nxjerrë nga FS-ja steganografike, nëse çelësi ose marka janë specifikuar gabimisht, atëherë skedari Read do të jetë i zbrazët.
(për adhuruesit e bukurisë, mund të përfshihen jo vetëm skedari, por edhe "kapaku", që përmban meta-informacion: emri i skedarit, të drejtat, koha e ndryshimit të fundit, etj.)
Automatizimi i ekzekutimit
Për lehtësinë, janë shkruar skripte bash që automatizojnë ekzekutimin në Linux (testuar në Ubuntu 16.04.3 LTS).
Të analizojmë ekzekutimin hap pas hapi.
Shkrimi:
- sudo Copy_Flash.sh âDEVICEâ â marrim imazhin e FS nga DEVICE (flash);
- .\/Write.sh âFILEâ âKEYâ âMARKERâ â krijojmĂ« njĂ« mjedis virtual, shkarkojmĂ« libraritĂ« e nevojshme dhe startojmĂ« skriptin pĂ«r regjistrim;
- sudo .\/Write_Flash.sh âDEVICEâ â regjistrojmĂ« FS-nĂ« e modifikuar sĂ«rish nĂ« DEVICE.
Leximi:
- sudo Copy_Flash.sh âDEVICEâ â marrim imazhin e FS nga DEVICE (flash);
- .\/Read.sh âKEYâ âMARKERâ â krijojmĂ« njĂ« mjedis virtual, shkarkojmĂ« libraritĂ« e nevojshme dhe startojmĂ« skriptin pĂ«r lexim;
- NĂ« katalogun aktual hapim skedarin Read â ky Ă«shtĂ« informacioni i steganografuar.
Përfundim
Ky metod i steganografisë, ndoshta, ka nevojë për përmirësim, testim të mëtejshëm dhe zgjerim në sisteme skedarësh më të njohura, siç janë , dhe .
Por qëllimi i këtij punimi ishte të tregonte principin, me anë të të cilit mund të realizohet ruajtja e fshehtë e informacionit në sistemin e skedarëve.
Me këto algoritme, mund të ruani informacionin pa frikë, dhe ndërsa, duke ditur çelësin, është e mundur të thyehet një sistem të tillë jo përmes përmbytjes së plotë (por me një algoritëm mjaft të gjatë), pa njohuri për çelësin, kjo sistem më duket krejtësisht i qëndrueshëm; gjithsesi, kjo mund të shërbejë si shkak për një artikull të veçantë.
I gjithë kodi është realizuar në gjuhën Python versioni 3.5.2. është paraqitur në kanalin tim youtube. Kodi i plotë i projektit është publikuar në .
(Po, po, e di qĂ« pĂ«r versionin e prodhimit duhet tĂ« shkruhen nĂ« diçka "tĂ« shpejtĂ«", pĂ«r shembull nĂ« C đ )
Në këtë realizim, madhësia e skedarit hyrës për steganografinë nuk duhet të kalojë 1000 kB.
Dëshiroj të shpreh mirënjohje përdoruesit për këshillat e çmuara gjatë planifikimit të hulumtimit dhe rekomandimet për përgatitjen e artikullit.
Burimi: habr.com
