Hey Habr.
Ez dixwazim li ser projeyek piçûk pêşkêşî we bikim
Min projeyek li ser hilanîna veşartî ya agahdariya di pergala pelan de çêkir (bêtir FS).
Ev dikare ji bo dizîna agahdariya nehênî ji bo armancên perwerdehiyê were bikar anîn.
Linux FS-ya pir kevn wekî prototîp hate hilbijartin
Реализация
Fikrên Pêkanînê
Heke baş e ku meriv standarda ext2 "vekişîne", wê hingê hûn dikarin li şûna ku di FS-ê de jê re tê gotin heye.
Ger hûn agahdariya veşartî bêyî şîfrekirinê hilînin, wê hingê, tevî ku di FS-ê de nezelalbûna wê jî, ew ê dîsa jî pir berbiçav be, nemaze heke bernamenûs zanibe ku li çi bigere. Ji ber vê yekê, biryar hate girtin ku hemî blokên pelê çavkaniyê şîfre bikin. Min şîfreya blokê hilbijart
Ji bo ku dema xwendinê blokên pêwîst ji hemî yên din veqetînin, biryar hate girtin ku di destpêka blokê de nîşanek taybetî li her blokê zêde bikin. Ev nîşanek li gorî hejmara blokê ya di pelê çavkaniyê de hate şîfre kirin. Vê hîleyê tavilê îmkan da ku ne tenê blokên pêwîst bibîne, lê di heman demê de rêza wan a rast jî nas bike.
Prensîba xebata giştî ya pergalê.
Algorîtmaya tomarkirinê
Xal:
- Pêşî hin agahdarî li pergala pelê çavkaniyê binivîsin;
- Vê agahiyê jêbirin (ne hewce ye ku hemî);
- Pela ku were veşartin di blokên bi dirêjahiya wekhev de tê dabeş kirin, nîşankerek lê zêde dike;
- Van blokan şîfre bikin;
- Blokên şîfrekirî di blokên FS yên vala de bi cîh bikin.
Ji bo evîndarên blokên diagramê
Li jêr bloka algorîtmaya tomarkirinê heye. Algorîtma çar pelan wekî têketinê distîne:
-Wêneya pergala pelê ya ku tê guherandin;
-Pelê mijara steganografiyê;
-Pelê bi mifteya şîfrekirinê ji bo AES;
-Pel bi nîşanker.
Hêjayî bibîrxistinê ye ku ev algorîtma yek kêmasiyek heye: piştî nivîsandina pelê li FS, nikare Tiştek nû di FS-ê de binivîsin, ji ber ku her agahdariya nû dikare di blokên ku me ji dosyaya xweya zipkirî re veqetandiye biqede, her çend ev jî îhtîmala "zû vegirtina şopên me" vedike.
Lê pir eşkere ye ku ev çawa dikare were rast kirin: pêdivî ye ku algorîtmaya ji bo nivîsandina blokên di FS-ê de ji nû ve were nivîsandin. Ev karekî têgihîştî ye, lê pir dem-dirêj e.
Ji bo Proof Of Consept min ev pêk neanî.
Wekî encamek, dê guheztinên jêrîn li FS-ê bêne çêkirin; ev e ku FS berî steganografiyê dixuye (pelek dengek berê hatî tomar kirin).
Û ev e ku FS bi agahdariya ku jixwe ve hatî zivirandin xuya dike.
Algorîtmaya xwendinê
Xal:
- Bi zanîna mifteyê û rêbaza çêkirina nîşankeran, N nîşankerên yekem berhev bikin, bi garantiya ku N-ya ku bi dirêjahiya bloka pergala pelê zêde dibe ji dirêjahiya pelê zipkirî mezintir e;
- Li blokên di FS-ê de bi nîşankeran dest pê dikin bigerin;
- Blokên wergirtî deşîfre bikin û nîşankeran ji hev veqetînin;
- Blokên encam di rêza rast de berhev bikin û pelê çavkaniyê bistînin.
Ji bo evîndarên blokên diagramê
Li jêr bloka algorîtmaya tomarkirinê heye. Algorîtma sê pelan wekî têketinê distîne:
-Wêneyê pergala pelê;
-Pelê bi mifteya şîfrekirinê ji bo AES;
-Pel bi nîşanker.
Piştî ku bername dimeşîne, pelê Read xuya dibe, ku ew ê pelê ji pergala pelan a steganografî hatî derxistin; heke mift an nîşanker bi xeletî hate destnîşankirin, wê hingê pelê Read dê vala bibe.
(ji bo evîndarên bedewiyê, hûn dikarin ne tenê pelê, lê "sernivîsek" ku meta-agahdariyê tê de têxin nav xwe: navê pelê, maf, dema guherandina paşîn, hwd.)
Otomasyona destpêkê
Ji bo rehetiyê, nivîsarên bash hatin nivîsandin ku destpêkirina li Linux-ê otomatîk bikin (li ser Ubuntu 16.04.3 LTS ceribandin).
Ka em gav bi gav li destpêkirinê binêrin.
Rekor:
- sudo Copy_Flash.sh "DEVICE" - wêneya FS-ê ji DEVICE (flash);
- ./Write.sh "FILE" "KEY" "MARKER" - jîngehek virtual biafirîne, pirtûkxaneyên hewce dakêşîne û skrîptê binivîsîne;
- sudo ./Write_Flash.sh "DEVICE" - FS-ya guherî dîsa li DEVICE binivîse.
Xwendinî:
- sudo Copy_Flash.sh "DEVICE" - wêneya FS-ê ji DEVICE (flash);
- ./Read.sh "KEY" 'MARKER" - jîngehek virtual biafirîne, pirtûkxaneyên pêwîst dakêşîne û ji bo xwendinê skipt bimeşîne;
- Di pelrêça heyî de, pelê Xwendin vekin - ev agahdariya zipkirî ye.
encamê
Ev rêbaza steganografiyê dibe ku pêdivî bi başkirin, ceribandina zêde û dirêjkirina pergalên pelan ên populertir, wek mînak
Lê mebesta vê xebatê ew bû ku prensîba nîşan bide ku pê gengaz e ku meriv hilanîna veşartî ya agahdariya di pergala pelan de pêk bîne.
Bi alîkariya algorîtmayên weha, hûn dikarin bêtirs agahdarî hilînin, û heke, heke hûn mifteyê zanibin, ne bi hêzek hov (lê bi algorîtmayek pir dirêj) gengaz e ku hûn pergalek weha hack bikin, wê hingê bêyî ku mifteyê bizanibin, ev pergal ji min re bêkêmasî aram xuya dike, lêbelê, ev dibe sedemek ji bo gotarek cûda.
Hemî kod di guhertoya Python 3.5.2 de têne bicîh kirin.
(Erê, erê, ez dizanim ku ji bo guhertoya hilberînê hûn hewce ne ku di tiştek "lez" de binivîsin, mînakî C 😉)
Di vê pêkanînê de, mezinahiya pelê têketinê ji bo steganografiyê divê ji 1000 kB derbas nebe.
Ez dixwazim spasiya xwe ji bikarhêner re diyar bikim
Source: www.habr.com