![]() |
Brute force Beschleunigen
:dance: also es ging darum ein passwort recovery (premutation von silben und buchstaben) algorythmus zu schreiben lalala.
hab mir gedanken gemacht und hab was geschrieben bloß bekloppt lahm :dance: wen jemand ne idee hat wie mann die ganze geschichte effizienter machen kann bidde melden
Delphi-Quellcode:
:freak: implementation /////////////////////////// Premutation; var wert :array of Integer; var List : Tstringlist; var i,i2,i3,Sum :integer;{$R *.dfm} var b : Bool; label ub ; var bas :integer; var s : string; /////////////// ///// List wird mit den buchstabe ober silben geladen procedure TForm1.Button1Click(Sender: TObject); begin gauge1.MaxValue := trunc(Power(list.count,strtofloat(edit1.text)))+1; setlength(wert,strtoint(edit1.Text)); i := 0; bas := list.Count; //// strtoint(edit2.Text); ///// zahl mit basis bas auf null setzen while i <= length(wert)-1 do begin wert[i] := 0; i := i+1; end; i2 := 0; i :=0; b := true; s := ''; while b do begin wert[0] := wert[0]+1; while i <= length(wert)-2 do //-2 ---> bei der lezten zahl muss der überschlag nichtmehr beachtet werden begin if wert[i] = bas then /// überschlag kommt moon happening; begin wert[i] := 0; //// zurüchseztung Wert[i+1]:= wert[i+1]+1; //// überschlag end; I := i+1; end; ////////////endstation wenn dies erreicht istist mn beim end angekommen i3 := 0; sum := 0; while i3 <= length(wert)-1 do begin sum := sum +wert[i3]+1; i3 := i3+1 ; end; if i3*bas = sum then begin b := false; end; ////////////////////// ///////////////visual erstellung des strings while i2 <= length(wert)-1 do begin s := s + list[wert[i2]]; i2 := i2+1; end; Gauge1.Progress := Gauge1.Progress +1; Application.ProcessMessages; label1.Caption:= s; listbox1.Items.Add(s) ; ////// ihrgendeiner listbox hinzufügen i2:=0; i:=0; s := ''; end; end; thX forestX |
Re: Brute force Beschleunigen
|
Re: Brute force Beschleunigen
hallo, es ist nicht böse gemeint aber wenn du den Quelltext ordentich einrückst schauen sich diesen bedeutend mehr leute an und du bekommst auch Hilfe. Ich wollte mir ihn grad anschauen und hab nach den ersten Zeilen aufgehört weil durch die fehlende Einrückung jegliche Übersicht fehlt.
|
Re: Brute force Beschleunigen
Vielleicht suchst Du auch mal nach 'Permutation' hier in der DP... Ich meine, mich erinnern zu können, hier etwas darüber gelesen zu haben. Aber das Einrücken geht vor. Ganz klar. :zwinker:
|
Re: Brute force Beschleunigen
was mir bisher aufgefallen ist. Du rufst mehrfach Length auf anstelle dir das Ergebnis auf eine Variable zu speichern. Das ist ein geringer Geschwindigkeitsverlust. Das Hauptproblem sind aber Dinge wie:
Delphi-Quellcode:
Damit wird ständig im Speicher rum geschaufelt. Denn für den String wird speicher angefordert. Wenn du jetzt etwas hinzufügst muss wieder speicher angefordert werden (damit was neues dazu passt), der alte Inhalt muss in den neuen Bereich kopiert werden, das neue wird angehangen und der vorherige speicher wird frei gegeben.
stringvariable = stringvariable + irgendwas;
|
Re: Brute force Beschleunigen
Hab halt einen eigenwilligen Stiel. Ganz klar. :dance:
auf jeden die Geschichte mit dem stack habe ich noch garnicht bedacht -> vielen dank ich - binn immer für Anregungen offen :dance: |
Re: Brute force Beschleunigen
du könntest die stingvariable auf 100 begrenzen. dann wird der speicher nicht immer wieder erweitert. 100 zeichen sollten für ein password genügen. Falls es mehr sein solln wirst du mit brute-force jahrhunderte dran sitzen.
gruß snow |
Re: Brute force Beschleunigen
Zitat:
|
Re: Brute force Beschleunigen
gehört nicht zu dem thema ob ich etwas ein Rücke oder nicht' nimand wieder gezwungen mein geschreibsel durch zu arbeiten' soweit bidde wieder zu eigentlichen thema zurück * wenn jemand will kann ich eine diskusion aufmachen ob ich es schön geschrieben habe oder ob ich noch ein paar blumen und baüme hätte hinzu malen sollen Thx(nur für ernsthafte Beiträge ) mfg Forest :dance: X
|
Re: Brute force Beschleunigen
[ot]Ich mag Satzzeichen :roll:[/ot]
Ich kann auch die schon erwähnte TBruteforce empfehlen. Ist ziemlich schnell und trivial zu bedienen. Ansonsten habe ich noch das in meiner Codeschnipsel.pas gefunden. Leider habe ich anscheinend bereits Kommentare zum Autor gelöscht, kann diesen also nicht mehr nennen, bitte verzeiht mir :(
Delphi-Quellcode:
Wird so aufgerufen:
function bruteforce(astring,substr:string;startlen,endlen:integer):boolean;
var //count variables i,n,x:integer; //current password npw:string; label //used for looping step1; begin //clear all stringlists hlplst.clear; cluster.clear; results.clear; //fill the helplist with the charrange for x:=1 to length(substr) do hlplst.add(substr[x]); //begin the loop step1: //start combining the letters in the charrange for i:=0 to hlplst.count-1 do for n:=1 to length(astring) do begin //combine one letter in the helplists with another npw:=hlplst.strings[i]+astring[i]; //add it to the cluster cluster.add(npw); //if its longer then the startlength, then add it do the results if length(npw)>=startlen then results.add(npw); end; //clear the helplist hlplst.clear; //and fill it with the cluster hlplst.addstrings(cluster); //clear the cluster cluster.clear; //and repeat those steps if not all possible combinations have been added if length(npw)+1<=endlen then goto step1; //clear the helplist hlplst.clear; //(just for debugging) result:=true; end;
Delphi-Quellcode:
bruteforce('abcd','abcd',2,6)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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