scapy PcapReader切割sh

2024-09-27 09:33:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用不同的IP和IPv6地址重写pcap文件。但是在我通过PcapReader提取一个packt并更改其IP地址后,输出pcap文件中的数据包被截断(也就是说,包的有效载荷丢失)。 下面是示例代码:

from scapy.all import PcapReader
from scapy.all import PcapWriter

def test():
    f = "input.pcap"
    writers = PcapWriter("output.pcap")

    with PcapReader(f) as pcap_reader:
        for pkt in pcap_reader:
            # somehow change the IP address
            writers.write(pkt=pkt)

test()

当我用WireShark打开.pcap文件时,它显示“捕获文件似乎在包的中间被剪短了”。 scapy中是否有维护有效负载的解决方案,或者是否有其他python包需要推荐?在

在这里我没有改变任何东西,结果是这样的: 输入文件: enter image description here

输出文件: enter image description here


Tags: 文件fromtestimageimportippcapall
1条回答
网友
1楼 · 发布于 2024-09-27 09:33:10

我认为问题出在你用来修改包的代码中(你没有显示),或者你的源文件已经有了短包(即snaplen小于packet len)。以下代码对我来说没有问题:

from scapy.all import PcapReader,PcapWriter,IP
writer = PcapWriter('output.pcap')
for pkt in PcapReader('input.pcap'):
    # somehow change the IP address
    pkt[IP].dst = '1.2.3.4'
    pkt[IP].src = '5.6.7.8'
    writer.write(pkt=pkt)

相关问题 更多 >

    热门问题