代码:
import socket, binascii, struct
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
while True:
print s.recv(2048)
输出:
Ek 9@@ F5 W jq stackexchangecom electronics
h hstackexchangecomDa scifiET@@ < stackoverflowcom meta , stackoverflowcom A meta , stackexchangecomG securityEe@@ + stackexchangecom scifi
你可以看到一些数据已被解码/解释,但其余数据并不确定为什么
有人可以帮忙吗?
答案 0 :(得分:2)
您正在打印包含任意二进制数据的原始UDP数据包。其中一些字节在printable范围内,但那些不在该范围内的字节转换为�。
您可以通过打印representation来更好地查看该数据,Code a network packet sniffer in python for Linux显示正常的可打印字节,并将不可打印的字节显示为十六进制转义码。为此,请将print
语句更改为:
print repr(s.recv(2048))
我怀疑你想要真正解码这些数据包。这很有可能,但它有点技术性,你应该先研究一下这个话题。 :) Silver Moon的这篇文章{{3}}看起来很有帮助。