Passwörter für Apache generieren

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

Passwörter für Apache generieren

Beitragvon chaos » Montag 13. Dezember 2004, 18:01

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.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 13. Dezember 2004, 18:24

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: Alles auswählen

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

Beitragvon chaos » Montag 13. Dezember 2004, 18:40

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.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 13. Dezember 2004, 19:15

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: Alles auswählen

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

Beitragvon chaos » Montag 13. Dezember 2004, 19:25

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

Beitragvon Dookie » Montag 13. Dezember 2004, 19:40

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


Gruß

Dookie

Code: Alles auswählen

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

Beitragvon Dookie » Montag 13. Dezember 2004, 21:39

Hi nochmal,

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


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder