我正在解压缩UDP报头(它本身就是ICMP响应的有效负载)。我正在尝试获取源和目标端口号。
以下是代码的相关部分:
udp_head = struct.unpack('HHHH', data[48:56])
print udp_head
print binascii.hexlify(struct.pack('H', udp_head[1]))
运行它会得到以下结果:
(42389, 39554, 2048, 61179)
829a
这是错误的,部分正确的。目标端口(列表中的第二项)应该是33434.因此它在第一行打印错误。但在第二行,它是正确的(0x829A == 33434)。
为什么会发生这种情况?
答案 0 :(得分:1)
这会给你一个线索吗?
>>> print hex(33434)
0x829a
>>> print hex(39554)
0x9a82
>>>
这可能是字节顺序问题。