hi ich bin neu hir und habe gleich mal ne frage.
wie kann ich eine Passwordabfrage programmieren, mit mehreren benutzern wo jeder natürlich ein eigenes Passwort hat.
danke im voraus
gruß
indi
PASSWORD
hi
ich will die passwort abfrage für ein programm erstellen habe auch schon ein par codes aus dem internet aber immer wenn ich mehr als nur zahlen als passwort nehme bringt er mir den fehler, dass das Passwort nicht definiert sei. ich hoffe ihr habt ein par vorschlägefür so eine Passwort abfrage.
danke im voraus
gruß
indi
ich will die passwort abfrage für ein programm erstellen habe auch schon ein par codes aus dem internet aber immer wenn ich mehr als nur zahlen als passwort nehme bringt er mir den fehler, dass das Passwort nicht definiert sei. ich hoffe ihr habt ein par vorschlägefür so eine Passwort abfrage.
danke im voraus
gruß
indi
Meine Glaskugel verrät mir, dass Du `input()` anstelle von `raw_input()` verwendest. Bei `input()` kann man Python-Quelltext eingeben, der dann ausgewertet wird. Wenn Du da also einfach ein ein paar Buchstaben eingibst, dann sucht Python nach einem Namen um dann den daran gebundenen Wert zu verwenden. Nach der ``In``-Zeile steht immer das was ich eingegeben habe:
Code: Alles auswählen
In [15]: a = 42
In [16]: input()
23
Out[16]: 23
In [17]: input()
a
Out[17]: 42
In [18]: input()
a + 23
Out[18]: 65
In [19]: input()
z
---------------------------------------------------------------------------
<type 'exceptions.NameError'> Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
/home/bj/<string> in <module>()
<type 'exceptions.NameError'>: name 'z' is not defined
In [20]: input()
'hallo'
Out[20]: 'hallo'
hi
damit lagst du schon richtig. ich habe im internet mal nachgeschaut
secret=45155A
guess=0
while guess !=secret:
guess=input("NAME: ")
if guess==secret:
print"on"
else:
print'off'
print"on"
so soll nach der anleitung im Internet die passwort abfrage sein.
er bringt aber immer den fehler das 45155A nicht definiert ist.
meine Frage ist ob das überhaupt für eine Passwortabfrage mit mehreren Benutzern ist wen ja wie kann ich den fehler beheben.
Ansonsten freue ich mich über weitere beispiele.
dank im voraus
gruß
indi
damit lagst du schon richtig. ich habe im internet mal nachgeschaut
secret=45155A
guess=0
while guess !=secret:
guess=input("NAME: ")
if guess==secret:
print"on"
else:
print'off'
print"on"
so soll nach der anleitung im Internet die passwort abfrage sein.
er bringt aber immer den fehler das 45155A nicht definiert ist.
meine Frage ist ob das überhaupt für eine Passwortabfrage mit mehreren Benutzern ist wen ja wie kann ich den fehler beheben.
Ansonsten freue ich mich über weitere beispiele.
dank im voraus
gruß
indi
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Für Code gibt es das `code'-Tag
Aber das was du da gepostet hast, solltest du am besten gleich komplett löschen ...
Für mehrere Benutzer ist ein Dictionary in der Form { User : Password } die naheliegenste Idee - wenn man "deinem" Ansatz folgt. Allerdings ist es eine ganz schlechte Idee das Passwort im Klartext zu speichern ... und wenn du dir mal eine .pyc angeschaut hast, dann wirst du sehn, dass das nich viel mehr als eine zerhackte .py is
Passwort hashen und Hashwerte vergleichen
Oder auch nach existenten Lösungen googlen..
Aber das was du da gepostet hast, solltest du am besten gleich komplett löschen ...
Für mehrere Benutzer ist ein Dictionary in der Form { User : Password } die naheliegenste Idee - wenn man "deinem" Ansatz folgt. Allerdings ist es eine ganz schlechte Idee das Passwort im Klartext zu speichern ... und wenn du dir mal eine .pyc angeschaut hast, dann wirst du sehn, dass das nich viel mehr als eine zerhackte .py is
Passwort hashen und Hashwerte vergleichen
Oder auch nach existenten Lösungen googlen..
Auf die Gefahr hin, Offtopic zu werden: ich habe den Eindruck, dass das stark überbewertet ist, da auch die Hashes nicht einsehbar sein dürfen (stichwort /etc/shadow).cofi hat geschrieben:Allerdings ist es eine ganz schlechte Idee das Passwort im Klartext zu speichern ...
Es ist sicher keine schlechte Praxis, passwörter (gesalzen) zu hashen, aber für so notwendig, wie es gerne dargestellt wird, halte ich es auch wieder nicht. Korrigiert mich, wenn ich Fälle übersehe, in denen es mehr als nur ein (schwacher) Schutz vor der Versuchung für den Admin ist.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Gegen einen böswilligen Admin ist es gar kein Schutz, der kann auch SSH oder passwd modifizieren und dein Passwort bekommen.keppla hat geschrieben:Korrigiert mich, wenn ich Fälle übersehe, in denen es mehr als nur ein (schwacher) Schutz vor der Versuchung für den Admin ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich sprach auch von einem "Versuchten" Admin, also einem, der Prinzipiell gutwillig ist, aber, wenn er erstmal gesehen hat, wer was für ein Password hat, es nicht mehr vergessen kann.Gegen einen böswilligen Admin ist es gar kein Schutz, der kann auch SSH oder passwd modifizieren und dein Passwort bekommen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann gibt es noch das Problem der Malware, die ggf. Passwörter abgrast und wenn diese im Klartext stehen es noch blöder ist. Außerdem wenn jemand das Gerät auf dem die Passwörter sind, was dann?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
@keppla: Das ist doch gerade der Sinn von Hashes, dass sie sich nicht zurückrechnen lassen?! Das heißt, wenn ich dir nen sha224-Hash von meinem Passwort gebe, kannst du nicht auf das Originalpasswort kommen, es sei denn
* Du verwendest eine Wörtbuchattacke, wenn ich denn Wörter in meinem Passwort habe
* Du hast ein paar Milliarden Jahre Zeit für nen Brute-Force-Angriff.
* Du verwendest eine Wörtbuchattacke, wenn ich denn Wörter in meinem Passwort habe
* Du hast ein paar Milliarden Jahre Zeit für nen Brute-Force-Angriff.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
...Rainbow Table...Dauerbaustelle hat geschrieben:@keppla: Das ist doch gerade der Sinn von Hashes, dass sie sich nicht zurückrechnen lassen?!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Richtig. Aber das typische Risiko von Klartext-Passwoertern in Programmen ist oft ein anderes als der malizioese Admin.Leonidas hat geschrieben:Gegen einen böswilligen Admin ist es gar kein Schutz, der kann auch SSH oder passwd modifizieren und dein Passwort bekommen.
Was ist z.B. mit einem CGI, bei dem im Rahmen von Umkonfigurationen des Apache ploetzlich (unbeabsichtigt) der Quellcode angezeigt wird? Oder was ist wenn man dort z.B. vergessen hat, cgitb auf ein Logfile umzulenken und es ein Traceback mit PW-Anzeige gibt? Dann ist das interne Passwort publik, und es waere besser gewesen, wenn's nur der Hash gewesen waere (vorausgesetzt, das Passwort war stark).
...Salt...Leonidas hat geschrieben:...Rainbow Table...Dauerbaustelle hat geschrieben:@keppla: Das ist doch gerade der Sinn von Hashes, dass sie sich nicht zurückrechnen lassen?!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das steht schon im Rainbow-Table Artikel. Dauerbaustelle sprach von Hashes und die sind so zwar nicht zurückrechenbar, aber dennoch nicht per-se sicher.EyDu hat geschrieben:...Salt...Leonidas hat geschrieben:...Rainbow Table...Dauerbaustelle hat geschrieben:@keppla: Das ist doch gerade der Sinn von Hashes, dass sie sich nicht zurückrechnen lassen?!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
@Leonidas: Schon klar. MD5 gilt mittlerweile ja auch als unsicher (Kollisionsgefahr etc).
Wenn man es aber etwa nach dem folgenden Verfahren macht, dürfte es "sicher" sein:
Natürlich ist die Sicherheit eines Hashes wie immer vom Passwort abhängig, das heißt, "Butterbrot" hab ich wohl in fünf Minuten raus...
Wenn man es aber etwa nach dem folgenden Verfahren macht, dürfte es "sicher" sein:
Code: Alles auswählen
In [8]: salt = "u7h&5§"
In [9]: password = "Hall0Dies1stM3inPassw@rtMit1337-5p3@k"
In [10]: import hashlib
In [11]: hash = hashlib.sha512(password+salt)
In [12]: hash.hexdigest()
Out[12]:
'e5754401ce0c42dc7fbf1ce03a7f2fc0b5cadb22d32e73a7bdd570ec9e70461e2cf05affd5b06015c1440c3681802dc3d71ff1992ab34464a3c486c1dcbba75c'
Die trotzdem berechnet werden müssen, was nicht trivial ist. Frei verfügbare Tabellen gibt es zwar, die kommen aber kaum über zehnstellige Passwörter ohne Sonderzeichen hinaus.Leonidas hat geschrieben:...Rainbow Table...Dauerbaustelle hat geschrieben:@keppla: Das ist doch gerade der Sinn von Hashes, dass sie sich nicht zurückrechnen lassen?!
Jedenfalls ist man mit einem guten und langen Salt sowie einer vernünftigen Hash-Funktion schon mal ausreichend abgesichert. Mit recht geringem Aufwand hat man dann die von farid genannten, sehr realen Probleme erschlagen. Darüber hinaus gehende Sicherheitsvorkehrungen würde ich eher an anderen Stellen (Zugang zum Host, zur Datenbank usw.) ansetzen.