PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : passwortabfrage eines programmes mit einem C Programm abfangen



Rogdab
12-08-2006, 09:31
Hallo,

ich habe eine kleine GUI(GTK) für eine Konsolenprogramm geschrieben(cryptsetup),
wenn man cryptsetup ohne Keyfile aufruft kommt eine Aufforderung für das entspreche Laufwerk ein Passwort einzugeben. So wie wenn man "su" aufruft und man das Passwort eingeben muß.
Alle benötigten Daten werden bereits an eine Funktion übergeben:


void init_password_callback(GtkWidget *dialog, gint response, char *dev_mapper){

char* passphrase = NULL;

if (response == GTK_RESPONSE_OK)
passphrase = gksuui_dialog_get_password(GTK_WIDGET(dialog));

gtk_widget_destroy(GTK_WIDGET(dialog));
g_print("PASS: %s", passphrase);

if (!passphrase)
g_print("kein Password");

return;
}

Da ich quasi gerade erst angefangen C in dieser Weise zu programmieren ist mir nicht klar wie ich in diesem Fall vorgehen muss. Ich hab auch schon einige docs durchgeschaut und gegoogelt, aber kein passendes Beispiel gefunden.
Könnte jemand ein ähnlichen Fall posten, so das ich mir anschauen kann wie ich vorgehen muss?

vielen dank

SeeksTheMoon
13-08-2006, 09:57
Du musst in die Doku von cryptsetup schauen, ob es für sowas überhaupt eine Schnittstelle anbietet.

Rogdab
13-08-2006, 11:34
Leider kann man kein passwort mit z.B. -P übergeben, falls du das meinst,

EDIT: nach einiger Spielerei hab ichs zum laufen bekommen, viel unkomplizierter wie ich dachte,

hier mal das wichtigste:



sprintf(init_pw, "/sbin/cryptsetup luksOpen %s", dev_mapper);


FILE *fp = popen(init_pw, "w");

if (fp)
{
fprintf(fp, "%s\n", passphrase);
}
fclose(fp);
return;