Wörter zusammenbaun
Jo, der benutzt kein Wörterbuch, der baut auch seine Wörter so...
Allerdings war das Prog auch ein MD5 Hash Cracker ^^
Das heist das Programm (man gibt ein MD5 Hash an) durchgeht jeden Buchstaben für Buchstaben bis der Hash übereinstimmt und gibt den String zurück...
Und das macht er ziemlich schnell, keine Ahnung wie das Prog das macht
Aba egal, ich will ja kein MD5 Hash Cracker baun sondern sowas wien Wörterbuch, also muss ich wohl die Geschwindichkeit hinnehmen ^^
Allerdings war das Prog auch ein MD5 Hash Cracker ^^
Das heist das Programm (man gibt ein MD5 Hash an) durchgeht jeden Buchstaben für Buchstaben bis der Hash übereinstimmt und gibt den String zurück...
Und das macht er ziemlich schnell, keine Ahnung wie das Prog das macht
Aba egal, ich will ja kein MD5 Hash Cracker baun sondern sowas wien Wörterbuch, also muss ich wohl die Geschwindichkeit hinnehmen ^^

Hmm, das hat mich jetzt interessiert.
Bei mir braucht folgendes Programm genau 313ms bis es "alex" hat!
Bei mir braucht folgendes Programm genau 313ms bis es "alex" hat!
Code: Alles auswählen
DisableDebugger
string.s
size=4
Dim z.l(size)
;ASCII 97 bis 122 ist "a" bis "z"
For i = 1 To size : z(i)=97 : Next ;Alle mit "a" initialisieren
startzeit=ElapsedMilliseconds()
For i = 1 To Int(Pow(26, size));So Viele Kombinat. insges. möglich
For a = 1 To size
If z(a) = 123 : z(a) = 97 : z(a+1)+1 : EndIf
Next
string="": For b = 1 To size : string+Chr(z(b)): Next
If string = "alex"
stopzeit=ElapsedMilliseconds()
MessageRequester("",string+Chr(13)+"Zeit: "+Str(stopzeit-startzeit)+"ms")
End
EndIf
z(1)+1
Next
Zuletzt geändert von Ja! am 04.06.2006 20:03, insgesamt 2-mal geändert.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
also, ich hab mal was ausprobiert:
also, der braucht für 5 zeichen 33.5 sekunden, weil er ne datei schreibt und keinen debugger nimmt.
für 4 zeichen braucht er 1.2 sec, also weniger als die 5.5 für "alex", wie auch immer du das meintest...
funktionieren tut das folgendermaßen:
die buchstaben werden wie stellen einer zahl zur basis 26 behandelt
wenn die niedrigste stelle übers z geht, wird sie wieder auf a gesetzt und die nächste ein höher, usw.
das könnte man in ASM noch dahingehend optimieren, dass man direkt im stringspeicher zählt.
(das was ich hier jetzt im array mache)
aber hunderttausende von permutationen brauchen nun mal ihre zeit.
also, damit alle 13stelligen wörten hinschreiben, dann koch dir ma nen kaffe....
Code: Alles auswählen
Dim a(50)
For n=0 To 50 : a(n) = 97 : Next
in$ = InputRequester("Worder", "Länge eingeben", "3")
Len = Val(in$)
def$ = Space(Len)
Len -1
CreateFile(0, "output.txt")
timer1 = ElapsedMilliseconds()
Repeat
w$ = def$
For z=0 To Len : PokeB(@w$+z, a(z)):Next
WriteStringN(w$)
dig = 0
go = 1
Repeat
a(dig)+1
If a(dig) > 122
a(dig) = 97
dig +1
Else
go = 0
EndIf
Until go = 0
Until dig > Len
timer = ElapsedMilliseconds() -timer1
MessageRequester("Worder", "Laufzeit:"+Chr(13)+Chr(10)+"Zeichen:"+Str(Len+1)+Chr(13)+Chr(10)+"Dauer:"+Str(timer) )
CloseFile(0)
für 4 zeichen braucht er 1.2 sec, also weniger als die 5.5 für "alex", wie auch immer du das meintest...
funktionieren tut das folgendermaßen:
die buchstaben werden wie stellen einer zahl zur basis 26 behandelt
wenn die niedrigste stelle übers z geht, wird sie wieder auf a gesetzt und die nächste ein höher, usw.
das könnte man in ASM noch dahingehend optimieren, dass man direkt im stringspeicher zählt.
(das was ich hier jetzt im array mache)
aber hunderttausende von permutationen brauchen nun mal ihre zeit.
also, damit alle 13stelligen wörten hinschreiben, dann koch dir ma nen kaffe....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Jetzt ist es noch etwas schneller (und schöner),
203-219ms bis "alex" gefunden.
(Geht bestimmt noch schneller...)
203-219ms bis "alex" gefunden.
(Geht bestimmt noch schneller...)
Code: Alles auswählen
DisableDebugger
string.s
size = 4
kombi = Int(Pow(26, size))
Dim z.l(size)
For i = 1 To size : z(i)=97 : Next
startzeit=ElapsedMilliseconds()
For i = 1 To kombi
string=""
For a = 1 To size
If z(a) = 123 : z(a) = 97 : z(a+1)+1 : EndIf
string+Chr(z(a))
Next
z(1)+1
If string = "alex"
stopzeit=ElapsedMilliseconds()
MessageRequester("",string+Chr(13)+"Zeit: "+Str(stopzeit-startzeit)+"ms")
End
EndIf
Next
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Jo, 16ms und flexibler:Ja! hat geschrieben:Jetzt ist es noch etwas schneller (und schöner),
203-219ms bis "alex" gefunden.
(Geht bestimmt noch schneller...)
Code: Alles auswählen
#Size = 4
#SearchFor = "alex"
#StartSearch = 'a'
#EndSearch = 'z'
Dim L.b(#Size)
For i = 0 To #Size
L(i) = #StartSearch
Next i
S = #Size - 1
Startzeit = ElapsedMilliseconds()
Found = #True
Repeat
If PeekS(@L(0), #Size) = #SearchFor
Break
EndIf
For j = 0 To S
L(j) + 1
If L(j) <> #EndSearch
Break
Else
L(j) = #StartSearch
If j = S
Found = #False
Break 2
EndIf
EndIf
Next j
ForEver
Stopzeit = ElapsedMilliseconds()
If Found
MessageRequester("", #SearchFor + #LF$ + "Zeit: " + Str(stopzeit - startzeit) + "ms")
Else
MessageRequester("Error", #SearchFor + " not found!")
EndIf
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Lol langsam blick ich nimmer durch, sagt bescheid wenn ihr bei asemmbler angekommen seit ^^
Achja, bei mir dauerts 31ms ^^
ihr müsst aba bedneken das das crack tool auch noch den md5 gesucht hat, das wird wohl etwas bremsen, deswegen kann ich mir nich vorstellen, das dies die shcnellste lösung war ^^
Achja, bei mir dauerts 31ms ^^
ihr müsst aba bedneken das das crack tool auch noch den md5 gesucht hat, das wird wohl etwas bremsen, deswegen kann ich mir nich vorstellen, das dies die shcnellste lösung war ^^
