Passwort-Generator

Code-Stücke können hier veröffentlicht werden.
BlackJack

Man kann sich auch ein Passwort von einer Suchmaschine geben lassen: http://duckduckgo.com/?q=password+42 :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Aber dann weiß doch DDG was man für ein Passwort verwendet hat! :p
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Ich finde den Encoding-Hinweis von BlackJack durchaus wichtig und würde es noch weiter ausdehnen - spätestens wenn das Passwort gespeichert, gehasht oder de-crypt()-et werden soll, ist die Frage nach der eigentlichen Bytefolge wichtig. Will man dann auch noch mit einem anderen Tool als aus Python heraus das Passwort nutzen, können exotische Sonderzeichen aus dem Unicoderaum zum Spielverderber werden. Abhilfe schafft da nur die genaue Festlegung des Encodings vor der Verarbeitung des Passwortes. (Und unter Windows sind die Python Unicode-Literale intern nach wie vor UTF16 kodiert, während die meisten unixoiden Systeme inzwischen auf UTF32 setzen, ganz abgesehen von der BE/LE-Problematik)
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Üpsilon hat geschrieben: [...] Aber ich hab mein Programm zum Üben geschrieben :mrgreen: :D :lol: [...]
@Blackjack: Ich wiederhole: Ich habe mein Programm zum ÜBEN geschrieben
und nur hochgeladen, weil ich was lernen wollte. (Das ist auch passiert.)
Aber jetzt wissen wenigstens alle, wo man Passwörter herkriegt
Edit: Von DuckDuckGo, aus pwgen oder von WolframAlpha (nach password suchen).
Oder aus komischen primitiven Python-Programmen.
PS: Die angebotene Summe ist beachtlich.
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Üpsilon hat geschrieben:Bin gerade etwas in eile, aber trotzdem danke für alles an alle. :lol:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding:utf-8 -*-
"""Passwort-Generator
Programmiert von Üpsilon mit der Hilfe von vielen Anderen
Oktober 2012, Mainz, OT Hartenberg-Münchfeld
"""

import string, random
alle_zeichen= ["^", "!", "\"", "§", "$", "%", "&", "/", "(", ")", "=", "?", "ß", "\\", "+", "*", "<", ">", "|", "'", "#", ",",";",   ":",  "-", "_", "{", "}", "[", "]", "~"]
alle_zeichen.extend(string.ascii_letters)
alle_zeichen.extend(string.digits)

def erstelle_passwort():
    wort = ''.join(random.choice(alle_zeichen) for i in range(20))
    return wort

def main():
    wort = erstelle_passwort()
    thema = input("Gib ein, wofür du das Passwort brauchst: ")
    text = "%s: %s\n" %(thema, wort)
    with open("passwort.txt","a") as pw_datei:
        pw_datei.write(text)

main()

Ich habe mich neben diesem Code auch mit einigen anderen in der Rubrik Codesnippets beschäftigt. An dem Thread hat mir ganz gut gefallen, dass er didaktisch verwertbar ist, was hier sonst leider selten der Fall ist. Man kann schön die Schritte, die Verbesserungen nachvollziehen bzw. thematiseren.
Dennoch gibt es hier doch noch einen Fehler, oder nicht?

Code: Alles auswählen

thema = input("Gib ein, wofür du das Passwort brauchst: ")
Ist vielleicht etwas vorrangiger als div. Encodingüberlegungen :?:

LG, rolgal_reloaded
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Mach mal aus der ersten Zeile des Skriptes ein

Code: Alles auswählen

#!/usr/bin/env python3
oder sorge irgendwie dafür, dass es mit Python3 ausgeführt wird.

Py2: raw_input -> Py3: input
Py2: input -> Py3: eval(input(...)) (böse!)

Was ich damals für Kack-Code geschreiben habe, als ich noch kein join und LCs kannte...#nostalgie
PS: Die angebotene Summe ist beachtlich.
Antworten