Autor: BabCA SjEs | 2.8.2006 |
Proč sem se vlastne rozhodl napsat strasne mooc jednoduchyho ftp crackra, kdyz jich je vsude vic nez dostatek? Jo tak to kdybych vedel, jednou mi proste ruplo v kouli tak sem sedl a napsal takovouhle hovadinku :). Nejni nijak moc slozitej ani rychlej, ale vsechno se da vychytat :o].
Co budu potrebovat?
No tak samotny program je psanej v jazyce Python ver. 2.4.1, tak ze bude stacit jakakoliv verze od cca 2.0.0 a vise. Jelikoz Python patri stejne jako Pertl, PHP atd. do scriptovacich jazyku nevytvarel sem tentokrat binarni spustitelny soubor. Pokud si tento program budete chtit spustit, musite si nainstalovat Python. Je dostupny jak na win tak i do Unixu na www.python.org. Dale si muzete stahnout dva zdrojovy kody tohoto programu. Jedna se o samotny Ftp cracker a grafickou nadstavbu na nej (mela by fungovat i na unixu, pac vyuziva Tcl/Tk rozhrani).
Vzhuru na to
No na zaklad potrebujeme neco cim se pripojime k urcitymu serveru na 21 port. Ja sem si vybral modul ftplib, ktery uz sam o sobe podporuje ovladani ftp. V modulu ftplib je jedna trida nazvana FTP (jak vistizne :)), tak jsem si ji zdedil. Diky ni se muzeme pripojit na jakykoliv server a ke vsemu si muzeme vybrat na jaky port :). V okamziku, kdyz se pripojime postupujeme stejne jako v normalnil ftp klientovi. Tedy musime se prihlasit. Tak a ted nastupuje ta dulezita cast programu. Pro cloveka by bylo strasny porad psat napr. Pavel 123; Pavel 1234; ... to by bylo na blazinec :). Tak at za nas pracujou pocitace :). Staci vytvorit dva cykli for (ten druhy musi byt vnoreny). Ten vnejsi at cte jmena a vnitrni hesla. Proc? Jmeno bude zustavat dele nes hesla, z toho tedy vyplibva, ze ke kazdemu jmenu v souboru chceme pridat vsechna hesla. For example:
for uz_jmeno in name_soubor.readlines(): #smicka na jmena
for heslo in vsechna_hesla: #smicka hesel
Tak ted to pojede: uz_jmeno+heslo; uz_jmeno+dalsi heslo; atd. Az dojede smicka hesel, nacte se nove jmeno a zese znova a fur dokola, dokud nejni konec souboru. Nyni, kdyz umime uspporadat jmena a hesla, staci do smicky hesel pridat zasilani prikazu servru. Ja sem pouzil self.sendcmd(cmd), ktery prebira jeden argument a to jest prikaz a vraci odpoved servru. Prvne odesle prikaz USER a jmeno. Toto vzdy vrati 331, ale pro jistotu je zde kontrola, pokud tedy prvni znak odpovedi je 3 tak muzeme odeslat heslo (PASS a heslo) Pokud bylo spravne vraci to 230, pkud ne Python generuje chybu, kterou jsme odchytili a pokracujem s novim heslem. Nyni uz staci zapisovat spravna hesla a o spatna se nestarat. Ja jsem do funkce crackni pridal par detailu, kvuli grafice, ale nic zavaznyho 8). Ha a jednoduchej FTP cracker je na svete :).
Dalsi vec
Pokud jste tento cracker skouseli, zjistili jste, ze je strasne pomalej. U me na Cerberusu trva 4 vteriny na jedno prihlaseni, coz je strasne dlouha doba. Toto by se dalo vyresit vytvorenim nekolika dalsich pripojeni. Pokud by se tedy najednou pripojilo dalsich deset crackru bezelo by to podstane rychleji. Takto treba funguje vetsina FTP crackru. Tak pokud se vam bude tento program libit tak dejte vedet a treba ho i vychytam, aby slapal rychleji :).
Pokud mate radi klasiku prikazoveho radku spuste pouze ftp_cracker.py. Slape uplne stejne jako s grafikou. Pro ty co maji radi wokna: vy si spuste ftp_cracker_graf.py. Grafika k tomu nejni nic moc, ale aspon neco :).
Tak to jest zase po dlouhy dobe vse. Mejte se a dejte vedet. Miru mir a lasce zdar!! (pozn. pro ty co neznaj: Jižní Pionýři =0))
<$] Babca Sjes [$>