需要一个简单的方法来本地修改wireshark .pcap数据包的数据

需要一个简单的方法来本地修改wireshark .pcap数据包的数据

问题描述:

我一直在给Scapy一个尝试,但文档太稀疏了,我无法让它在简单编辑中发挥很好。需要一个简单的方法来本地修改wireshark .pcap数据包的数据

本质上,我正在寻找一种简单的Python解决方案,从.pcap中读取每个数据包,读取/修改某些数据/删除数据包并将其保存为.pcap。

例如:

给定一个SACN包,我需要读/修改优先级八位位组(108)和宇宙八位位组(113-114),并再次将其保存。

谢谢!

处理与scapy “.pcap” 文件,则需要从 'scapy.utils' 进口 'PcapWriter'。下面的例子演示了如何处理与scapy“.pcap”文件:如果您查看“.pcap”文件与wireshark你将看到分组已成功修改

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from scapy.all import * 

# to process .pcap files we need to 
# import 'PcapWriter' from 'scapy.utils' 
from scapy.utils import PcapWriter 

# initialize a 'net_old.pcap' file 
old_cap = PcapWriter("net_old.pcap", append=True, sync=True) 

# create a simple packet 
packet = IP(dst = "www.google.com")/ICMP()/"hi" 

# create a pcap with 5 such packets 
for _ in range(5): old_cap.write(packet) 

# now read the packets from 'net.pcap' 
packets = rdpcap('net_old.pcap') 

new_cap = PcapWriter("net_new.pcap", append=True) 

# and modify each packet 
for p in packets: 
    # modify any packet field, e.g. IP's dst 
    p[IP].dst = '8.8.8.8' 
    # write new packets in the new pcap file 
    new_cap.write(p) 

现在:


  • 老PCAP文件:

enter image description here


  • 新PCAP文件:

enter image description here

+0

谢谢你,有一个简单的方法来修改在每个分组数据的一个字节,而无需内置领域? –

+0

您可以使用'packet.show2()'查看数据包的字段,并选择要修改的数据包。另一种方法是处理原始数据包(字节) - 将数据包视为可以使用'str(packet)'的字节(在python 2.x上) – coder