Ich erstelle eine Wortliste mit Python, die jede Kombination von Zeichen trifft, die ein Monster einer Berechnung nach 94 ist. Bevor Sie fragen, wo ich 94 bekomme, behandelt 94 ASCII-Zeichen 32 bis 127. Verständlicherweise läuft diese Funktion super langsam, ich bin neugierig, ob es eine Möglichkeit gibt, es effizienter zu machen.Kann dies geändert werden, um schneller zu laufen?
Dies ist das Fleisch und die Kartoffeln der mein Code.
def CreateTable(name,ASCIIList,size):
f = open(name + '.txt','w')
combo = itertools.product(ASCIIList, repeat = size)
for x in combo:
passwords = ''.join(x)
f.write(str(passwords) + '\n')
f.close()
Ich verwende diese so, dass ich Listen in einer Brute-Force nutzen machen kann, wo ich oder nicht die Länge der Passwörter kennen das Passwort, welche Zeichen enthält. Mit einer solchen Liste treffe ich jede mögliche Kombination von Wörtern, so dass ich sicher bin, dass ich irgendwann die richtige finde. Nachdem ich bereits früher gesagt habe, dass dies ein langsames Programm ist, wird dieses auch langsam eingelesen und wird nicht meine erste Wahl für eine rohe Gewalt sein, dies mehr oder weniger für eine letzte Anstrengung.
Um Ihnen eine Vorstellung davon zu geben, wie lange dieser Codeabschnitt ausgeführt wird. Ich habe alle Kombinationen der Größe 5 erstellt und lief für 3 Stunden mit etwas mehr als 50GB.
Wie lange dauert es? Wie viel schneller brauchst du es? – Blorgbeard
Beachten Sie, dass Sie hier eine ~ 450MB-Datei auf die Festplatte schreiben.Wenn Sie ein weiteres Zeichen hinzufügen, wird es auf ~ 50 ** GB ** gesetzt. Das ist das Problem mit Brute-Force. – Blorgbeard
Um Ihnen eine Vorstellung davon zu geben, wie lange dieses Stück Code läuft. Ich habe alle Kombinationen der Größe 5 erstellt und lief für 3 Stunden mit etwas mehr als 50GB. Ich weiß, dass rohe Gewalt ein langsamer und schmerzhafter Prozess ist, aber manchmal ist es der einzige Weg. Ich brauche nur einen Weg, um 'Combo' in kleineren Brocken zu handhaben, für die @pookie mir die Bodenarbeit gab. – rocky