Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
Hakerskie amigwki
Autor: Ivan Sklyarov
Tumaczenie: Radosaw Meryk
ISBN: 83-246-0422-7
Tytu oryginau: Puzzles for Hackers
Format: B5, stron: 272
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Przedmowa ..................................................................................... 7
Cz I
amigwki ....................................................................9
Hakerskie amigwki
Spis treci
5
1.7.6. Przypomnienie .....................................................................................................86
1.7.7. Co to za ksiki? ..................................................................................................87
1.7.8. Trudne pytania .....................................................................................................87
Cz II
Rozwizania ................................................................89
Hakerskie amigwki
Dodatki ......................................................................................267
Dodatek A
Rozdzia 2.1.
A XOR B
Na przykad kod ASCII (American Standard Code for Information Interchange) litery
A to 41H, co odpowiada liczbie dwjkowej 100001, natomiast kod ASCII cyfry 1 to
31H, czyli dwjkowo 110001. Wykonanie operacji XOR dla tych dwch kodw tworzy
liczb 1110000, co odpowiada kodowi ASCII litery p.
A=1000001
XOR
1=0110001
--------p=1110000
(12-06-06)
91
Cz II Rozwizania
92
92 (12-06-06)
93
Zaszyfrowanie sowa Smith z wykorzystaniem klucza >$18 daje wynik mlXLV. Mona
to sprawdzi za pomoc tego samego programu xorer.exe (listing 2.1.1).
Jeli kto uwaa, e przesadziem, piszc, e program, w ktrym zastosowano proste
kodowanie XOR, kosztuje 1000 USD, myli si. Na rynku byy (i nadal s) programy,
ktrych cena ksztatuje si w tych granicach, pomimo tego, e zastosowano w nich
prymitywne zastrzeone algorytmy szyfrowania.
(12-06-06)
93
Cz II Rozwizania
94
Rysunek 2.1.2 a.
Zawarto pliku
out_file.txt
Istnieje prawdopodobiestwo, e jest to tajny klucz Gila, ale rwnie dobrze moe to
by zwyky zbieg okolicznoci. Mona to atwo sprawdzi. Wystarczy zastosowa cig
1981 jako mask XOR dla zaszyfrowanego tekstu. W wyniku tej operacji uzyskamy
tekst przed zaszyfrowaniem. Jak mona zauway na rysunku 2.1.2 b, okazao si, e
jest to popularny manifest autorstwa hakera o pseudonimie The Mentor, opublikowany
w czasopimie Phrack (http://www.phrack.org/phrack/7/P07-03).
Rysunek 2.1.2 b.
Manifest hakerw
The Mentora
94 (12-06-06)
95
(12-06-06)
95
Cz II Rozwizania
96
Rysunek 2.1.3 b.
Wzgldna czsto
wystpowania liter
alfabetu angielskiego
Nastpnie naley przej do zakadki Count i klikn przycisk On standard. Wywietl si wzgldne czstoci liter w zaszyfrowanym licie w porwnaniu z czstociami
standardowymi (rysunek 2.1.3 c).
Rysunek 2.1.3 c.
Wzgldne czstoci
liter w zaszyfrowanym
tekcie odwzorowane
na czstoci
standardowe
Nastpnie naley przej do zakadki New file i klikn przycisk In window. Wywietli
si czciowo odszyfrowany list (rysunek 2.1.3 d).
Jak mona zauway, wiele sw, zwaszcza krtkich (np. free), ju mona rozpozna.
Pomimo to trudno zrozumie taki tekst, dlatego trzeba go poprawi. Bez wielkiego trudu
mona wywnioskowa, e sowo dohupentstaon to po prostu documentation, dlatego
przestawimy miejsca liter h i c na zakadce Standard, po czym ponownie przeprowadzimy obliczenia na zakadce Count. W podobny sposb naley zamienia miejscami
kolejne litery do czasu, kiedy sowo dohupentstaon przyjmie posta documentation
(rysunek 2.1.3 e).
96 (12-06-06)
97
Rysunek 2.1.3 d.
Czciowo
odszyfrowany list
Rysunek 2.1.3 e.
Poprawiony
odszyfrowany tekst
Jak mona zauway, tekst jest teraz o wiele bardziej czytelny. Niektre zwroty, a nawet
cae zdania, zostay cakowicie odszyfrowane.
Mona kontynuowa zastpowanie miejscami poszczeglnych liter tak, by tekst sta
si jeszcze bardziej czytelny, jednak ju na tym etapie mona powiedzie, e gwiazdy
przesyay do siebie licencj GNU darmowej dokumentacji. Jej kompletny tekst dostpny jest pod adresem http://www.gnu.org/copyleft/fdl.html.
Od razu wida, dlaczego dla Smithnika bya to buka z masem.
Do zakodowania licencji uyto nastpujcych podstawie:
a
b
c
d
e
f
z
y
x
w
v
u
g
h
i
j
k
l
t
s
r
q
p
o
m
n
o
p
q
r
n
m
l
k
j
i
s
t
u
v
w
x
h
g
f
e
d
c
y b
z a
(12-06-06)
97
Cz II Rozwizania
98
Tabela 2.1.3 a. Wzgldna czsto liter alfabetu rosyjskiego
Litera
Wzgldna czsto
Litera
Wzgldna czsto
Litera
Wzgldna czsto
0,062
0,035
0,004
0,014
0,026
0,012
0,038
0,053
0,006
0,013
0,090
0,003
0,025
0,023
0,014
0,072
0,040
0,016
0,007
0,045
0,014
0,016
0,053
0,003
0,062
0,021
0,006
0,010
0,002
0,018
0,028
0,009
Spacja
0,174
Wzgldna czsto
Litera
Wzgldna czsto
Litera
Wzgldna czsto
0,0804
0,0154
0,0306
0,0399
0,1251
0,0230
0,0196
0,0549
0,0726
0,0016
0,0067
0,0414
0,0253
0,0709
0,0760
0,00200
0,0011
0,0612
0,0654
0,0925
0,0271
0,0099
0,0192
0,0019
0,00173
0,0009
Spacja
0,1500
98 (12-06-06)
99
u
k
s
m
l
e
i
n
f
p
Jest to kolejny problem z zastpowaniem liter, ktry mona rozwiza metod analizy
wzgldnych czstoci opisan w rozwizaniu problemu z punktu 1.1.3. Jednak metoda
ta nie najlepiej nadaje si do krtkich prbek tekstu, takich jak zaprezentowane zdanie.
Lepiej sprbowa odgadn znaczenie krtkich sw i na podstawie liter wchodzcych
w ich skad odgadywa dusze sowa. Na przykad istnieje due prawdopodobiestwo,
e jednym z trzyliterowych sw w zdaniu bdzie the, for, you itp. Litery z tych sw
mona wykorzysta do odgadnicia liter w sowach duszych i kontynuowa proces
a do odszyfrowania caego zdania.
t=
1 L i
N
S i =1
(12-06-06)
99
Cz II Rozwizania
100
Poniewa w angielskim alfabecie jest 26 liter, maksymalny czas potrzebny do sprawdzenia wszystkich moliwych kombinacji hasa nie duszego ni pi wielkich liter
zgodnie ze wzorem mona wyliczy w nastpujcy sposb:
t = (261 + 262 + 263 + 264 + 265)/50 000 = 247,1326 sekundy, czyli okoo 4,12
minuty.
Z kolei jeli w hale nie duszym ni cztery znaki mog wystpowa zarwno wielkie,
jak i mae litery, a take cyfry i symbole umieszczone na klawiszach z cyframi, liczno
zbioru dozwolonych znakw wynosi 72. Maksymalny czas potrzebny do sprawdzenia
wszystkich moliwych kombinacji mona w tym przypadku obliczy z nastpujcego
wzoru:
t = (721 + 722 + 723 + 724)/50 000 = 545,0472 sekundy, czyli okoo 9,08 minuty.
Tak wic pierwszy lamer mia racj.
Gdy znana jest dokadna liczba znakw w hale, na przykad pi w pierwszym przypadku i cztery w drugim, procedura obliczenia maksymalnego czasu potrzebnego do
sprawdzenia wszystkich moliwych kombinacji hase jest jeszcze prostsza:
t = 265/50 000 = 237,62752 sekundy, czyli w przyblieniu 3,96 minuty
dla pierwszego przypadku.
t = 724/50 000 = 537,47712 sekundy, czyli w przyblieniu 8,96 minuty
dla drugiego przypadku.
Jak wida, i tym razem pierwszy lamer mia racj.
100 (12-06-06)
101
Czterokrotnie wystpi znak f i dwukrotnie znak L. Na tej podstawie mona wycign wniosek, e w programie zastosowano nie najlepszy algorytm generowania
liczb losowych. W zwizku z tym ekspert powinien odradzi administratorowi korzystanie z drugiego generatora hase.
Oprogramowanie jest jak seks: lepiej jeli jest darmowy przyp. tum.
(12-06-06)
101
Cz II Rozwizania
102
Nastpnie plik tekstowy przetworzymy za pomoc programu John the Ripper. W systemach uniksowych mona to zrobi za pomoc nastpujcego polecenia:
#./john cipher.txt
Wszystkie powysze sowa nale do standardowego sownika programu John the Ripper
(password.lst).
Naley wzi pod uwag fakt, e program John the Ripper nie odszyfrowuje hase w takiej kolejnoci, w jakiej wystpuj w pliku tekstowym. Kolejno odszyfrowania zaley od tego, ktre ze sw zostanie odnalezione w sowniku jako pierwsze.
John the Ripper to program do amania hase firmy Solar Designer. Za pomoc
programu mona ama hasa standardowe i zaszyfrowane podwjnie za pomoc
algorytmw DES, MD5 i Blowfish. Moliwoci programu zostay opisane w jego
pliku pomocy. Informacje na jego temat mona rwnie znale pod adresem
http://www.openwall.com/john. W witrynie mona take pobra program John the
Ripper dla systemw Unix, Win32 i DOS.
102 (12-06-06)
103
mona by rozwiza, obliczajc liczb permutacji ze wzoru n!, czyli w przypadku hase
skadajcych si z dziesiciu znakw 10! = 3 628 800. W hale podanym przez dyrektora
trzykrotnie wystpuje litera A i dwukrotnie litera h. Wykorzystanie litery A w miejscu
innej litery A nie zmieni hasa. To samo dotyczy litery h. W zwizku z tym liczb hase,
ktre mona utworzy, wykorzystujc znaki z hasa podanego przez dyrektora, mona
obliczy z nastpujcego wzoru:
10!
= 302 400
3!2!
(12-06-06)
103
Cz II Rozwizania
104
104 (12-06-06)
105
y
k
#
7Ah 67h 48h 12h 4xh 40h 51h 6xh 40h 40h 23h
Sprbujmy teraz uzyska mask XOR, tzn. wykonajmy operacj XOR na kodach znakw
fraz w postaci odszyfrowanej i zaszyfrowanej. Oto wynik tej operacji:
32h 02h 31h 32h 03h 21h 32h 00h 25h 32h 02h
(12-06-06)
105
Cz II Rozwizania
106
if (str[i]=='\0') break;
printf("%c", str[i++]|3);
if (str[i]=='\0') break;
printf("%c", str[i++]&200) ;
if (str[i]=='\0') break;
printf("\n") ;
return 0;
106 (12-06-06)
107
Program John the Ripper niemal natychmiast zwrci nastpujcy cig znakw:
passwdpasswd
Jak pamitamy, dowcipny kryptolog zastosowa jeszcze mask XOR oraz szyfrowanie
DES. Jest mao prawdopodobne, aby powyszy cig znakw by wynikiem szyfrowania
DES, a zatem sprbujmy zastosowa do niego mask XOR:
\x08\x18\x3j\x3E\x44\x32\x03\x52\x27\x47\x01\x06\x4]
Ten cig bardziej przypomina haso zaszyfrowane za pomoc algorytmu DES (poniewa
ma rozmiar 13 znakw). Ponownie przekaemy je do programu John the Ripper w celu
przetworzenia z wykorzystaniem metody sownikowej. Podobnie jak w przypadku
algorytmu MD5, haso naley zapisa w pliku tekstowym i poprzedzi dwukropkiem.
Oto wynik dziaania programu John the Ripper:
Natasha
(12-06-06)
107