Ganz simple "Bruteforce"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
M4rcde
User
Beiträge: 16
Registriert: Sonntag 21. September 2014, 19:36

Hallo Profis,

für ein Projekt indem ich alle Möglichkeiten von Wörtern und Zeichen brauche, brauche ich ein Bruteforce. Da ich damit nicht Passwörter mit extremen Algos odersoetwas knacken möchte und mein Wissen in Python über Bruteforce begrenzt ist, wollte ich mal fragen wie ich folgendes machen kann:
ich habe praktisch eine Freigabe für Buchstaben und Zeichen (A-Z, a-z, 0-9, Sonderzeichen) welche strukturiert (nix da random) durchkombiniert werden sollen. Nach jeder Kombination soll das Wort von einer bereits geschriebenen Funktion verarbeitet werden.

Ich habe nun schon das abstrakteste im Internet gefunden aber nichts simples. Da ich dieses Abstrakte auch nicht wirklich verstehe, kann ich es auch kaum einsetzen. Außerdem möchte ich eh selbst lieber meine eigene Software schreiben :)

Das ganze soll mit einer Stelle pro "Wort" anfangen und theoretisch bis ins unendliche an Stellen weitermachen.

Wo fang ich da am Besten an?

Marc
BlackJack

@M4rcde: Ich würde sagen Du fängst am besten mit `itertools.product()` an.
M4rcde
User
Beiträge: 16
Registriert: Sonntag 21. September 2014, 19:36

BlackJack hat geschrieben:@M4rcde: Ich würde sagen Du fängst am besten mit `itertools.product()` an.
WOW! Danke! itertools war das perfekte Stichwort! Danke
M4rcde
User
Beiträge: 16
Registriert: Sonntag 21. September 2014, 19:36

Aaah ich brauch doch nochmal hilfe! jetzt wirds aber komplizierter :D

Code: Alles auswählen

for product in (itertools.product(characters, repeat=i) for i in itertools.count(0)):
    for each_tuple in product:
        #print(each_tuple)
        pw = ''.join(str(i) for i in each_tuple)
Das ist mein aktueller Code. Funktioniert auch einwandfrei! Nur was mach ich wenn ich nicht jedesmal wieder bei A anfangen möchte sondern schon bei "dashfSdsfj"?
Also das Wort zwischenspeichern und wieder abrufen bekomm ich hin, aber wie sage ich das praktisch diesem "intertools"? geht das überhaupt?


Liebe Grüße Marc

PS: Moderatoren, ich habe meine alte Antwort nicht editiert, dass nocheinmal alle mitbekommen, dass es doch einen weiteren Wechsel des Themas gegeben hat.
BlackJack

@M4rcde: An den inneren Zustand von so einem `product()`-Iterator kommt man leider nicht heran. Da müsste man sich das selber programmieren. Ist aber auch nicht besonders schwer.
Antworten