Zpět na seznam článků     Číst komentáře (23)     Verze pro tisk

Python - FTP dictionary attack (1)

Autor: nitrexx   
24.9.2012

Vitajte pri seriály, v ktorom si postupne predstavíme tvorbu hackerských aplikácii v Pythone.


Python sa najčastejšie využíva na Unixoch a programuje sa v ňom veľa „hackerských“ programov a scriptov, hlavne kvôli krátkemu času, ktorý treba na tvorbu programu. A práve preto som zvolil tento jazyk, lebo je jednoduchý na pochopenie a zdrojový súbor obsahuje menej riadkov oproti napr.C . Na druhú stranu je ale zase aj pomalší.

V prvých dieloch seriálu si ukážeme tvorbu FTP Dict. Attacku. Kód tohto programu môže byť pre začiatočníka, ktorý sa s Pythonom ešte nestretol asi dosť zložitý, takže si najprv vysvetlíme tie ľahšie veci. Keďže môj konečný program sa skladá z vlákien a zámkov, z práce zo súbormi, práce z textovými reťazcami, časom, výnimkami, argumentmi príkazového riadku a FTP protokolom, rozhodol som sa pre rozdelenie popisu jeho tvorby do niekoľkých dielov. V nich sa postupne zoznámite s jednotlivými prvkami jazyka a s princípmi, na ktorých tento typ aplikácie funguje. Pretože tento seriál nie je tutoriálom jazyka Python pre úplných začiatočníkov, vyžaduje sa od čitateľa aspoň základná znalosť programovania v dákom skriptovacom jazyku a základy OOP. Na druhú stranu by ste sa s Pythonom mali behom jednotlivých dielov zoznámiť do takej miery, že by ste mali byť schopní vytvárať podobné aplikácie úplne sami.

Ešte pred začatím je treba si povedať, že všetko čo budem vysvetľovať, je vytvárané v Pythone 2.7. A že najlepšie je to skúšať zo súboru a nie priamo z python shellu.

Na Linuxe na začiatku súboru uvádzajte tento riadok poprípade iné umiestnenie:

#! /usr/bin/python

Práca s textom

Úplne najjednoduchší program od ktorého sa to bude všetko vyvíjať ďalej:

  1. print 'Hello world'
Uložíme ako hello.py a spustíme na windowse najlepšie v Python IDLE klávesou F5 alebo z príkazového riadku na windowse aj na linuxe príkazom:
python hello.py
Keďže ‘Hello world’ je len postupnosť znakov tak sa dá k tomu aj tak pristupovať:
  1. prem = 'Hello world'
  2. print prem[0]
Vypíše „H“ čo je nultý znak reťazca od predu sa vždy počíta od nuly ale od zadu sa počíta od -1. Takže -1 prvý znak bude posledné písmeno „d“. Z textového reťazca sa dá spraviť aj výrez od x po y vyzerá to dáko takto:
  1. prem = 'Hello world'
  2. print prem[0:5]
Vypíše na tom iba „Hello“. Na textové reťazce sa dá aplikovať veľa metód ktoré nájdete v dokumentácii pythonu. No my budeme potrebovať iba jednu a to je metóda strip() a jej odvodeniny lstrip() a rstrip(). Prvá metóda odstraňuje úvodné biele miesto aj koncové biele miesto, druhá iba úvodné a tretia iba koncové.
  1. prem = "\t Hello world "
  2. print prem.strip(), prem.rstrip(), prem.lstrip()
Ešte často využívaná metóda v mojom programe bude len() ktorá pri reťazci počíta dĺžku reťazca a pri zoznamoch počet hodnôt v ňom obsiahnutých .
  1. prem = "Hello world"
  2. print len(prem)

Práca so súbormi

Rovno to zhrniem do jedného príkladu ktorý okomentujem:
  1.  
  2. subor = 'subor.txt'  #nazov suboru ktory sa vytvory
  3. zoznam = ["slovo1","slovo2","slovo3"]  #zoznam slov podobné ako pole
  4.  
  5. hand = open(subor, "w")  #handle, otvorenie suboru v rezime zapisu
  6.  
  7. for i in zoznam: #prejde slova zo zoznamu, postupne načíta prvky zo zoznamu do premennej i
  8.     hand.write(i+"\n")  #slova zapise do suboru, kazde na novy riadok
  9.    
  10. hand.close()  #zavrie subor
  11.  
  12. cit = open(subor, "r").readlines()  #otvori v rezime citania a precita vsetky riadky
  13. print "Pocet riadkov: {0} ".format(len(cit))  #pocet riadkov
  14. print cit #vypise originalny zoznam
  15. for slovo in cit:
  16.     print slovo.strip()  #vypise zoznam slov bez bielych znakov

Ešte podotknem metódu format() ako názov napovedá slúži na formátovanie reťazca. V reťazci máme {0} a do metódy format() vložíme to, čo chceme, aby sa zobrazilo na mieste, kde sme to definovali v reťazci.

Práca zo súbormi je základ slovníkového útoku. Programu dáme do vstupu slovník s menami a heslami a pri úspešnom zistení účtu vytvorí súbor z menom a heslom, ktorým sa podarilo prihlásiť na FTP. Ale o tom už v ďalšom článku.

Toto je tá najľahšia časť celého programu, ďalej to už bude iba zložitejšie na pochopenie. Celý zdrojový kód FTP Dictionary crackera, ktorý sa posnažím čo najviac a čo najvýstižnejšie okomentovať, uverejním až keď sa zoznámime so všetkými časťami, ktoré potrebujeme poznať.


Všechny díly seriálu

Python - FTP dictionary attack (1)
Python - FTP dictionary attack (2)
Python - FTP dictionary attack (Zdrojový kód)
Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 2.43/14

1  2  3  4  5    
(známkování jako ve škole)