我正尝试从pcap文件的每个数据包中提取特定的字节。所有数据包均为ICMP。
在数据部分,有一个字节会随着每个数据包而改变。它在每个数据包中都是相同的位置。我想要提取那个字节。
使用Scapy:
pkts = rdpcap('test.pcap')
pl = PacketList([p for p in pkts])
bytes(pl[12].payload)
返回以下内容:
返回以下内容:
b'E\x00\x00T]\xa7\x00\x00***J***\x01!A\xc0\xa88\x01\xc0\xa88o\x08\x004\xe9\xbf2\x00\x00^"\x87\xbe\x00\x0c2\xf4\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567'
我在三个星号中间放置了要提取的字节。但是,如果我打印出每个数据包的字节,则要提取的字节将位于不同的偏移量。
如果按照以下方式为每个数据包运行hexdump:
hexdump(bytes(pl[12].payload))
我想提取的特定字节始终在相同的位置,但我不知道如何提取。
如何使用scapy从pcap中提取特定字节?
按照这里的答案执行:Get specific bytes in payload from a pcap file 如果我执行相同的命令,它没有任何用处:
>>> hexdump(pkts[14][2].load[8])
0000 00 00 00 00 00 00 00 00 ........
>>>