Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Wenn Alphabet zuende, dann von vorne anfangen
Xeron - Do 28.01.10 17:44
Titel: Wenn Alphabet zuende, dann von vorne anfangen
Hi, ich will ein Passwort Generator basteln. Dieses Passwort soll nur aus Buchstaben bestehen.
Wie kann ich nun erreichen, wenn das Programm A..Z erstellt hat, das es mit AA weiter macht?
Also A..Z, weiter mit AA..ZZ, AAA..ZZZ usw.?
Danke
aksdb - Do 28.01.10 17:51
Wäre für einen Passwortgenerator nicht Randomize und Random sinnvoll? Eine Liste mit allen Kombinationsmöglichkeiten scheint mir nicht gerade sinnvoll zu sein (abgesehen davon, dass die ziemlich groß wird ;-))
Xeron - Do 28.01.10 17:56
Ja, aber Random schafft ja nur Zahlen oder seh ich das Falsch?
ALF - Do 28.01.10 18:17
Festlegen in welchen zahlenbereich, also 65 - 92, sind glaube ich alle GrossBuchstaben.
Dann Zufall generieren und Zahl mit chr(zufallszahl) in Buchstaben wandeln!
Währe die einfachst Möglichkeit
Gruss Alf
Xeron - Do 28.01.10 18:27
Nein nein, das hat schon alles seine richtigkeit.
ich habe es jetzt so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| var Form1: TForm1; s: Char = 'a';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin OpenDialog1.Execute; Edit1.Text := OpenDialog1.FileName; end;
procedure TForm1.Button2Click(Sender: TObject); var i: Integer; begin for i := 1 to 26 do begin s := Chr(Ord(s)+1); ListBox1.Items.Add(s); ProgressBar1.Position := i; if i = 26 then begin ListBox1.Items.Add(s) end end; ProgressBar1.Position := 100; end;
end. |
und jetzt, wenn ich bei z angekommen bin, soll automatisch von vorne begonnen werden, und das Zeichen dan das Zeichen an die ersten 26 Buchstaben gehangen werden.
jaenicke - Do 28.01.10 18:29
Du kannst mit Modulo arbeiten. Dann kannst du immer weiterzählen und mit modulo 26 landest du wieder zwischen 0 und 25. Diesen Rest der Division kannst du dann zum Zeichencode vom a addieren um einen Zeichencode zu haben.
Xeron - Do 28.01.10 18:34
hmm, versteh ich grade nicht so. modulo = mod oder
kannste mal ein ganz kurzes Beispiel zeigen? Danke ;)
jaenicke - Do 28.01.10 18:38
Delphi-Quelltext
1: 2:
| for i := 0 to 100 do ShowMessage(Chr(Ord('a') + i mod 26)); |
Xeron - Do 28.01.10 18:41
dann wird aber immer wieder von vorne gezählt. ich will aber das das Zeichen an das andere Zeichen drangehängt wird.
Also so:
a
b
c
..
x
y
z
aa
ab
ac
..
az
aaa
..
Xentar - Do 28.01.10 18:44
Spätestens, wenn du auch Sonderzeichen haben willst, könnte das mit mod aber problematisch werden.
Hab mir auch mal nen Passwortgenerator gebaut. Hab das da so gelöst, dass ich einen String hatte, wo alle verwendbaren Zeichen drinstehen s := 'asDFgH'; , und dann mit random(length(s)) ein beliebiges Zeichen daraus ausgewählt habe.
ALF - Do 28.01.10 18:51
Xeron | Zitat: |
ich will aber das das Zeichen an das andere Zeichen drangehängt wird.
|
und wann willst Du aufhören? Ich sehe da sonst keine Ende!!!!
Gruss Alf
Xeron - Do 28.01.10 19:04
naja, so nach 10-12 Zeichen
also z.B.
aghtfifnhdg
elundril - Do 28.01.10 19:05
ALF hat folgendes geschrieben : |
Xeron | Zitat: | ich will aber das das Zeichen an das andere Zeichen drangehängt wird.
|
und wann willst Du aufhören? Ich sehe da sonst keine Ende!!!!
Gruss Alf |
kann man ja in einer Schleife festlegen, oder. ;)
ALF - Do 28.01.10 19:12
Aber so wie er es machen will hatt es nichts mit einen PWgenerator zu tuen!?
oder seh ich das Falsch :shock:
Gruss Alf
Xeron - Do 28.01.10 19:15
Ich hätte eine neue Idee.
Ginge es mit einer Goto Anweisung?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button2Click(Sender: TObject); var i: Integer; Label Sprung; begin Sprung: for i := 1 to 26 do begin s := Chr(Ord(s)+1); ListBox1.Items.Add(s); ProgressBar1.Position := i; if i = 26 then begin Goto Sprung; ListBox1.Items.Add(s) end end; ProgressBar1.Position := 100; end; |
oder irgendwie so
elundril - Do 28.01.10 19:21
du weißt das du damit eine endlosschleife erzeugen würdest?
lg elundril
Xeron - Do 28.01.10 19:22
ja, auch grade gemerkt.
Naja, gibt irgendeinen Befehl um 2 Char Typen zusammen zu kopieren wie
etwa s := s + s;
Xentar - Do 28.01.10 19:23
Xeron hat folgendes geschrieben : |
ja, auch grade gemerkt.
Naja, gibt irgendeinen Befehl um 2 Char Typen zusammen zu kopieren wie
etwa s := s + s; |
Probier diese eine Zeile mal bitte aus...
Aber das Ergebnis passt nicht mehr in einen Char, da es ja zwei Zeichen sind. Also musst du nen String nehmen.
Xeron - Do 28.01.10 19:43
ok, habs jetzt so halbwegs.
Wie kann ich jetzt aber einen Char in einen String umwandeln?
c := String(s);
geht ja irgendwie nicht
und einfach c := s auch nicht
Xentar - Do 28.01.10 19:46
Aus der Benennung deiner Variablen schließe ich, dass du links und rechts vom Gleichheitszeichen vertauschst..
Und noch was: Bitte gewöhn dir an, statt "geht nicht" direkt die Fehlermeldung mitzuposten.
Bergmann89 - Do 28.01.10 19:53
Hey,
also ich bin der Meinung dass das am bessten durch ne Rekursion zu lösen geht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| PROZEDURE GetPasswords(Start: String; Depth, MaxDepth: Integer) zähle alle buchstaben durch (0-25) füge den start-String + den aktuellen Buchstaben zur Liste hinzu wenn die Tiefe (Depth) nicht die maximale Tiefe (MaxDepth) ist, dann... Rufe dich selbst mit folgenden Parametern auf: Aktuelles Passwort(Start+Buchstabe), Tiefe+1, Maximale Tiefe END-PROZEDURE GetPasswords |
So kommt man mit GetPasswords('', 0, 2) auf alle Buchstaben von 'A' bis 'ZZZ'
€: Für mich sieht das auch ncih wirklich nach nem PW-Generator aus. Das sieht er wie n BruteForce aus :roll:
MfG Bergmann
Xentar - Do 28.01.10 19:59
Nur mal zum Verständnis:
Was genau möchtest du nun eigentlich?
a) Ein Passwort richtig zufällig generieren lassen
b) Von A bis ZZZZ alle Kombinationen Brute forcen
?
Wenn es a werden soll, ist der Ansatz vollkommen murks.
Bergmann89 - Do 28.01.10 20:02
Xeron hat folgendes geschrieben : |
Wie kann ich nun erreichen, wenn das Programm A..Z erstellt hat, das es mit AA weiter macht?
Also A..Z, weiter mit AA..ZZ, AAA..ZZZ usw.? |
Klingt für mich nach BruteForce...
Xentar - Do 28.01.10 20:03
Bergmann89 hat folgendes geschrieben : |
Xeron hat folgendes geschrieben : | Wie kann ich nun erreichen, wenn das Programm A..Z erstellt hat, das es mit AA weiter macht?
Also A..Z, weiter mit AA..ZZ, AAA..ZZZ usw.? |
Klingt für mich nach BruteForce... |
Ja, für mich auch.
Aber im ersten Post ist auch die Rede von einem Passwortgenerator - aber das ist für mich etwas anderes.
ALF - Do 28.01.10 20:05
Ich wollts nicht sagen B...F..... :wink:
Gruss Alf
Bergmann89 - Do 28.01.10 20:06
Ja eigentlich schon. Vlt hat er sich verschrieben un es soll ein PasswortKNACKER werden :lol:
Xeron - Do 28.01.10 20:32
ne ne, soll bloß halt die Funktion von nem Brute Force sein, aber dafür benutze ich es nicht.
ALF - Do 28.01.10 20:36
lol für was dann,
jedenfalss nicht für ein PWGenerator oder??
Xeron - Do 28.01.10 20:39
doch, eigentlich schon :O
ALF - Do 28.01.10 20:45
Dann ist Dein Ansatz dafür falsch!
Du erzeugst damit kein PW, jedenfals nicht so.
Gruss Alf
Bergmann89 - Do 28.01.10 20:45
na dann viel spaß... mal angenommen ich will 10 Stellen in meinem PW haben, das sind 27^10 verschiedene Möglichkeiten. Der rechnet bei mir schon an 4 Stellen ca 10 sec. Un das ganze geht exponentiell in die Höhe. Für 10 Stellen dauert das ganze dann viel zu lange!
ALF - Do 28.01.10 20:55
Bergmann89
| Zitat: |
na dann viel spaß... |
nicht nur das es lange dauert,
er will ja auch
nur Grossbuchstaben verwenden. Wo ist da das sichere Passwort?
Irgendwie verstehe ich ihn nicht! :?
Gruss ALf
Bergmann89 - Do 28.01.10 21:06
vlt ist macht das Programm kein unterschied zwischen groß un klein. der WPA-Key vom WLAN macht das ja auch nich, oder irre ich mich da jetz?
ALF - Do 28.01.10 21:33
gelöscht !!
jaenicke - Do 28.01.10 21:35
ALF hat folgendes geschrieben : |
Was Du vermutest ist eigentlich egal, wissen tust Du es nicht!
Jedenfalls ist es nicht das, was Dein Topic sagt und nicht das, was in Deiner Anfrage steht! |
Ich glaube du verwechselst gerade
Bergmann89 mit
Xeron, nur bei letzterem steht deshalb ja auch (Threadstarter). ;-)
ALF - Do 28.01.10 21:39
rofl,
Bergmann89Entschuldigung
hab das verwechselt :oops:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!