Seite 1 von 2
Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 07:23
von mr-evil1
Hallo. Hab ein kleines Anliegen.
Ich habe eine Datei "pass.text"
Darin befinden sich viele Passwörter ca.100.. Jedes Passwort ist getrennt durch ;
In meinem Code möchte ich nun diese Passwörte aus der Datei mit dem Passwort der Tastatureingabe vergleichen.
Wenn das Passwort der Tastatureingabe mit einem Passwort in der Datei übereinstimmt darf erst der Nächste Schritt eingeleitet werden.
Sonnst wieder zurück in die EINGABE.
Der bestehende Code funktioniert bereits mit der internen abfrage in der .py Datei.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 07:33
von darktrym
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 07:35
von sparrow
Dann zeig doch was du hast, was du versucht hast und was nicht funktioniert.
Aus deiner Beschreibung kann ja niemand den Ist-Zustand herauslesen.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 07:44
von mr-evil1
Das funktioniert soweit
Code: Alles auswählen
def main():
count = 0
while count < 3:
kb = xbmc.Keyboard('default', 'heading', True)
kb.setDefault()
if count == 0:
kb.setHeading('Enter Password, 3 Versuche')
if count == 1:
kb.setHeading('Enter Password, noch 2 Versuche')
if count == 2:
kb.setHeading('Enter Password, letzter Versuch')
kb.setHiddenInput(True)
kb.doModal()
while kb.isConfirmed():
passwordHash = '123'
password_input = kb.getText()
break
else:
xbmc.executebuiltin('Quit')
if passwordHash == password_input:
print("Zugang gewaehrt")
from lib import startup
startup.show()
break
else:
count = count+1
else:
xbmc.executebuiltin('Quit')
Nur scheitere ich immer an der abfage aus einer Datei.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 09:51
von Sirius3
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 2 Tabs. So ist der Code kaum lesbar.
Die äußere while-Schleife ist eigentlich eine for-Schleife, am besten über den Text, den Du als Heading ausgeben willst. Die innere while-Schleife ist Quatsch, weil Du sie immer sofort per ›break‹ verläßt.
Ich glaube kaum, dass jemand direkt einen Passwort-Hash eingibt, der Variablenname ist irreführend, oder besser gesagt Wunschtraum, weil Passwörter tatsächlich nur als Hash gespeichert werden sollten.
Importe sollten am Anfang der Datei stehen, nicht mittendrin. Der Paketname `lib` ist zu generell, da solltest Du einen besseren Namen finden.
Zum eigentlichen Problem hast Du jetzt gar nichts gezeigt. Da das Problem unabhängig von Deiner Eingabeoberfläche ist, kannst Du es als Funktion schreiben.
Die Funktion sollte die Datei lesen, mit dem als Argument übergebenen Passwort vergleichen und True oder False zurückgeben. Wo hast Du damit ein konkretes Problem?
Mir fehlt da auch noch ein Benutzernamen.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 11:06
von __blackjack__
Die Kritikpunkte mal grösstenteils umgesetzt könnte das so aussehen (ungetestet):
Code: Alles auswählen
import xbmc
from lib import startup
EXPECTED_PASSWORD = '123'
def main():
for heading in ['3 Versuche', 'noch 2 Versuche', 'letzter Versuch']:
keyboard = xbmc.Keyboard('default', 'heading', True)
keyboard.setDefault()
keyboard.setHeading('Enter Password, ' + heading)
keyboard.setHiddenInput(True)
keyboard.doModal()
if keyboard.isConfirmed():
password = keyboard.getText()
else:
xbmc.executebuiltin('Quit')
if password == EXPECTED_PASSWORD:
print('Zugang gewaehrt')
startup.show()
break
else:
xbmc.executebuiltin('Quit')
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 13:55
von mr-evil1
Ersmal vielen Dank für eure Hilfe.
Sehr schöner Code. Was jedoch nicht funktioniert, wenn die eingabe falsch ist, dass er den counter hochzählt.
Wie gesagt, würde ich nur gerne anstelle " EXPECTED_PASSWORD = '123' "
das oder die Passwörter aus einer Datei, zB: pass.csv auslesen und vergleichen.
das csv modul habe ich mir auch angesehen, jedoch komme ich damit noch nicht zurecht..
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 14:00
von __blackjack__
@mr-evil1: Welcher counter? Es gibt keinen mehr, weil man den nicht braucht.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 14:04
von mr-evil1
Bei deinem Code, zählt er nicht runter.
Das heisst, wenn ich falsche eingabe mache, "noch 2 Versuche" noch mal probieren und Falsch, "Nur noch 1 Versuch" usw...
Oder bin ich auf dem Holzweg?
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 14:12
von __blackjack__
@mr-evil1: Ja, Du bist auf dem Holzweg. Man muss da weder rauf noch runter zählen. Die Texte stehen in der Liste und die Schleife geht über diese Liste, also gibt's in jedem Schleifendurchlauf den passenden Text.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 14:29
von mr-evil1
Nochmal getestet. Läuft so bei mir leider nicht.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 14:35
von Sirius3
„Läuft nicht” ist eine sehr schlechte Fehlerbeschreibung. Was passiert? Fehlermeldung?
Und wo kommst Du nun konkret nicht weiter mit dem Lesen Deiner Passwortdatei?
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 14:59
von mr-evil1
Beim letzten Code wird die Schleife und das Programm nach der erste Fehleingabe beendet. Bei meinem Code ganz oben nicht.
Eigentlich bräuchte ich nur einen Passwort Abgleich aus einer externen Datei.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 15:24
von __blackjack__
@mr-evil1: Mit welcher Fehlermeldung wird es denn *im* ersten Schleifendurchlauf beendet? Denn das sollte genau so gehen wie es da steht. Das ``break`` wird *nicht* bei einer Fehleingabe erreicht, also musst Du ja irgendeine Fehlermeldung bekommen, da sonst die Schleife nicht verlassen wird.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 17:27
von mr-evil1
Anzumerken ist, dass es sich dabei um Kodi handelt.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Freitag 21. Juni 2019, 17:32
von __blackjack__
@mr-evil1: Das hat das `xbmc`-Modul schon irgendwie verraten – und das ändert nichts daran wie die Programmiersprache Python funktioniert.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Samstag 22. Juni 2019, 07:43
von mr-evil1
Also ist es nicht möglich, Passwörter aus einer passw.csv Datei auszulesen und mit der Tastatureingabe zu vergleichen?
Hab schon vieles versucht. Es funktioniert aber nur immer mit dem ersten Wort in der Datei.
ZB passw.csv:
123;345;678;91011;121314 ;
Ich hätte gerne dass alle diese zu einem Password = True führen
Und alles was nicht in der Liste ist zu eunem Password = False
Ich schaffe es einfach nicht. Habe schon alle Firen danach abgesucht.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Samstag 22. Juni 2019, 09:19
von sparrow
Beantworte doch erst einmal __blackjacks__ Frage warum sein Code nicht funktioniert.
Man baut ja ein Haus auf einem vernünftigen Fundament.
Und dann dann zeigst du den Code, der nur das erste Passwort akzeptiert.
Solange du hier alles ignorierst, was die helfen soll, wirst du auch nicht voran kommen.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Samstag 22. Juni 2019, 09:42
von Sirius3
NAtürlich ist das möglich. Aber Du hast noch immer nicht gezeigt, was Du bereits versucht hast.
Ein Problem teilt man am besten in kleine Teilprobleme, die einfach zu lösen sind. Hier ist es, das Lesen der Passwortdatei, und das vergleichen mit vielen Passwörtern.
Re: Passwort aus Datei auslesen und vergleichen
Verfasst: Samstag 22. Juni 2019, 13:10
von mr-evil1
Ok. Hier ein Beispiel von mir, aus der Konsole mit nur 4 Passwörter aus der Datei.
Code: Alles auswählen
import csv
answer = input("Do you have an account?(yes or no) ")
if answer == 'yes' :
login = False
csvfile = open("/storage/emulated/0/passw.csv","r")
reader = csv.reader(csvfile, delimiter=';')
for row in reader:
for heading in ['password: ', '2 more attempts: ', 'last attempt: ']:
password = input(heading)
if row[0] == password:
login = True
break
elif row[1] == password:
login = True
break
elif row[2] == password:
login = True
break
elif row[3] == password:
login = True
break
else:
login = False
if login == True:
print("You are now logged in!")
break
else:
print("3 times incorrect password.")
exit()
else:
print('Only with password.')
exit()