2016-04-27 2 views
0

Ich habe ein Programm mit dem Namen login.py, das bei der Ausführung den Benutzer nach einem Passwort (5 Zeichen) fragt. Wenn der Benutzer das richtige Passwort eingibt, gibt er 'Login erfolgreich' aus und ermöglicht dem Benutzer den Zugriff auf andere programminterne Operationen. Ich versuche ein Bash-Skript zu schreiben, um zu sehen, ob ich dieses Passwort brutal erzwingen kann.Verwenden von Bash-Skript, um ein Python-Programm-Passwort zu erzwingen

Ich erzeuge die Passwörter mit for str in $(echo {a..z}{a..z}{a..z}{a..z}{a..z}); do.

Wie gebe ich diese generierten Zeichenfolgen an das login.py-Programm weiter und drucke das übereinstimmende Passwort aus?

+2

Wir können nicht helfen, wenn wir nicht wissen, wie das Login aussieht – linusg

+1

Spielt es eine Rolle? Ich muss nur einen Strom von Passwörtern als Eingabe an das Programm senden, und es wird "Login erfolgreich" oder "Ungültige Anmeldung" für jeden Versuch ausgeben. Aber wenn es hilft, ist das Passwort SHA256 Hash und in einer verschlüsselten Datei gespeichert. Ich vergleiche die Hashes, um das Passwort zu bestätigen. – User134562

+0

Sie können Befehlszeilenargumente verwenden. Das ist eine Möglichkeit, externe Daten an das Python-Programm selbst zu übergeben. –

Antwort

1

expect ist ein Tool, mit dem Sie mit der Python-Anmeldung interagieren können. Es wurde speziell für die Automatisierung von Anmeldeprozessen in den Tagen der DFÜ-Verbindung entwickelt. Es funktioniert, indem Aktionen den Eingabemustern zugeordnet werden.
Zum Beispiel

#!/usr/bin/expect -f 
spawn $your-python-program 
expect "ogin:" 
send_tty "$ruser\n" 
expect "assword:" 
send_tty "$passwd-guess\n" 
0

Es hängt davon ab, wie das Python-Programm das Kennwort liest.

Falls einfach stdin verwendet wird (siehe Beispiel http://pastebin.com/raw/YHnZfyJC), rufen Sie es unter echo foo | python thescript.py an.

Falls das Skript ein Passwort als Befehlszeilenargument akzeptiert - übergeben Sie es einfach.

Wenn es so etwas wie das getpass Modul verwendet - Sie müssen expect wie @ user6170930 vorgeschlagen.

+0

Das Programm kann es auch explizit von einem Terminal lesen – hek2mgl

Verwandte Themen