Sicheres Passwort (mit zuvor definierten Einstellungen) mit einem Tastenkürzel/einem Klick erzeugen

thulium

Aktives Mitglied
Thread Starter
Dabei seit
12.11.2011
Beiträge
3.582
Reaktionspunkte
375
Moin.

Sichere Passwörter vordefinierter Länge kann man über den Schlüsselbund erzeugen. Soweit so klar.

Zwei Dinge reizen mich als Verbesserung:

1. Ausschluß bestimmter Zeichen wie z.B. "0oO_iIlqg,."; Sonderzeichen Zeichen sollen nicht am Ende oder am Anfang des Passwortes vorkommen

2. Erzeugen des Passwortes "direkt in die Zwischenablage hinein" mit einem global wirksamen Tastenkürzel oder mit einem einzigen Klick auf ein Menüleistensymbol, ohne jede Nachfrage

Weiß da jemand was?

Danke.
 
Und was sprich gegen einen Passwortmanager? Da hast Du noch mehr Möglichkeiten, allerdings nicht das, was Du unter 1. willst.
 
Ich benötige keinen PW-Manager. Der Schlüsselbund reicht mir völlig.

Ich benötige genau die 2 genannten Eigenschaften.
 
Das Shift+cmd+C fürs Kopieren des gerade erzeugten Passwortes in die Zwischenablage reicht nicht?
 
@bernie313
Wenn ich keinen Wunsch nach einer Verbesserung hegen würde, hätte ich hier nicht gefragt : )

Es geht auch um ein logisches UND bei den beiden Punkten. Ich möchte eben bestimmte Muster/Zeichen bewußt ausschließen. UND den ganzen Erzeugungsprozess auf einen einzigen Schritt eindampfen. Nicht mehr und nicht weniger.
 
Es geht auch um ein logisches UND bei den beiden Punkten
Das hättest du dann auch im Eingangspost schreiben sollen ohne Zuhilfenahme von Skripten wird dein Wunsch dann nicht zu erfüllen sein.
Wenn ich keinen Wunsch nach einer Verbesserung hegen würde, hätte ich hier nicht gefragt :
Das hatte mich auch gewundert, da dein 2.Wunsch ja problemlos geht und das auch mit globaler Tastenkombi.
 
@bernie313

Der 2. Wunsch ist mitnichten erfüllbar.

Es geht dabei um die Gesamtheit der Schritte. Aber ich rede mir hier den Mund fusselig, wenn die Intention nicht verstanden wird.
 
Code:
head /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9~!@#$%^&*_-'

Damit kannst du dir die erlaubten Zeichen nach Belieben zusammensuchen.
 
  • Gefällt mir
Reaktionen: UnixCoon
Dann schreibe deutlicher, du willst also mit einer Tastenkombi ein Passwort erstellen, das bestimmte Zeichen nicht erhält und das soll dann automatisch in die Zwischenablage gepackt werden, richtig
 
... wenn du es ausprobieren würdest und nicht nur die manpage lesen würdest, dann würdest du erkennen, dass dein 1. nahezu erfüllt werden würde, bis auf die Sache mit Sonderzeichen am Anfang und Ende.

Das Ganze dann in einem Script, dass dir die Ausgabe in die Zwischenablage kopiert und das Script dann als Dienst speichern und mit einem dir passenden Shortcupot versehen, sollte dann dein Ziel erreichen. Das kriegst du auch sicher selber hin.

Ach ja, wenn du ein max 16 Zeichen langes Passwort haben willst, mit den von dir eingeschränkten Zeichen, dann nimm folgenden Befehle, den ich aus dem Vorschlag oben ergänzt habe. (max. deshalb, da /dev/urandom durchaus auch schon innerhalb der ersten 16 Zeichen ein Char 13 (=newline) hervorbringt, was dann tr veranlasst, das Lesen der Pipe zu beenden. Aber das sollte kein Hindernis darstellen, da ein erneutes aufrufen des Scripts, das mit an Sicherheit grenzender Wahrscheinlichkeit löst)

Probierst du:

Code:
head /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | tr -d '0oO_iIlqg,.' | cut -c1-16

edit:
das mit den Sonderzeichen am Anfang und Ende kriegst du mit sed und einer Suche und Substituition des ersten und letzen Buchstabens hin. Und wenn du den Ersatz auch zufällig haben willst, dann speichere dir zwei zufällige Buchstaben in Variablen, die du in sed als Ersatz verwendest. Wie das geht, weißt du ja jetzt.

Alternativ kannst du auch ganze ohne sed einfach die zwei zufälligen Buchstaben an den Anfang und das Ende setzen, um deine 1. Bedingung zu erfüllen.
 
@lisanet
Danke erstmal für Deine Hinweise : )

Noch habe ich nicht alles verstanden. Mal sehen, ob ich herausfinde, wie man ein Skript/Dienst erstellt.

Deinen Code habe ich jetzt im Terminal ausprobiert.
Als Ausgabe erscheint: "tr: Illegal byte sequence"
 
Mal sehen, ob ich herausfinde, wie man ein Skript/Dienst erstellt.
Skripte mir einem Editor, als UTF8 Text speichern und ausführbar machen. Dienste mit Automator. In diesem Fall beides mit Automator.

