【问题标题】:How to get payload from a packet with dpkt?如何使用 dpkt 从数据包中获取有效负载?
【发布时间】:2022-08-17 04:26:44
【问题描述】:
我很容易使用 scapy 获取 tcp 数据包的有效负载:
def handle_pkt(pkt):
try :
pay_load_tcp = pkt[IP].load
except :
pay_load_tcp = \"\"
for packet in PcapReader(filename):
if TCP in packet and packet[IP].dst == \'192.168.1.1\':
handle_pkt(packet)
如何使用 dpkt 库获得相同的有效负载(只是数据包上的文本信息)?
标签:
python
ip
scapy
packet
dpkt
【解决方案1】:
也许不是完美的方式,但我们可以使用 dpkt 库获取有效载荷,如下所示:
f = open(pcap_file,'rb')
pcap = dpkt.pcap.Reader(f)
for _, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
if not isinstance(eth.data,dpkt.ip.IP):
#print("NOT IP Packet")
continue
ip = eth.data
if isinstance(ip.data, dpkt.tcp.TCP):
if inet_to_str(ip.src)!='192.168.1.2' :
continue
tcp = ip.data
counter = counter + 1
#seq_num = tcp.seq
payload = bytes(ip.data)
print("counter = {} , Payload = {} ".format(counter,payload[32:]))
#if seq_num > cur_seq and
if payload[32:] != b'':
#cur_seq = seq_num
handle_pkt(payload[32:])