![]() |
Denkblockade (rekursive funktion)
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:
mit diesen daten bilde ich nun zunächst die kombinationen der länge 2 (wie im alten verfahren auch schon)
string: abcdefghijklmnopqrstuvwxyz
substring: ab
Delphi-Quellcode:
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.
aa ab ac ad ae af...
ba bb bc bd be bf... 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:
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.
aa | aa | aa
ab ac ... ab | aa ab ac ... ac | aa ab ac ... 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 :!: |
Re: Denkblockade (rekursive funktion)
Delphi-Quellcode:
Aufrufen kannste das ganze mitprocedure reku(a:string); begin dowith(a) // Hier kannste auf den String zugreifen und halt was mit machen For i:=0 to count(Zeichen) do // count Zeichen soll mal die Menge der gesamten Zeichen sein reku(a+Zeichen[i]); // Hier wird der nächste Schritt gestartet und dazu dein Char angehängt end; reku(''); [edit] Erst beim zweiten Mal lesen richtig verstanden... hoffe ich [/edit] |
Re: Denkblockade (rekursive funktion)
Wie wärs mit sowas (ungetestet)?
Delphi-Quellcode:
Aufruf:
function CheckPassword(APassword: String; Depth: Integer): Boolean;
var i, j: Byte; begin if Depth <= 0 then exit; for i := #97 to #122 do begin for j := #97 to #122 do begin CheckPassword(APassword + Chr(i) + Chr(j)); //evtl. Result von CheckPassword bearbeiten... end; end; //Hier der Check... Dec(Depth, 2); end;
Delphi-Quellcode:
Nur so eine Idee...
ABoolean := CheckPassword('', 6);
Dust Signs //EDIT: Mist, zu langsam ^^ |
Re: Denkblockade (rekursive funktion)
Ist jetzt nur so ausm Kopf, aber trotzdem:
Wir machen eine rekursive Prozedur, Parameter: :arrow: bisheriges Passwort :arrow: Zeichen für das Pwd :arrow: Wieviele Zeichen sollen noch angehängt werden ? :arrow: TStrigList für die Ergebnisse
Delphi-Quellcode:
procedure BruteForce (const Pass, Zeichen: String; Length: Byte; Ergebnisse: TStringList);
If Length = 0 then Exit; If Length = 1 then for i := 1 to length (Zeichen) do Ergebnisse.Add (Pass + Zeichen[i]); else for i := 1 to length (Zeichen) do BruteForce (Pass + Zeichen[i], Zeichen, Length - 1, Ergebnisse); end; |
Re: Denkblockade (rekursive funktion)
thx euch allen, keiner eurer vorschläge löst das problem ganz ;) aber imerhin hats gereicht, um meine denkblockade aufzuheben :) ich habs jetzt... BIG THX!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz