代码:

import socket, binascii, struct

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
while True:
    print s.recv(2048)

输出:



如您所见,某些数据已被解码/解释,但其余的不确定为什么

有人可以帮忙吗?

最佳答案

您正在打印原始UDP数据包,其中包含任意二进制数据。其中一些字节在printable范围内,但不在该范围内的那些字节被转换为�。

通过打印其representation可以更好地查看该数据,该文件将正常显示可打印字节,将不可打印字节显示为十六进制转义码。为此,请将print语句更改为:

    print repr(s.recv(2048))

我怀疑您想真正解码这些数据包。这是很有可能的,但这有点技术性,您可能应该先研究一下该主题。 :) Silver Moon的这篇文章Code a network packet sniffer in python for Linux看起来很有帮助。

10-08 09:43
查看更多