Heutzutage braucht man ja für so ziemlich alles ein Passwort.
Die Zeiten als man Rechner noch anschaltete und direkt angemeldet war sind lange vorbei.
Das heißt aber nicht, dass die alte Retro-Hardware nicht dabei helfen kann die Bedürfnisse der Gegenwart zu erfüllen.
Es ergab sich, dass ich vor der Aufgabe stand einen Passwortgenerator zu programmieren, denn schließlich ist doch nichts so vertrauenswürdig wie der eigene Code, oder?
Und warum sollte nicht auch der C64 in der Lage sein komplexe Passwörter zu erstellen?
Die Aufgabe war ein Passwort-Generator-Programm zu erstellen das folgende Anforderung erfüllt:
- Erstellen eines zufallsgenerierten Passworts, dessen Eigenschaften vom Nutzer festgelegt werden.
- Die Länge des Passworts sowie die enthaltenen Zeichen (Großbuchstaben, Kleinbuchstaben, Sonderzeichen und Zahlen) sollen festgelegt werden können.
- Das Programm soll über eine Menüführung verfügen über die der Nutzer die einzelnen Eigenschaften bequem festlegen kann.
- Fehlbedienung soll erkannt und abgefangen werden.
Ich gebe zu, die Aufgabe hat mich eine Weile beschäftigt. Dabei war vor allem der Punkt 3 sehr herausfordernd.
Am Ende ist aber tatsächlich ein Konstrukt entstanden, das alle Anforderungen erfüllt.
Das Ergebnis ist einfach und funktional und lässt sich bequem über die Pfeiltasten des C64 steuern.
Hier ein paar Screenshots.
Alle Optionen für die Passworteigenschaften befinden sich in der Mitte. Der Nutzer navigiert mit den Pfeiltasten und kann die Passworteigenschaften mit Auswahlschaltern ein- und ausschalten. Über den Punkt “Generieren” wird dann das Passwort nach den Vorgaben erstellt.
90% des Codes ist allein für die Erstellung des Menüs und für die Navigationsfunktionen. Der eigentliche, produktive Kern des Passwort-Generators beschränkt sich auf einige wenige Zeilen, die ich hier gerne mit Euch teile.
40 pl=24 50 pw$="" 3000 rem passwort generieren 3005 x=rnd(-ti) 3010 for i=1 to pl 3030 za=int(rnd(1)*3)+1 3040 if za=1 then zk$="abcdefghijklmnopq rstuvwxyz":sl=26 3050 if za=2 then zk$="!$%&/().,#+-":sl= 12 3060 if za=3 then zk$="1234567890":sl=10 3070 zz=int(rnd(1)*sl)+1 3080 pw$=pw$+mid$(zk$,zz,1) 3090 next i 3100 print pw$
Was ihr seht war der erste funktionierende Entwurf, den ich dann stückweise ausgebaut habe. Zum Beispiel gibt es in diesem Entwurf noch keine Option für Kleinbuchstaben, aber ich denke das Prinzip wird trotzdem ersichtlich wenn man sich den Code anschaut.
In der Variable PL ist die Passwortlänge festgelegt. PW$ ist das Passwort selber, das in der letzten Zeile ausgegeben wird.
Dazwischen werden mit Hilfe des RND-Befehls vor allem Zufallszahlen erstellt die zwei Zwecken dienen.
In der Zeile 3030
3030 za=int(rnd(1)*3)+1
wird eine Zufallszahl zwischen 1 und 3 ermittelt, die dann verwendet wird um zu bestimmen, aus welcher Zeichenkette das nächste Zeichen für das Passwort genommen werden soll.
Je nach dem welche Zufallszahl dabei rauskommt, wird der Variable ZK$ eine andere Zeichenkette zugeordnet.
Das geschieht in den Zeilen 3040-3060
3040 if za=1 then zk$="abcdefghijklmnopq rstuvwxyz":sl=26 3050 if za=2 then zk$="!$%&/().,#+-":sl= 12 3060 if za=3 then zk$="1234567890":sl=10
Die Variable SL am Ende der Zeile gibt die Länge der Zeichenkette an, was gleich im Anschluss verwendet wird um ein Zeichen aus der Kette “herauszuschneiden” und es dem Passwort zuzuordnen.
In der Zeile 3070 wird eine weitere Zufallszahl (ZZ) ermittelt, nämlich genau zwischen dem Bereich von 1und SL, also der Länge der Zeichenkette.
Diese Zufallszahl wird nun verwendet um aus der Variablen ZK$ unter Verwendung des MID$ Befehls ein Zeichen herauszutrennen. Das geschieht in der Zeile 3080.
In der selben Zeile wird dann das rausgetrennte Zeichen an die Zeichenkette in der Passwortvariable angehängt.
3080 pw$=pw$+mid$(zk$,zz,1)
Das Ganze wiederholt sich dann genau so oft wie es in der Variable PL festgelegt wurde (in diesem Beispiel 24 mal).
In der letzten Zeile wird dann das erstellte Passwort ausgegeben.
Einfach, nicht?
Alles Weitere war dann nur noch der Ausbau dieser Grundfunktion und das Erstellen des Navigationsmenüs.
Auf meinem YouTube-Kanal könnt ihr Euch diesen Beitrag auch als Video ansehen.


