Circa 17 Millionen Passwörter in eine Wortliste zusammengefasst und dann ein Error

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
MaximalMax
User
Beiträge: 18
Registriert: Sonntag 3. Mai 2020, 00:51

Ich möchte aus der Wortliste ein Rainbowtable generieren, habe halt heute mehrere Millionen Passwörter gedownloadet und dann in die Wortliste gemacht. Als ich mein Script ausgeführt habe (siehe Code) habe ich einen Error gesehen (siehe "Code")

Habe auch schon auf gutefrage gefragt, aber da habe ich nur so halbwegs gute Antworten bekommen, kann jemand helfen?

Code: Alles auswählen

import hashlib as hash

passwords = open('passwords.txt')
output = open('rainbowtable.txt', 'w')
for line in passwords.readlines():
    pwd = line.strip('\n')
    hashvalue = hash.sha512(str.encode(pwd))
    output.write(hashvalue.hexdigest() + '#' + pwd + '\n')
output.close()
passwords.close()

Code: Alles auswählen

Traceback (most recent call last):
  File "update-rainbowtable.py", line 5, in <module>
    for line in passwords.readlines():
  File "C:\Users\maxpr\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 2250: character maps to <undefined>
Diese Antworten habe ich auf gutefrage bekommen:
Der Code 0x8F ist in der Windows-1252-Kodierung nicht mit einem Wert belegt.
Ich gehe davon aus, dass du beim Öffnen des Files ein passendes Encoding angeben musst.
Bin kein Programmierer, aber wenn ich recht sehe, erzeugt Dein Programm ein ungültiges (nicht existierendes) Unicode-Zeichen.
@germanils hat schon so halb recht.
Probier mal die files von dir im richtigen ISO Format zu öffnen.
Ich habe keine Ahnung wie ich das mache. Benutze Windows 10 und Python 3.8.5

Ich brauche dringend Antworten, danke im Vorraus :D

Grüsse, Max.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Du hast doch schon Antworten bekommen. Die erste ist richtig. Du musst das passende Encoding der Datei beim Öffnen angeben. Welches das ist, musst du herausfinden.

Dateien solltest du mit den with-statement öffnen.
Benutzeravatar
MaximalMax
User
Beiträge: 18
Registriert: Sonntag 3. Mai 2020, 00:51

sparrow hat geschrieben: Donnerstag 1. Oktober 2020, 15:47 Du hast doch schon Antworten bekommen. Die erste ist richtig. Du musst das passende Encoding der Datei beim Öffnen angeben. Welches das ist, musst du herausfinden.

Dateien solltest du mit den with-statement öffnen.
Ja ok, aber wie mache ich das mit dem Encoding? 1. Herausfinden und 2. Angeben.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Wirf doch mal einen Blick in die Dokumentation, was open() so für Parameter entgegennimmt.
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

MaximalMax hat geschrieben: Donnerstag 1. Oktober 2020, 15:50 1. Herausfinden
Na ja, wenn du die Datei selbst erzeugt hast – und so klang das – musst du doch wissen, mit welchem Encoding du sie gespeichert hast. :) Man kann das auch nachträglich herausfinden, aber streng genommen sind das immer nur heuristische Angaben, die man so erhält. Wenn du Zugriff auf ein linux/unix System hast, geht es am einfachsten mit File. Fortgeschrittenere Texteditoren (evtl. Notepad++ unter Windows) zeigen das geratene Encoding auch an. Zudem gibt es dafür auch dezidierte Tools wie chardet (https://pypi.org/project/chardet/).
Benutzeravatar
MaximalMax
User
Beiträge: 18
Registriert: Sonntag 3. Mai 2020, 00:51

nezzcarth hat geschrieben: Donnerstag 1. Oktober 2020, 17:38
MaximalMax hat geschrieben: Donnerstag 1. Oktober 2020, 15:50 1. Herausfinden
Na ja, wenn du die Datei selbst erzeugt hast – und so klang das – musst du doch wissen, mit welchem Encoding du sie gespeichert hast. :) Man kann das auch nachträglich herausfinden, aber streng genommen sind das immer nur heuristische Angaben, die man so erhält. Wenn du Zugriff auf ein linux/unix System hast, geht es am einfachsten mit File. Fortgeschrittenere Texteditoren (evtl. Notepad++ unter Windows) zeigen das geratene Encoding auch an. Zudem gibt es dafür auch dezidierte Tools wie chardet (https://pypi.org/project/chardet/).
Danke, hast mir echt geholfen!
Antworten