Seite 1 von 1

fehler

Verfasst: Montag 2. November 2020, 09:51
von mois
In meinem Code geht es darum sich in einem Server anzumelden und verschiedene Wörter aus einer Textdatei einzulesen, die Wörter zu replacen und als Passwort für den SErver benutzen.
Mein Problem ist das nicht alle Wörter als Passwort versucht werden und ich mittendrin einen Brpken Pipe Error kriege.

import hashlib as hl
import sys
import socket
import base64

def main():

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client:
client.connect(("147.0.0.1", 5000))
data = readData()
#try:
for word in data:

word = test(word)

client.send("aufgabe:".encode()+ word)
response = client.recv(10000).decode()
print(response)

if response.__contains__('01'):
print("gefunden")
sys.exit()


#except socket.error as e:
# print("Passwort nicht gefunden!")



def readData():
helper = {'o': 0, 'O': 0, 'i': 1, 'I': 1, 'r': 2, 'R': 2, 'e': 3, 'E': 3, 'a': 4,
'A': 4, 's': 5, 'S': 5, 'g': 6, 'G': 6, 't': 7, 'T': 7, 'b': 8, 'B': 8, 'p': 9, 'P': 9}
data = []
with open("rfc4960.txt", "r") as file:
for line in file:
for word in line.split(" "):
for key in helper:
word = word.replace(key, str(helper[key]))


data.append(word)


return data

def test(word):

a= base64.b64encode(hl.sha3_512(word.encode()).digest())

return a


if __name__ == "__main__":
main()

Re: fehler

Verfasst: Montag 2. November 2020, 10:09
von Sirius3
hashlib sollte man nicht als hl abkürzen, das ist unüblich.
`readData` sollte man `read_data` schreiben. `test` ist ein schlechter Name für eine Funktion, die einen Hash ausrechnet, und a ist ein schlechter Variablennamen, der gar nicht gebrauch wird.

client.send ist falsch, das muß mindestens sendall sein, und es muß ein Protokoll geben, das dem Server mitteilt, wann die Nachricht komplett ist.
client.recv ist auch falsch. Da fehlt auch ein Protokoll.
Was erwartet denn der Server?

Magische Methoden sollte man nicht direkt aufrufen, das ist '01' in response.
sys.exit sollte in einem normalen Programm gar nicht vorkommen. Hier reicht ein return.

Re: fehler

Verfasst: Montag 2. November 2020, 10:13
von mois
Die methode test und die variable a habe ich nur zum testen entwickelt, ich versuche meinen fehler zu finden, dass das schlechte Namen sind ist mir bekannt.
Der Server erwartet das richtige passwort um sich anzumelden. Meine Aufgabe ist es dieses Passwort zu finden in dem ich die einzelnen Wörter der datei als passwort versuche

Re: fehler

Verfasst: Montag 2. November 2020, 10:14
von Sirius3
Ohne Protokoll geht das nicht. Daher die Frage, welches Protokoll erwartet der Server?

Re: fehler

Verfasst: Montag 2. November 2020, 10:18
von mois
fehler

Re: fehler

Verfasst: Montag 2. November 2020, 10:19
von mois
das ist der code des servers

Re: fehler

Verfasst: Montag 2. November 2020, 10:43
von Sirius3
Der Servercode ist ja nicht mal Python. Dem Servercode fehlt auch ein Protokoll. Das erst ist also, dass Du Dir ein Protokoll aussuchst, mit dem Du den Datenaustausch machst. Am einfachsten wäre ein Zeilenbasiertes Protokoll. Dann benutzt man aber auch nicht recv oder send, sondern läßt sich mit makefile ein fileartiges Objekt geben.

Re: fehler

Verfasst: Montag 2. November 2020, 10:47
von mois
okey danke