如何在Kali Linux中发送pcap文件数据包并重传Wireshark捕获的数据包
Kali Linux下重传pcap数据包的操作方法
以下两种方案可以完全替代Windows下ColaSoft Packet Builder的提取、修改、重传Wireshark捕获数据包的需求:
方法1:使用tcpreplay(快速重放pcap的首选工具)
tcpreplay是专门用于pcap包重放的工具,操作简单,支持调整重放速度、循环次数等参数:
- 安装命令(Kali默认未预装时执行):
apt update && apt install tcpreplay - 提前准备工作:先用
ip a查询你用于发包的网卡名称(比如eth0、wlan0),如果只需要重放pcap中的特定数据包,先在Wireshark中筛选出目标包,单独导出为新的pcap文件即可 - 基础重放命令:
tcpreplay -i 你的网卡名 目标pcap文件路径 - 常用可调参数:
-t:忽略原始数据包的时间间隔,全速重放-x N:按N倍原始时间间隔的速度重放,比如-x 2就是2倍速重放-l N:设置循环重放的次数,默认只重放1次
方法2:使用Scapy(支持自定义修改数据包内容)
如果你需要先修改数据包的MAC、IP、端口、载荷等内容再发送,推荐用Kali默认预装的Scapy工具:
- 进入Scapy交互界面:执行
sudo scapy - 读取pcap文件中所有数据包:
packets = rdpcap("目标pcap文件路径") - 直接重放所有数据包:
sendp(packets, iface="你的网卡名") - 提取特定范围的数据包重放:比如只重放第3到第6个包,执行
sendp(packets[2:5], iface="你的网卡名")(索引从0开始计数) - 修改数据包后再重放示例:比如修改所有包的目标MAC地址后发送
for p in packets: p[Ether].dst = "aa:bb:cc:dd:ee:ff" sendp(packets, iface="你的网卡名")
注意事项
- 所有发包操作都需要root权限,命令前需加
sudo或提前切换到root用户 - 未获得授权的情况下不要在公共网络、生产网络中随意重放数据包,避免触发安全规则或造成网络故障
- 如果重放TCP会话数据包时出现连接中断,大概率是系统内核自动回复了RST包,可执行
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 目标IP -j DROP临时屏蔽RST包发送
内容的提问来源于stack exchange,提问作者DownTop_oil
相关产品推荐
相关产品推荐

