![]() |
Delphi-Version: 7
Fehler beim Passwortstärkeberechnung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich lasse wie folgt die Passwortstärke berechnen.
Delphi-Quellcode:
procedure TForm1.PassStrength();
var a, b, c, d, e, f, summezeichen, potenz, jahre: Float; begin if UppercaseCB.Checked then a := 26 else a := 0; if LowercaseCB.Checked then b := 26 else b := 0; if DigitsCB.Checked then c := 10 else c := 0; if ArithmoperatorsCB.Checked then d := 5 else d := 0; if BracketCB.Checked then e := 8 else e := 0; if SpecialcharsCB.Checked then f := 19 else f := 0; summezeichen := (a + b + c + d + e + f); potenz := Power(summezeichen, vPasslength); jahre := ((potenz / 2096204400) / 31536000) / 1000; PassStrengthLabel.Left := (Shape1.Width - PassStrengthLabel.Width) div 2; if Round(jahre) <= 10 then begin Shape1.Brush.Color := clRed; PassStrengthLabel.Caption := FloatToStr(Round(jahre)) + ' ' + 'Schwach'; end else if (Round(jahre) >= 11) and (Round(jahre) <= 70) then begin Shape1.Brush.Color := clYellow; PassStrengthLabel.Caption := FloatToStr(Round(jahre)) + ' ' + 'Gut'; end else begin Shape1.Brush.Color := clGreen; PassStrengthLabel.Caption := FloatToStr(Round(jahre)) + ' ' + 'Sehr gut'; end; end; Das funktioniert soweit gut, aber ab und zu bekomme ich diese Fehlermeldung, siehe Screenshot. Ich verstehe schon, dass es irgendwie mit zu großen Zahlen zu tun hat... aber wie ich das löse weiß ich jetzt nicht. Bin für jede Hilfe dankbar. )) |
AW: Fehler beim Passwortstärkeberechnung
Das sieht mir viel zu sehr nach Voodoo aus.
Sogenannte starke Passwörter führen nur zu Post-Its am Bildschirm, weil man sich die Biester nicht merken kann. Vor allem, wenn man noch verlangt die bitte schön alle zwei Wochen zu ändern. Zur Lösung des Problems: Nimm kleinere Zahlen bei der Berechnung des Wertes von
Delphi-Quellcode:
- cooler, irreführender Bezeichner btw.
jahre
Sherlock |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
Aber wie kann ich kleinere Werte nehmen? Dann stimmt doch die Berechnung nicht. |
AW: Fehler beim Passwortstärkeberechnung
Führe dein Programm doch mal im Debugger aus.
Dann siehst du genau, an welcher stelle es "knallt". Zur Not musst du es halt mehrmals versuchen, wenn der Fehler nur selten auftritt. Mal angenommen keine deiner Checkboxen ist angewählt...in diesem Fall wird für "summezeichen" 0 berechnet (die Klammern kannst du hier weglassen). Wenn nun die Passwortlänge auch 0 ist, so rechnest du in der nächste Zeile ![]() Hier wird wohl die Fehlermeldung herkommen. Okay. Mathe ist wohl schon ein Weilchen her. Das wars nicht. Ab der Zeile hatte ich dann aufgehört zu lesen. Delphi macht aus 0^0 = 1. So wie es auch bei Wikipedia steht. Da hat mich mein ![]() Du solltest dir also etwas überlegen, um diesen Fall abzufangen. Beispiel: Du prüfst am Anfang der Prozedure, ob die Passwortlänge > 0 ist. Ist das nicht der fall -> exit Gruß Headbucket |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Ob ein Passwort gut ist oder nicht, kannst du aber nicht wirklich berechnen. Da musst du schon die Entopie mit einbeziehen.
|
AW: Fehler beim Passwortstärkeberechnung
Hast Du eine Quelle für den Algorithmus, oder ist das selbst ausgedacht? Eventuell könnte man da ansetzen.
Sherlock |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Zitat:
Ich habe das selber ausgedacht. (((Anzahl Zeichen^Passwortlänge)/Schlüssel in der Sekunde, dass ein moderner Rechner schafft)/Sekunden im Jahr)/1000 Ich teile das ganze durch 1000 um die Entwicklung der Prozessoren einzuberechnen. |
AW: Fehler beim Passwortstärkeberechnung
Die Formel berechnet also die Anzahl der möglichen Kennwörter, die sich mit den Checkbox-Einstellungen generieren lassen. Aus dieser Anzahl wird unter der Annahme, das soundsoviele Kennwörter pro Sekunde mit brute force probiert werden, die Anzahl der Jahre ausgerechnet, die ein BF-Algorithmus benötigt, um alle Kombinationen durchzurechnen. Soweit richtig geraten?
Na ja. Nicht blöd und kein Voodoo (außer die Geschwindigkeit des BF, da würde ich noch die Quelle angeben). Zitat:
Zitat:
Delphi-Quellcode:
Dann versteht man gleich, worum es geht. Oder?
var
AnzahlUnterschiedlicherZeichen : integer; begin AnzahlUnterschiedlicherZeichen := 0; if UppercaseCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 26); if LowercaseCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 26); if DigitsCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 10); if ArithmoperatorsCB.Checked then inc(AnzahlUnterschiedlicherZeichen ,5); if BracketCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 8); if SpecialcharsCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 19); ... Zum Problem: Anstatt 'Power' zu nehmen, machst Du das mit einer Schleife und teilst 1x in der Schleife, falls das Zwischenergebnis zu groß wird. Wenn die Schleife durch ist, prüfst Du, ob Du schon geteilt hast. Wenn nicht (weil das Zwischenergebnis doch nicht zu hoch war), teilst Du dann. Hehe: Roter Kasten: Richtig geraten :mrgreen: |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
Zitat:
![]() Zitat:
Ich sorge schon mal vor, falls jemand aus Silicon Valley mein Prog abkauft und ich in das Hauptbüro in USA ziehen muss, müssen die Variablennamen nicht geändert werden. Und für die Engländer ist lachen gesund. :mrgreen: Zitat:
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Ich habe rausgefunden, dass der Fehler hier liegt, die Frage ist nur wieso hat Lazarus damit Probleme?
Delphi-Quellcode:
Trunc(jahre)
oder Round(jahre) |
AW: Fehler beim Passwortstärkeberechnung
Dann sind halt die MagicNumbers irreführend. Ich für meinen Teil würde nicht beim Lesen von Code rechnen wollen, was denn mit den immerhin aus menschlicher sicht großen Zahlen gemeint ist.
Grundsätzlich gibt es aber heutzutage eher Wörterbuch-Attacken, als pure Brute-Force Zeichenverkettung-Versuche. Darauf geht Dein Algorithmus gar nicht ein. Da solltes du noch dran schrauben. Sherlock |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
Das Wichtigste wird ja total ignoriert. Passwortlänge, Anzahl der Zeichen, Welche Zeichen, in welcher Reihenfolge, ... A Z AZ AAAAA AAAAAAAAAAAAAAA AAAAAAAABAAAAAA ISTHIERALLESDASSELBE ABCDEFGHIJKLMNOPQRSTUVWXYZ ABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBA ist hier alles das Selbe Hier mal ein paar Passwörter, mit welchen man die letzten 3 Tage versuchte meine Webseite zu hacken. iloveyou / {meinedomain}321 / winner / {meinöffentlicherbenutzername}321 Daß man mit Bruteforce nicht schnell genug etwas erreicht, wissen selbst die dümmsten "Hacker". :stupid: Nur so doof, wie deren Versuche war selbst ich nicht, auch wenn meine Passwörter bei diversen "Passwortstärkeberechnungen" nicht gut abschneiden. (bei einem meiner Passwörter meint dein Code Jahre=0.00000043 ... aber wer macht schon Bruteforce, vorallem wenn man nur maximal 120 Versuche am Tag hat ... da stimmen deine "Jahre" nun doch nicht :tongue:) |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Also soll Dein Programm ein zufälliges Passwort erstellen, und sich dann quasi selbst prüfen? Achsooooo.
Wehe dem, der sich das merken muss. ;) Sherlock |
AW: Fehler beim Passwortstärkeberechnung
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Die Frage war: Wieso kommt ein Überlauffehler?
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Zitat:
|
AW: Fehler beim Passwortstärkeberechnung
Wieso bietest Du dann die Möglichkeit der unterschiedlichen Zeichenvorräte (Groß/Kleinschreibung, Zifferm, Sonderzeichen etc.)?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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