需要一个简单的方法来本地修改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文件:
- 新PCAP文件:
谢谢你,有一个简单的方法来修改在每个分组数据的一个字节,而无需内置领域? –
您可以使用'packet.show2()'查看数据包的字段,并选择要修改的数据包。另一种方法是处理原始数据包(字节) - 将数据包视为可以使用'str(packet)'的字节(在python 2.x上) – coder