Seite 1 von 1

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

Verfasst: Donnerstag 1. Oktober 2020, 15:42
von MaximalMax
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.

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

Verfasst: Donnerstag 1. Oktober 2020, 15:47
von sparrow
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.

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

Verfasst: Donnerstag 1. Oktober 2020, 15:50
von MaximalMax
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.

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

Verfasst: Donnerstag 1. Oktober 2020, 15:53
von sparrow
Wirf doch mal einen Blick in die Dokumentation, was open() so für Parameter entgegennimmt.

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

Verfasst: Donnerstag 1. Oktober 2020, 17:38
von nezzcarth
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/).

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

Verfasst: Donnerstag 1. Oktober 2020, 17:42
von MaximalMax
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!