Passwörter für Apache generieren

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
chaos
User
Beiträge: 52
Registriert: Samstag 21. August 2004, 11:19

Hallo,

In einem Pythjon skript würd ich gerne Passwörter für eine .htpasswd-Datei generieren.
Laut der Manpage von htpasswd verwendet dieses die Systemfunktion crypt().

crypt gibt es in python auch als zweiargumentige Funktion im Modul crypt
(http://www.python.org/dev/doc/newstyle/ ... crypt.html).

Über das zweite Argument bin ich mir da niocht ganz im klaren, wie es gewählt werden sollte

In Python bekomm ich dann als Passwort:

Code: Alles auswählen

>>> passwd=crypt.crypt("foo","foo")
>>> passwd
'foKntnEF3KSXA'
Die Shell erzählt mir dagegen:
htpasswd -nb foo foo
foo:Fz0CNb1eYilWw
Oder gibt es ein anderes Modul mit geeigneteren Funktionen?
Slackware will never die.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi chaos,

der 2. Parameter gibt in den ersten beiden Zeichen den salt des Passworts an.

Code: Alles auswählen

>>> print crypt.crypt("foo", "fo")
foKntnEF3KSXA

>>> print crypt.crypt("foo", "foKntnEF3KSXA")
foKntnEF3KSXA

>>> print crypt.crypt("bar", "fo")
foXrpAKGo3142

>>> print crypt.crypt("bar", "foXrpAKGo3142")
foXrpAKGo3142

>>> chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

>>> print crypt.crypt("foo", "".join(random.sample(chars,2)))
zYQlhdunW6NB6

>>> print crypt.crypt("foo", "zYQlhdunW6NB6")
zYQlhdunW6NB6

>>>

Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
chaos
User
Beiträge: 52
Registriert: Samstag 21. August 2004, 11:19

Das ist ja schön und gut.

Nur wie bekomm ich ein ergebnis, das mit dem von htpasswd übereinstimmt?

Irgendwie seh ich anscheinend den Wald vor lauter Böumen nicht.
Slackware will never die.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

na ganz einfach so:

Code: Alles auswählen

htpasswd -nb foo foo
foo:Fz0CNb1eYilWw 

>>> print crypt.crypt("foo", "Fz0CNb1eYilWw")
Fz0CNb1eYilWw

Fz ist auch da der salt.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
chaos
User
Beiträge: 52
Registriert: Samstag 21. August 2004, 11:19

Ahh so:
Also was der salt ist ist eigentlich wurscht, genauso die ersten beiden Buchstaben des verschlüsselten Passwortes, Danke
Slackware will never die.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

naja, eigentlich ist der salt der Zipfel an der Wurscht, an dem du sie aus dem Heissen Topf ziehen kannst ;)


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi nochmal,

ich hab in den Codesnippets ein kleines Modul gepostet, welches das Handling mit den Passwörtern etwas vereinfacht.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Antworten