Hey ich hab hier den Python code von einem Buch aus dem ich Python lernen möchte (im gebiet Penetrationstesting), das Buch an sich ist gut aber erklärt nichts über den Code und bevor ich in die nächsten Kapitel vordringe möchte ich das Beherschen.
Ich habe über all ein grünes ? geschrieben wo ich etwas nicht weiß.
#!/usr/bin/python ?
# -*- coding: utf-8 -*- ? Was bringen die beiden Zeilen sind ja auskommentiert
import crypt
def testPass(cryptPass):
salt = cryptPass[0:2] ? Wieso dieses [0:2]
dictFile = open('dictionary.txt', 'r')
for word in dictFile.readlines():
word = word.strip('\n')
cryptWord = crypt.crypt(word, salt)
if cryptWord == cryptPass:
print ("[+] Found Password: " + word + "\n")
return ? Warum return?
print ('[-] Password Not Found.\n')
return ? Und warum hier auch
def main():
passFile = open('passwords.txt')
for line in passFile.readlines():
if ':' in line:
user = line.split(':')[0] ? Wieso das [0]
cryptPass = line.split(':')[1].strip(' ') ? Wieso das [1]
print ('[*] Cracking Password For: ' + user)
testPass(cryptPass)
if __name__ == '__main__': ? Was bringts?
main() ? Was bringts?
Falls jemand länger Zeit hat kann er/sie mir das gerne Zeile für Zeile erklären :3
Herzlichen Dank das ihr euch Zeit dafür nehmt
LG Sniffer
Kann mir jemand diesen Code erklären?
@Sniffer: die meisten Deiner Fragen lassen sich durch das Lesen des offiziellen Tutorials beantworten. Die erste Zeile ist die Shebang-Zeile, die angibt, mit welchem Programm das Skript auszuführen ist. Die zweite Zeile gibt das Encoding der Datei an. Da beides nicht Python-Syntax ist, stehen sie in Kommentaren. Die Namensschreibweise hält sich nicht an die Konvention, testPass testet keinen Pass sondern versucht ein Passwort anhand von Wörtern eines Wörterbuchs zu cracken. cryptPass sollte auch nicht so kryptisch abgekürzt werden, sondern besser encrypted_password heißen. dictFile ist keine Datei, sondern ein Dateiobjekt. Das readlines ist unsinnig, da über File-Objekte direkt iteriert werden kann. Die Datei wird übrigens nicht mehr geschlossen. Dass diese "Funktion" nichts zurückliefert, sondern nur Text ausgibt ist auch ein Designfehler, da das so nicht sinnvoll wiederzuverwenden ist. In Python2 ist print keine Funktion, die Klammern also bestenfalls irreführend. Statt Strings mit + zusammenzustückeln sollte man format benutzen. Das erste return will die Funktion beenden, sobald ein Wort gefunden wurde, das zweite return ist überflüssig. passFile ist wieder ein komischer Name, die Datei wird wieder nicht wieder geschlossen, readlines ist überflüsig, line.split wird zweimal aufgerufen. Die letzten beiden Zeilen sorgen dafür, dass main nur aufgerufen wird, wenn das Programm als Skript gestartet wird.
Die Codebox funktioniert nicht, was Beispielcode ziellos macht oder tritt das Problem aktuell nur bei mir auf, dass ich keinen formatierten Quelltext sehe!?
Ergänzend zu dem Buch ist m. E. auch dieses ergänzende Tutorial sehr wichtig. Bevor Du in deinem Buch weiterliest, solltest du das von mir verlinkte Tutorial lesen, verstehen und verinnerlichen. Danach weißt du, wie du mit dem Buch weiter verfährst. Es gilt für dein Thema als maßgeblich
Ergänzend zu dem Buch ist m. E. auch dieses ergänzende Tutorial sehr wichtig. Bevor Du in deinem Buch weiterliest, solltest du das von mir verlinkte Tutorial lesen, verstehen und verinnerlichen. Danach weißt du, wie du mit dem Buch weiter verfährst. Es gilt für dein Thema als maßgeblich
Wieso die Verlinkung zum Strafgesetzbuch?pixewakb hat geschrieben:Die Codebox funktioniert nicht, was Beispielcode ziellos macht oder tritt das Problem aktuell nur bei mir auf, dass ich keinen formatierten Quelltext sehe!?
Ergänzend zu dem Buch ist m. E. auch dieses ergänzende Tutorial sehr wichtig. Bevor Du in deinem Buch weiterliest, solltest du das von mir verlinkte Tutorial lesen, verstehen und verinnerlichen. Danach weißt du, wie du mit dem Buch weiter verfährst. Es gilt für dein Thema als maßgeblich
Mhh, da macht also sogar der Buch autor der Experte für Informationssicherheit beim US-Verteidigungsministerium ist FehlerSirius3 hat geschrieben:@Sniffer: die meisten Deiner Fragen lassen sich durch das Lesen des offiziellen Tutorials beantworten. Die erste Zeile ist die Shebang-Zeile, die angibt, mit welchem Programm das Skript auszuführen ist. Die zweite Zeile gibt das Encoding der Datei an. Da beides nicht Python-Syntax ist, stehen sie in Kommentaren. Die Namensschreibweise hält sich nicht an die Konvention, testPass testet keinen Pass sondern versucht ein Passwort anhand von Wörtern eines Wörterbuchs zu cracken. cryptPass sollte auch nicht so kryptisch abgekürzt werden, sondern besser encrypted_password heißen. dictFile ist keine Datei, sondern ein Dateiobjekt. Das readlines ist unsinnig, da über File-Objekte direkt iteriert werden kann. Die Datei wird übrigens nicht mehr geschlossen. Dass diese "Funktion" nichts zurückliefert, sondern nur Text ausgibt ist auch ein Designfehler, da das so nicht sinnvoll wiederzuverwenden ist. In Python2 ist print keine Funktion, die Klammern also bestenfalls irreführend. Statt Strings mit + zusammenzustückeln sollte man format benutzen. Das erste return will die Funktion beenden, sobald ein Wort gefunden wurde, das zweite return ist überflüssig. passFile ist wieder ein komischer Name, die Datei wird wieder nicht wieder geschlossen, readlines ist überflüsig, line.split wird zweimal aufgerufen. Die letzten beiden Zeilen sorgen dafür, dass main nur aufgerufen wird, wenn das Programm als Skript gestartet wird.
Kennst du ein Buch das mir Python beibringt halt im IT-Security Genre?
@Sniffer: Das sind zwei verschiedene Themenbereiche die unabhängig voneinander sind. Python kannst Du auch, und wahrscheinlich besser, mit einem allgemeinen Buch oder Tutorial lernen, was eben *Python* als Thema hat. Und IT-Sicherheit ist ein *sehr* weites Feld in dem man noch wesentlich mehr als Python oder *eine* andere Programmiersprache können muss.
@Sniffer: Weil das für das, was du machst relevant ist. Wenn du Software schreibst, um damit Passwörter zu knacken, könnte das IMHO - ich bin kein Jurist - schnell grenzwertig werden. In den USA ist viele Literatur zugänglich, die es so in Deutschland - wahrscheinlich auf Grund der Verlinkung - nicht gibt.
- miracle173
- User
- Beiträge: 127
- Registriert: Samstag 6. Februar 2016, 00:28
Nein Codebox funktioniert bei mir auch nicht,pixewakb hat geschrieben:Die Codebox funktioniert nicht, was Beispielcode ziellos macht oder tritt das Problem aktuell nur bei mir auf, dass ich keinen formatierten Quelltext sehe!?
...
Es funktioniert nur
Code: Alles auswählen
[code]...
z.B.
Code: Alles auswählen
# gut
if (i<j):
print("alles wird gut")
Code: Alles auswählen
[code=php]...
was zwar nicht ganz richtig ist, aber vermutlich besser als die einfarbige Lösung
Code: Alles auswählen
# besser
if (i<j):
print("alles wird besser")
[Codebox=python file=Unbenannt.py]
# schlecht
if (i<j):
print("alles wird schlecht")
[/Codebox]
mfg miracle173
https://github.com/python-forum-de/Jump-N-Run-pydesw
https://github.com/python-forum-de/Jump-N-Run-pydesw