"...ez a módszer az egyik legrégibb és legismertebb. Hacsak a kulcs nem nagyon hosszú, a CIA vagy az NSA várhatóan egy napon belül megfejti file-unkat."
(Kernighan Brian W. és Plauger P. J. A programozás magasiskolája. Műszaki. 1982., a példa Java implementációja itt van: www.tankonyvtar.hu/informatika/javat-tanitok-1-1-1-080904-1)
A második labor "izometrikus-szöszmötölős" példája a Page Rank algoritmus megvalósítása volt, íme a harmadiké: törjünk fel saját C progival egy exoros titkos szöveget!
Aki nem ismeri, a fenti könyvben a részletes leírás, vagy itt a Java változathoz egy kis Móricka rajzot is készítettem anno: http://www.tankonyvtar.hu/informatika/javat-tanitok-1-1-1-080904-1 kb. a lap közepén a "1.12. példa - Titkosítás kizáró vaggyal" pont alatt.
S íme a C implementáció:
Ahogyan használd:
nbatfai@hallg:~/c$ more tiszta.szoveg
Nem tudok kimerítő leírást adni arról, hogy hogyan tudsz megtanulni
programozni -- nagyon összetett tudásról van szó. Egyet azonban
elárulhatok: a könyvek és tanfolyamok nem érnek túl sokat (sok,
valószínűleg a legtöbb hacker autodidakta). Aminek van értelme:
(a) kódot olvasni és kódot írni.
Hogyan lesz az emberből Hacker
http://esr.fsf.hu/hacker-howto.html
Kódolásnbatfai@hallg:~/c$ gcc e.c -o e -std=c99
Dekódolás:
nbatfai@hallg:~/c$ ./e kercerece <tiszta.szoveg >titkos.szoveg
nbatfai@hallg:~/c$ more titkos.szoveg
KRIKSZKRAKSZ bináris szemét
nbatfai@hallg:~/c$ ./e kercerece <titkos.szoveg
Nem tudok kimerítő leírást adni arról, hogy hogyan tudsz megtanulni
programozni -- nagyon összetett tudásról van szó. Egyet azonban
elárulhatok: a könyvek és tanfolyamok nem érnek túl sokat (sok,
valószínűleg a legtöbb hacker autodidakta). Aminek van értelme:
(a) kódot olvasni és kódot írni.
Hogyan lesz az emberből Hacker
http://esr.fsf.hu/hacker-howto.html
3 kisbajnokság
Ennyit kap, aki egy nap alatt (természetesen a saját maga írta C progijával) feltöri a következő titkos szöveget: www.inf.unideb.hu/~nbatfai/titkos.szoveg Határidő: feb. 18. 20 óra 00, perc, egy kommentben kérem a titkos kulcsot és a tiszta szöveget. Sokat segítek: 8 betű a titkos kulcs és minden betű számjegy (kvázi dupla PIN kód :)
1 kisbajnokság
Remek: gyorsan elvitték a hármat (lásd kommentek), jön itt további help, aki ennek alapján elsőre megtöri a következőt, annak is akad itt még egy kisbajnokság (természetesen, aki a hármasat törte, ezt már ne törje.)
Tekerj a tovább linkre a helpért:
Megint egyetlen állomány "darabjait" írva, s mivel most alakítjuk ki a gépelési-hibázási stílusunkat, szokásainkat, még mindig képben... a tiszta_lehet fgv. megtippeli, hogy a dekódolt szöveg a tiszta, vagy arra
az exor elvégzi majd a módosítást, ha beírod a logikai műveletet és a kulcson való lépegetést
a main() beolvassa a titkos szöveget, nem használ két egyforma tárolót a kódolt és a dekódolt szövegnek, ezért idővel nem takarékos módon :) kétszer alkalmazza ugyanazt az éppen kipróbált titkos kulcsot:
néhány ciklussal legyártjuk az összes lehetséges kulcsot
Ja, a törendő szöveg: www.inf.unideb.hu/~nbatfai/titkos.szoveg.2
Aki sirabizálta a tiszta_lehet által ontott potenciális töréseket, az tudja igazán értékelni a következő kis továbbfejlesztést:
amit a progpater.blog.hu/2011/02/14/kisbajnoksagok egyik 1 trófeás vadászatában is kamatoztathatsz :)