使用 Scapy 获取原始数据
Getting raw data using Scapy
我正在尝试实现 Wireshark 的 "Follow TCP\UDP Stream" - 使用 scapy。意思是我只想要原始数据,而不是 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
这应该可以解决问题:
pkt = pcap[0]
hexdump(pkt[DNS])
这会起作用,因为您可以使用任何 Scapy 层来索引给定的数据包,因此要仅获取 Ethernet/IP/UDP/DNS 数据包的 DNS 部分,您只需要 pkt[DNS]
.
我正在尝试实现 Wireshark 的 "Follow TCP\UDP Stream" - 使用 scapy。意思是我只想要原始数据,而不是 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
这应该可以解决问题:
pkt = pcap[0]
hexdump(pkt[DNS])
这会起作用,因为您可以使用任何 Scapy 层来索引给定的数据包,因此要仅获取 Ethernet/IP/UDP/DNS 数据包的 DNS 部分,您只需要 pkt[DNS]
.