Hi,
vielleicht kennt ja jemand mein brute force tut (hier in der tutorials sparte). das dort beschriebene verfahren ist zwar schön simpel und auch ganz gut was die geschwindigkeit angeht, nur verbruacht es halt wirklich extrem viel arbeitsspeicher. deswegen bin ich momentan dabei mir ein besseres verfahren auszudenken (das natürlich immernoch distributed brute forcing fähig sein soll
)
das geht dann wie gefolgt:
gegeben sind ein string mit den zeichen, aus denen das passwort gebildetwerden soll, sowie ein substring, der die teilaufgabe des programms darstellt
Delphi-Quellcode:
string: abcdefghijklmnopqrstuvwxyz
substring: ab
mit diesen daten bilde ich nun zunächst die kombinationen der länge 2 (wie im alten verfahren auch schon)
Delphi-Quellcode:
aa ab ac ad ae af...
ba bb bc bd be bf...
diese kombinationen werden dann im
ram behalten. aus ihnen sollen alle anderen passwörter erstellt werden, sodass immer nur diese (wenigen) kombinationen im arbeitsspeicher benötigt werden. das geht auch.
dazu muss man ja für passwörter der länge 4 einfach nur an jeden eintrag dieses buffers jeden anderen eintrag hinhängen. für die der länge 6 (im moment interessieren nur die geraden längen
) muss man für jedes der aus 4 gebildeten nochmal alle aus der liste anhängen.
Delphi-Quellcode:
aa | aa | aa
ab
ac
...
ab | aa
ab
ac
...
ac | aa
ab
ac
...
ich hoffe ihr versteht wie ich das meine. nun aber zu meinem problem: die vorher gebildeten längen sollen ja nicht im speicher behalten werden, d.h. ich muss jedes passwort neu berechnen.
da ich ja also sozusagen für jede länge eine größere anzahl von schleifen benötige, ist mir heute in der englisch stunde so gedämmert, dass sich das wohl mit rekursiven funktionen lösen lassen müsste. nur in mathe, erdkunde, deutsch, französisch, latein, geschichte, chemie und musik ist mir kein bisschen ein lichtlein aufgegangen, was diese funktion machen müsste.
kurz gesagt ich habe zwar ein verfahren, bin aber etwas unfähig das nach pascal zu übersetztn
ich hoffe auf eure hilfe