【发布时间】:2019-02-16 16:30:51
【问题描述】:
我使用 python 套接字发送一个 DNS 查询数据包套接字并监听响应。最后,我通过socket.recvfrom(2048)函数得到了一个DNS响应包,正如预期的那样。但奇怪的是,我将响应包与Wireshark抓取的包进行比较,发现有很多不同。
在第二张图片中会发现差异为3f。
Wireshark抓取的DNS响应包(高亮部分)
socket.recvfrom(2048)得到的DNS响应包
创建插座部分代码:
ipv = check_ip(dst)
udp = socket.getprotobyname(Proto.UDP)
if ipv == IPV.ERROR:
return None
elif ipv == IPV.IPV4:
return socket.socket(socket.AF_INET, socket.SOCK_DGRAM, udp)
elif ipv == IPV.IPV6:
return socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, udp)
else:
return None
接收DNS响应包部分代码:
remained_time = 0
while True:
remained_time = self.timeout - timeit.default_timer() + sent_time
readable = select.select([sock], [], [], remained_time)[0]
if len(readable) == 0:
return (-1, None)
packet, addr = sock.recvfrom(4096)
【问题讨论】:
-
请发布文字,而不是文字的图片。并告诉我们您发现有趣的差异部分。它们在我看来差不多。
-
你的意思是编码不同吗?
-
不,我的意思是字节流本身。将突出显示的部分与第二张图片中的字节进行比较。在第二张图片中将发现差异为
3f。