PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Wie Passwortabfrage?



Gottvonallem
30-05-2007, 19:32
Hi,

ich versuch gerade in C einen Benutzerlogin zu schreiben. Ein Benutzer übergibt über eine verschlüsselte Verbindung seinen Benutzernamen und sein Passwort und ich möchte halt testen, ob der Benutzername existent und das Passwort korrekt ist. Der Login erfolgt mit den normalen UNIX-Accounts (also den Accounts mit denen man sich normalerweise an der Maschine anmeldet.).
Gibt es da irgendwie einen Befehl für? (Hab mir gedacht, dass es mit exec* login gehen würde aber login gibt keine Fehlercodes zurück.)

mfg Benjamin

jeebee
30-05-2007, 20:02
schau dir mal die man-page zu getspnam an. Damit solltest du das eigentlich hinkriegen. Zu beachten: das Programm braucht für das Überprüfen des Passworts root-privileges.

Gottvonallem
30-05-2007, 20:36
Das man-file ist schonmal vielversprechend.
Danke für den Tip.
Das Programm für das ich das brauche benötigt sowieso root-privilegien deswegen ist dein Hinweis auch egal.

mfg Benjamin

Gottvonallem
03-06-2007, 15:01
Also ich schaffe es mittlerweile, zu testen ob der Nutzer überhaupt existiert und wenn dies der Fall ist das chiffrierte Passwort zu bekommen. Das Problem ist nun, wie man nun das Klartextpasswort in die gehashte Form bringt, um die beiden dann zu vergleichen. Zusätzlich gibt es noch das Problem, dass unterschiedliche Hashalgorythmen verwendet werden (können). Gibt es dafür eine spezielle Funktion oder darf man das alles selbst implementieren?

mfg Benjamin

jeebee
03-06-2007, 16:05
schau dir mal man 3 crypt + den Quelltext des Paketes shadow (ftp://mirror.switch.ch/mirror/gentoo/distfiles/shadow-4.0.18.1.tar.bz2) an. Eine andere (aktuellere) Möglichkeit ist Linux-PAM (z.b http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_ADG.html)

mfg Simon

Gottvonallem
03-06-2007, 16:59
Ah danke, die PAM Library war genau das was ich gesucht habe.

mfg Benjamin

anda_skoa
04-06-2007, 15:34
PAM hat zusätzlich den Vorteil, dass es auch Authentifizierung über Tokens usw. möglich macht.

Ciao,
_