我正在尝试使用scapy实现Wireshark的“Follow TCP \ UDP Stream”。意思是我只想要原始数据,而不是tcp \ udp包的所有其他属性。
当我这样做时:
pcap = rdpcap('dummy.pcap')
hexdump(pcap[0])
我得到整个数据包,意思是来源,目的地等。
假设我收到的DNS请求如下:
0000 52 54 00 12 35 02 08 00 27 78 07 78 08 00 45 00 RT..5...'x.x..E.
0010 00 3E 00 40 00 00 80 11 1E 51 0A 00 02 0F 08 08 .>.@.....Q......
0020 08 08 04 01 00 35 00 2A 41 83 31 1E 01 00 00 01 .....5.*A.1.....
0030 00 00 00 00 00 00 04 74 69 6D 65 07 77 69 6E 64 .......time.wind
0040 6F 77 73 03 63 6F 6D 00 00 01 00 01 ows.com.....
我只想得到:
00000000 31 1e 01 00 00 01 00 00 00 00 00 00 04 74 69 6d 1....... .....tim
00000010 65 07 77 69 6e 64 6f 77 73 03 63 6f 6d 00 00 01 e.window s.com...
00000020 00 01
答案 0 :(得分:0)
这应该可以解决问题:
pkt = pcap[0]
hexdump(pkt[DNS])
这样做是因为您可以使用任何Scapy层来索引给定的数据包,因此只需要获得以太网/ IP / UDP / DNS数据包的DNS部分,您只需pkt[DNS]
。