| Autor |
Nachricht |
vazrul
Hält's aus hier
Beiträge: 5 Dabei seit: 03.03.2010
|
Nabend
mich interessiert die möglichkeit den brute force angriff in delpgi testweise zu programmieren(hatten in der schule verschlüsselungsverfahrn, fand das thema interessant)
Hab mich auch schon versucht, denke aber dass ich es extremst kompliziert geschrieben habe und es wahrscheinlich einen viel simpleren algorithmus gibt.
Zunächst was mein Programm macht:-
-Zufälliger 1-2 stelliger schlüssel generiert und in maskedit gespeichert.
-Delphi generiert verschiedene 1-2 stellige Kombinationen und vergleicht diese mit dem text in maskedit
generiert wird mit chr(1-255) also alle kombinationen des ASCII codes
der Quelltext: {diese button.click funktion wird nach dem generieren einens keys ausgeführt um nachzusehn ob er übereinstimmt}
meine frage, kann man das ganze irgendwie vereinfachen? 3 stellige krieg ich schon auf diese weise nicht mehr hin, da die if bzw while verschachtelung über mein können hinausgeht. Was kann ich generell verbessern und gibts eine vorlage dazu?
lg und für jede hilfe dankbar
Zuletzt bearbeitet von vazrul am Mi 03.03.10 23:40, insgesamt 1-mal bearbeitet
|

|
|
platzwart
       
Beiträge: 671 Erhaltene Danke: 2 Dabei seit: 12.12.2005
Win 7, Ubuntu 9.10 Delphi 2007 Pro, C++, Qt
|
Bitte benutz Delphi-Tags und rück den Quelltext anständig ein, so kann man garnix lesen...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|

|
|
BenBE
        

Beiträge: 8056 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
Könntest Du bitte deinen Quelltext in Delphi-Tags einfassen? Dadurch wird das so schön lesbar, wie bei mir
Aber zu deiner Frage: Ja, das geht zu vereinfachen; und wird dabei sogar noch mal um einiges schneller.
Aber fangen wir klein an. Als erstes räumen wir in deinem Code dazu mal kurz auf:
Einfach, nicht? Die beiden Routinen EncryptPW und GetNextPW bauen wir gleich. Erstmal die einfachere von beiden: EncryptPW
Nun der spannende Teil der Geschichte.
Die beiden zusätzlichen Routinen gehören beide zwischen die Zeile PW: String und dem begin.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
vazrul
Hält's aus hier
(Threadstarter)
Beiträge: 5 Dabei seit: 03.03.2010
|
erstmal vielen dank für eure antworten (besonders dir BenBE, hast mir sehr geholfen) !
wie rück ich den text denn in delphi tags ein? tut mir leid für die frage aber würd ich gern wissen, mein text sieht wirklich wie 'dahingeklatscht'aus.
lg und danke nochmals
|

|
|
BenBE
        

Beiträge: 8056 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
Einfach [ delphi] vor und [ /delphi] nach deinem Quelltext-Abschnitt einfügen.
Moderiert von Narses: Pseudo-Tagging geändert.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
vazrul
Hält's aus hier
(Threadstarter)
Beiträge: 5 Dabei seit: 03.03.2010
|
//Gültiges Zeichen innerhalb des Passwortes?
if I <= Length(PW) Then
also gehst von dem brute forcing davon aus, dass das pw indirekt bekannt ist? verstehe die zeile nicht ganz
Hatte es so vor , dass beim ergeinis OnCreate vom Formular ein zufälliges PW mit einer zufälligen schlüssellänge generiert wird, was durch das brute forcing erst rausgefunden werden muss (ebenfalls die länge, welche unbekannt ist)
lässt sich sowas in delphi realisieren? (denke mal maximale schlüssellänge sei 4-5, da das brute forcing sonst zu viel zeit in anspruch nimmt oder? Fragen über fragen, bitte um rat
lg
|

|
|
BenBE
        

Beiträge: 8056 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
Nicht ganz. PW ist das Passwort, was gerade ausprobiert wird. Da dabei jedoch nur auf Zeichen innerhalb des PWs zugegriffen werden darf, stellt diese Abfrage sicher, dass wir mit der Schleife davor beim Eintragen des Übertrages nicht über das Ende hinaus gegangen sind.
Das zu erratende Passwort steht in PW_Check drinnen und wird beim ermitteln des Passwortes lediglich beim Vergleich, ob das richtige Passwort gefunden wurde, angefasst.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
vazrul
Hält's aus hier
(Threadstarter)
Beiträge: 5 Dabei seit: 03.03.2010
|
so, wollte BenBe's vorerst nicht direkt kopieren und habs nun so programmiert:
es tut sogar was es soll
allerdings läuft während dem bruteforcing gar nichts, ich weiß nie ob das programm am decrypten ist
oder längst abgestürzt. Wollte nebenher nen timer einbaun der die benötigte zeit mist bei Button1.click mit
timer1.enabled welcher dann die sekunden zählt.
allerdings kommts soweit gar net und er führt nur das bruteforcing aus.
Was mich ebenfalls stört, nach der showmessage in Button2.click soll form1.close ausgeführt werden, soweit kommts aber nicht da nach der showmessage die .exe abstürzt
weiß jemand rat? (und ja ich weiß dass brute forcing sehr rechnintensiv ist^^)
lg
|

|
|
BenBE
        

Beiträge: 8056 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
Du führst zwar deine Rechenschritte aus, gibst der VCL aber keine Möglichkeit auf Ereignisse von außen zu reagieren. Dadurch sieht es so aus, als ob das Programm hängen würde.
Um dies zu umgehen, musst du in regelmäßigen Abständen Application.ProcessMessages; ausführen. Dann reagiert die Anwendung. Dabei solltest du dann aber beachten, dass du deine Buttons entsprechend disablest, da der Benutzer sonst mehrfach verschachtelt in deine Bruteforce-Routine gelangt.
Bei deiner Lösung mal noch eine Frage: Warum ist bei zweistelligen Passwörtern von 48, bei den anderen aber ab 47?
Ansonsten bei meiner Variante soweit durchgestiegen, oder ausgestiegen? Wenn ja, wo?
P.S.: Mein Nick schreibt sich BenB E 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
vazrul
Hält's aus hier
(Threadstarter)
Beiträge: 5 Dabei seit: 03.03.2010
|
erstmal danke für die antwort  Application.ProcessMessages , wo sollte ich dass deiner meinung nach einbaun? Hab des nur programmiert weil ich es noch selber versuchen wollte, hat nichts damit zu tun dass ich bei deiner Musterlösung nicht durchblicke
lg
|

|
|
BenBE
        

Beiträge: 8056 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
Application.ProcessMessages musst Du an eine Stelle setzen, die regelmäßig aufgerufen wird. Also z.B. als Teil deiner Button2Click-Event-Prozedur vor der Prüfung des Passwortes.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
|
|
|