python+scapy进行修改pcap报文

本文介绍了如何使用Scapy库来读取并修改Wireshark抓取的PCAP文件中的源IP、目的IP、以太网地址和TCP标志,并生成新的PCAP文件。通过示例代码展示了如何遍历数据包,选择特定数据流修改TCP标志,并限制保留的数据包数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

针对wires hark抓取的报文进行一个简单的修改源IP和目的IP的方法并且生成25K大小的pcap包;对pcap包进行修改flags并且简单的修改数据包的数目,做一个笔记。


提示:以下是本篇文章正文内容,下面案例可供参考

一、scapy是什么?

数据包处理程序,其他深入的可以自行百度,一大堆,肯定比我讲的好
先安装scapy库,pip install -i https://pypi.tuna.tsinghua.edu.cn scapy
在这里插入图片描述多了不说,少了不唠,接下来就开干

二、使用步骤

1.引入库

代码如下(示例):

from scapy.all import *

packet = rdpcap("https_25K_443.pcap")  #读取pcap文件

New_Packet = []    #创建一个新的对象
ii = 0
for pkt in packet:

    if pkt['IP'].src == "10.0.0.3":
        pkt['IP'].src = "70.0.0.1"
        pkt['IP'].dst = "163.1.1.1"
        pkt['Ether'].src = "20:47:47:95:93:90"
        pkt['Ether'].dst = "d0:c5:d3:ed:62:15"
    else:
        pkt['IP'].dst = "70.0.0.1"
        pkt['IP'].src = "163.1.1.1"
        pkt['Ether'].src = "d0:c5:d3:ed:62:15"
        pkt['Ether'].dst = "20:47:47:95:93:90"
    if ii == 28:         #针对第28条数据流进行flags的替换,0x18十六进制转换成十进制是24
        pkt['TCP'].flags = 0x18

    pkt['IP'].chksum = None         #检验和会自动进行校验
    pkt['TCP'].chksum = None
    #print("new chksum:" + str(ch1))
    if ii<=32:           #只保留32条流
        New_Packet.append(pkt)
    ii += 1


wrpcap("https_25K_443_4.pcap", New_Packet)    #生成新的pcap

2.修改截图

修改之前修改之后对应代码中:

 if ii == 28:         #针对第28条数据流进行flags的替换,0x18十六进制转换成十进制是24
        pkt['TCP'].flags = 0x18

总结

提示:这里对文章进行总结:
还是要多总结,不然容易忘。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值