2016-07-21 2 views
0

Also ich dieses Programm hat eine Zip-Datei in Python zu Brute-Force:Bruteforcing Zip-Datei gibt seltsame Ergebnisse

def Main(): 
    parser = argparse.ArgumentParser() 
    parser.add_argument("zfile", help = "The encrypted zip file you wish to crack") 
    parser.add_argument("length", help="Define the max length of password combinations you want to bruteforce") 
    args = parser.parse_args() 

    zFile = zipfile.ZipFile(args.zfile) 
    keywords = [''.join(i) for i in itertools.product(ascii_lowercase, repeat = int(args.length))] 

    for i in keywords: 
     print "[*] Testing password: "+i 
     try: 
      zFile.extractall(pwd = str(i)) 
      print "[+] Password Found: "+i 
      break 
     except: 
      pass  

if __name__ == '__main__': 
    Main() 

Aber es ist ungewöhnlich verhalten .... ich ein Archiv haben, in dem das Passwort „Hund“, und wenn ich das Programm starte, findet es eine ganze Reihe von Passwörtern, die angeblich "funktionieren", aber nicht wirklich. Wenn ich diese Kennwörter manuell in die Zip-Datei eintippe, wird eine beschädigte Datei extrahiert. Das Programm sagte Passwörter wie "aqw" würde funktionieren, und es gab einige von ihnen. Der seltsamste Teil war, dass das Programm nicht von der for-Schleife abbrach, nachdem es sagte, dass eines dieser nicht funktionierenden Passwörter funktionieren würde.

Ich habe keine Ahnung was los ist!

+0

Ich habe zwei Fragen zu diesem Satz: "Wenn ich manuell solche Passwörter in die ZIP-Datei eingibt, extrahiert es eine beschädigte Datei." (1) Was meinst du damit, indem du ein Passwort in eine Zip-Datei eingibst? Ich würde denken, dass ein Passwort in ein Programm statt in eine Zip-Datei getippt wird; Das Programm extrahiert dann die Daten aus der Datei. Welches Programm verwendest du? (2) Was ist das "es", das eine beschädigte Datei extrahiert? Ihr Programm, wie aufgeführt, druckt nichts, wenn ein Test-Passwort fehlschlägt. Bist du sicher, dass das jemals passiert? –

+0

Ok, lassen Sie mich das alles anders formulieren. Ich habe ein Archiv und wenn ich versuche, es mit Stuffit Expander zu dekomprimieren, werde ich aufgefordert, ein Passwort einzugeben. Ich weiß, dass das Passwort "Hund" ist. Allerdings, wenn ich mein Skript ausführe, gibt es mehrere andere Passwörter aus, wie "aqw" oder "how" (zB das Programm wird "[+] Password Found: how" drucken) und sagt, dass diese funktionieren werden, wenn ich es versuche Erweitern Sie die Zip-Datei. Wenn ich diese Kennwörter in Stuffit Expander eintippe, werden sie tatsächlich die ZIP-Datei extrahieren, aber die extrahierte Datei wird beschädigt. Sorry, ich habe diesen massiven Tippfehler gemacht –

+0

danke, macht jetzt Sinn. Ich bin nicht sicher, dass Sie ein Python-Problem haben, da Stuffit Expander und Python konsistent sind: keiner von ihnen gibt Ihnen ein ungültiges Passwort-Ergebnis, wenn sie es sollen. Ich schaute auf den zipfile.py Code (Standard-Python-Bibliothek) und es verwendet etwas namens _ZipDecrypter, das in reinem Python geschrieben ist. Wenn es fehlschlägt, erhalten Sie eine RuntimeException ("Schlechtes Passwort für Datei"), aber es ist nicht sehr anspruchsvoll. Vielleicht hilft dir ein Blick auf die Bibliotheksquelle. Seltsames Problem. –

Antwort

1

Das passiert, weil das ZIP-Dateiformat eine sehr grobe Methode verwendet, um festzustellen, ob das eingegebene Passwort tatsächlich korrekt oder falsch ist.

Grundsätzlich ist im Archivverzeichnis ein einzelnes Byte gespeichert, das angibt, dass das Passwort "korrekt" ist. Das Problem ist, dass wenn Sie Brute-Force sind, werden Sie sehr häufig falsche Positive auslösen, wenn das Byte übereinstimmt (wahrscheinlich einmal alle 255 Versuche oder so), aber das Passwort ist nicht wirklich korrekt.

Wenn Sie eine solche potenzielle Übereinstimmung finden, besteht die Idee darin, das Archiv mit diesem Kennwort vollständig zu entschlüsseln. Sobald es vollständig entschlüsselt ist, sollte das Programm die CRC der entschlüsselten Daten mit der gespeicherten CRC vergleichen und prüfen, ob das Passwort tatsächlich korrekt war.

Nur so können Sie sicher sein, dass eine Übereinstimmung gefunden wurde.

Verwandte Themen