2009. augusztus 14., péntek

Jelszó rejtése file-ba.

Az előző program párja :


while ($line = <STDIN> ) {

chomp($line);
$line =~ s/:([0-9A-Fa-f]{8})//;
$line =~ s/([0-9A-Fa-f]{2})$//;
$line =~ s/([0-9A-Fa-f]{2})/$1 /g;
print "$line\n";

}

Ez a program visszaalakítja az intel .hex fájlt egy sima hexadecimális kóddá, amit a text konverterrel simán visszaalakíthatunk szöveggé.

Íme egy példa : Ez az eredeti jelszó :

Wqd45Rt6zHJKle+456FFDe5

Hexa-ba konvertálva ez lesz belőle :

57 71 64 34 35 52 74 36 7a 48 4a 4b 6c 65 2b 34 35 36 46 46 44 65 35

Az első programmal elkódolva :

:1700000057716434355274367a484a4b6c652b3435364646446535FC
:00000001FF

(Egy Intel .hex fájlnak kinéző valami lesz belőle.)

Ezt egy picdisl.exe hibátlanul "disassemblálja" :

0000 7157 db 0x71,0x57
0001 3464 db 0x34,0x64
0002 5235 db 0x52,0x35
0003 3674 db 0x36,0x74
0004 487a db 0x48,0x7a
0005 4b4a db 0x4b,0x4a
0006 656c db 0x65,0x6c
0007 342b db 0x34,0x2b
0008 3635 db 0x36,0x35
0009 4646 db 0x46,0x46
000a 6544 db 0x65,0x44
000b pff35 db ?,0x35

(Így is tárolhatjuk (ilyen kimenetként) de így akkor kell még egy program, ami visszaalakítaná ezt sima .hex-be, vagy egyből ezt is lehet hexa formátumba tenni.)

A variációk száma végtelen. Ha akarjuk még spirázni, akkor nem adatblokkot alkalmazunk, hanem rendes utasításokat, azaz az utasításoknak csak a második eleme lesz adat az első az az utasítás kódja. Ezzel többet kell reszelni és nem biztos, hogy megéri, de el lehet vele tökölni. Ezt még meg lehet próbálni hex2bin és bin2hex konvertálókkal gyűrködni. A végén lesz ott egy bináris fájl. Azt tovább lehet base64-el eltolásokkal variálni. A variációk száma végtelen. Az információt olyan szinten el lehet dugni, hogy senki nem fogja tudni visszafejteni. Főleg, ha még megtévesztésül rakunk oda egy-két félrevezető információt. :-)

Ha így tároljuk el a jelszót, abból senki nem fogja tudni kiszedni a tartalmat :-) Még a képzett forensic ügynök se. Mert nem fogja tudni, hogy hova van eldugva. Hozhatja a szteganográfiai analizátorokat, azok se fognak találni semmit. Egy jó hosszú random jelszót meg próbálgatással vagy szivárványtáblával megtörni eltarthat egy darabig. Persze a legjobb, ha a jelszó mellé beteszünk még pár "csapdát" amin elhasal a kedves próbálkozó. Így esélytelen lesz az ügy. A base64-es kódolást ezzel kombinálva már egy elég erős védelmet tudunk készíteni. Az erőssége abban rejlik, hogy aki fel akarja törni, nem tudja, hogy merre kell elindulni. Így aztán lehet, hogy végtelen sok idő se lesz elég neki...

Ezek csak példák voltak, hogy mindenféle titkosító kütyü nélkül pusztán az emberi találékonyságot és leleményt felhasználva milyen nehezen kibogozható titkosításokat dobhatunk össze. Ez nem bonyolult matematikai függvényeket alkalmaz, hanem az emberi elme működésének a gyengeségeit használja ki. Gépek pedig egyszerűen képtelenek az ilyen védelmeket megtörni, mert ehhez "gondolkodni" kell. Lelemény és találékonyság kell a feltöréshez is, az meg egyelőre még hiányzik a gépekből. Ha egy gép nem tudja "értelmezni" amit lát, hogy "nem szokványosan" kell elemezni az információt, akkor esélytelen, hogy eljut a megoldásig.

Nincsenek megjegyzések:

Megjegyzés küldése

Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.