2017-11-01 14 views
0

Unten ist das Fragment des Codes, den ich gefunden habe, um Daten aus dem Paket zu analysieren. Ich bekomme einen Fehler, wenn ich den Code ausführe. Kann jemand bitte den Grund dafür erklären. Dies ist eine kleine Netzwerk-Sniffing-Programmlandschaft. Vielen Dank für das LesenPython-Socket-Datenanalyse TypeError: 'Bytes' -Objekt kann nicht implizit in Str konvertiert werden

if protocol == 6 : 
     t = iph_length + eth_length 
     tcp_header = packet[t:t+20] 
     tcph = unpack('!HHLLBBHHH' , tcp_header) 
     source_port = tcph[0] 
     dest_port = tcph[1] 
     sequence = tcph[2] 
     acknowledgement = tcph[3] 
     doff_reserved = tcph[4] 
     tcph_length = doff_reserved >> 4 

     print ('Source Port : ' + str(source_port) + ' Dest Port : ' + str(dest_port) + ' Sequence Number : ' + str(sequence) + ' Acknowledgement : ' + str(acknowledgement) + ' TCP header length : ' + str(tcph_length)) 

     h_size = eth_length + iph_length + tcph_length * 4 
     data_size = len(packet) - h_size 

     #get data from the packet 
     data = packet[h_size:] 

     print ('Data : ' + data) 
+0

Können Sie Eingangsdaten zur Verfügung stellen? –

+0

Leider nicht. Weil ich dieses Fragment für den Verkehr verwende, der im Netz analysiert und bin offensichtlich binäre Daten –

Antwort

1

Scheint, Sie verwenden Byte-Objekt als Zeichenfolge in Ihrem Code. Vor der Verwendung als String Sie <bytesobject>.decode("utf-8") verwenden

>>> b"abcde".decode("utf-8") 
    u'abcde' 
    >>> b"slade".decode("utf-8") 
    u'slade' 
    >>> 

zu entschlüsseln Wenn Sie Fragen konfrontiert verwenden Code unten

b'Z\t.\xf0\xdd\xbb\x84\xb5\x9c\xf9\x080\x08\x00E\x00\x004\xa‌​7\xe6\x00\x000\x06\x‌​1ax\x98B\xf8\xb5h\xe‌​c\xce\x81\xf0\x92\x0‌​0\x16\xd4}\x9fd\x18\‌​xe8y\x94\x80\x10\x7f‌​\xfe*\xfa\x00\x00\x0‌​1\x01\x08\nT\xb2\xa9‌​ZC\xdb\xcan'.decode(‌​"utf-8", "ignore") 
+0

Danke für die Antwort, die ich bereits die Paketdaten entschlüssele und ich habe den Fehler, dass UTF-8 Byte in einigen Positionen nicht decodieren kann: –

+0

UnicodeDecodeError : 'utf-8' Codec kann Byte 0x9e an Position 4 nicht dekodieren: ungültiges Startbyte –

+0

Was ist die codierte Zeichenfolge? kannst du das drucken? auch haben Sie versucht, Unicode (

Verwandte Themen