Als Ausgabe erscheint: "tr: Illegal byte sequence"
hoppla, das lag dann an der Shell, die ich benutze. Ich habe das via iPad und ssh login auf den Mac getestet. Auf dem Mac (getestet mit 11.3 und der zsh) lautet das

Code:
LANG=C; head /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | tr -d '0oO_iIlqg,.' | cut -c1-16

Und ja, es macht Sinn, wenn du einwenig Programmieren lernst, da du oft sehr detaillierte und exotische Anforderungen hast, die sich selten vorgefertigt wo finden und regelmäßig nur selbst umgesetzt werden können. Die Shell-Programmierung ist auch nicht sonderlich schwer, aber extrem mächtig wie du hier siehst.

edit:

oder noch besser, damit du das local-Environment für die Terminal-Sitzung nicht durchgehend änderst:

Code:
head /dev/urandom | LANG=C tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | LANG=C tr -d '0oO_iIlqg,.' | cut -c1-16
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: picknicker1971
Was soll ich sagen liebe Simone? Ganz ganz herzlichen Dank, echt toll, was Du gemacht hast : )
Freut mich auch sehr, dass Dir die Idee zum Generator gefiel : )

Zum Ausprobieren habe ich als erstes Dein Shell-Skript in einer Textdatei "pw-generator.sh" gespeichert.

Wenn ich es per Drag&Drop auf terminal.app bewege und starte erhalte ich "tr: Illegal byte sequence"


Ganz allgemein und aus Neugier zu menschenfreundlichen Programmieransätzen:

Ich wäre so rangegangen:

0. Sprechender Name: Andreas Passwortgenerator
1. Definieren einer Zeichenmenge A (ohne Sonderzeichen)
2. Definieren einer Zeichenmenge B (mit Sonderzeichen)
3. Festlegen der erlaubten Zeichenmenge für erstes und letztes Zeichen
4. Festlegen der erlaubten Zeichenmenge für alle anderen Zeichen
5. Festlegen der Gesamtanzahl an Zeichen
6. Zeichenkette erzeugen und ausgeben
7. Zeichenkette in Zwischenablage kopieren


In der realen Welt läuft Programmieren viel verschlungener (wie man ja auch an Deinem Shell-Skript sieht), länglicher, mit viel Improvisation und vielen Sonderwegen.

Zum Beispiel ist es ja alles andere als naheliegend erstmal was zu Umfangreiches zu erzeugen um dann davon was wegzunehmen.

Für die Zukunft wünsche ich mir Programmierkonzepte, die viel mehr Menschen als es jetzt der Fall ist, erlauben und einladen, Aufgaben durch Programmieren zu lösen.
 
Wenn ich es per Drag&Drop auf terminal.app bewege und starte erhalte ich "tr: Illegal byte sequence"
Keine Ahnung was du gemacht hast, hier läuft es.

Ein Shell script musst du als ausführbar kennzeichnen, wenn du es nur im Terminal starten willst. Zudem muss die erste Zeile mit der Shell enthalten sein.

Aber warum machst du es nicht komplett mit Automator und als Dienst? Mir scheint es so, dass du mit dem lediglichen copy&paste ohne ausführbar machen und anschließendem Drag&Drop das verkehrt machst. Das wichtigste ist nämlich die Festlegung LANG=C. Die Syntax und Stelle unterscheidet sich von einer direkten Terminaleingabe und einem ausführbaren Script und darum gehe ich eben davon aus, das dein Vorgehen den Fehler verursacht.

Wie gesagt, mache es doch komplett so wie beschrieben, dann läuft es. Eine Ferndiagnose deines Fehlers kann ich nicht bieten. Und einen Programmierlehrgang auch nicht.
 
  • Gefällt mir
Reaktionen: dg2rbf
Im übrigen sind deine Punkte 1-4 viel zu umständlich. Wie ich geschrieben habe, sieh dir bitte eine ASCII Tabelle an und lese die manpage von tr. Im übrigen entspricht das deinen Anforderungen, auf die du ja immer zu 100% bestehst.

Bei 6. ist nicht das erzeugen das Problem, sondern die Zufälligkeit. Und das lässt sich eben wie geschrieben eleganter, kürzer und damit weniger fehleranfällig realisieren als in deinen Gedankengängen.
 
  • Gefällt mir
Reaktionen: dg2rbf
Laut Berechtigungen (744) ist die Datei ausführbar.

Ich werde das schon hinkriegen, mal gucken, woran es liegt.

Den Rest müssen wir hier ja nicht weiter diskutieren.

Danke nochmal für das Ausarbeiten der Lösung.
 
Also bei mir hat alles einwandfrei funktioniert. @lisanet Vielen Dank! Das funktioniert echt prima. Ich bin kein Ass im Programmieren, evtl fehlt mir auch einfach die Zeit dafür. Kannst du - so ganz spontan - ein Werk, eine Seite oder etwas Ähnliches nennen, was man sich als Einsteiger mal auf jeden Fall angelesen haben sollte, um am Mac programmieren zu lernen?
Viele Grüße und danke nochmals!
 
Zurück
Oben Unten