Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
tcpreplay — 以任意速度编辑和重放捕获的网络流量——一套适用于 *NIX 和 Windows 的 pcap 工具。 | Kitploit
工具/GitHubGitHub/appneta/tcpreplay
数据包嗅探与分析漏洞分析IDS/IPS规避网络安全渗透测试
GitHubappneta/tcpreplay

tcpreplay

以任意速度编辑和重放捕获的网络流量——一套适用于 *NIX 和 Windows 的 pcap 工具。

查看仓库
1.3k292524天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Tcpreplay

Test Status Coverity Scan Build Status CodeQL cpp-linter Website Release

Tcpreplay 是一套以 [GPLv3] 许可发布的实用工具集,适用于 UNIX(以及在 [Cygwin] 下的 Windows),用于编辑和重放此前由 [tcpdump] 和 [Wireshark] 等工具捕获的网络流量。它会将流量分类为客户端或服务器,重写第 2/3/4 层头部,并通过交换机、路由器、防火墙、NIDS 和 IPS 将其重放回网络——速率可从涓涓细流直至全线路速率。Tcpreplay 支持单网卡和双网卡模式,可用于测试嗅探设备和在线(in-line)设备。

Tcpreplay 被众多防火墙、IDS、IPS、NetFlow 及其他网络厂商、企业、大学、实验室和开源项目所使用。如果您的组织使用 Tcpreplay,请告知我们您是谁以及将其用于何种用途,以便我们持续优先开发真正重要的功能。

自 4.0 起,Tcpreplay 还专门面向 [IP Flow][flow]/[NetFlow] 设备测试:精确的高速重放时序与结果报告、每秒流数(fps)统计,以及用于调优流产品超时设置的流过期分析——根据 pcap 文件中的流大小,最高可达每秒数十万条流。

📖 完整文档位于 https://tcpreplay.appneta.com —— 包括入门指南、每个工具一页的说明、操作配方、套件背后的概念、手册页以及常见问题解答。本 README 是快速导览;该网站才是参考手册。

  • 套件
  • 4.6 版新特性
  • 安装发行版
  • 从源码构建
    • Autotools
    • CMake
    • 性能:netmap、AF_XDP、io_uring
    • 重放到原始 IP(L3)接口
    • libtcpreplay C 库
    • 运行测试套件
  • 获取帮助
  • 贡献
  • 许可证
  • 作者

套件

网络重放:

  • tcpreplay / tcpreplay-edit —— 以任意速度将 pcap 文件重放到网络上,可选择在重放过程中即时编辑数据包(tcpreplay-edit)或随机化 IP 地址(tcpreplay)
  • tcpliveplay —— 在实时网络上重放捕获的 TCP 会话,使远程服务器真正做出响应(由 Yazan Siam 贡献,[Cisco] 赞助,用于测试直至应用层的完整网络栈——普通的 tcpreplay 通常停留在第 2 层)

Pcap 文件编辑器与实用工具:

  • tcpprep —— 多遍 pcap 预处理器,将数据包分类为客户端或服务器,并写出供 tcpreplay/tcprewrite 使用的缓存文件
  • tcprewrite —— 重写 pcap 文件中的 TCP/IP 和第 2 层数据包头部
  • tcpbridge —— 使用 tcprewrite 的重写逻辑桥接两个网段
  • tcpcapinfo —— 原始 pcap 文件解码器与调试器

4.6 版本的新特性

  • CMake 现在是主要且推荐的构建系统 (发布 tarball 仍使用 autotools)
  • io_uring 和 AF_XDP 快速路径数据包注入, 与现有的 netmap 支持并存——两者所需的配置都比 netmap 更少, 且无需打补丁的驱动
  • libtcpreplay,一个静态 C 库,可将 重放引擎直接嵌入到你自己的程序中
  • 自动支持重放到原始 IP (L3) 接口, 如 WireGuard 和 tun 设备

完整的发布历史请参阅 CHANGELOG。

安装发布版本

GitHub downloads SourceForge downloads

下载最新的发布 tarball (也在 SourceForge 上提供镜像), 然后:

tar xf tcpreplay-*.tar.xz && cd tcpreplay-*
./configure && make && sudo make install

发布压缩包中已附带预生成的 CLI 解析器和手册页,因此除 C 编译器和 libpcap 外无需其他依赖——仅当你从 git 检出构建,或需要 CMake、netmap、AF_XDP 或 io_uring 支持时,才需参考下方的从源码构建。

更详细的平台特定说明见压缩包中附带的 INSTALL 文件(内容与这里的 docs/INSTALL 相同)。

从源码构建

从 git 检出构建需要 python3 和 asciidoctor(任一构建系统均可),以便从 *_opts.def 文件生成 CLI 选项解析器和手册页——这在 4.6 中取代了 GNU AutoGen 用于此目的(AutoGen 已停止维护;而这些工具并未停止维护)。AutoGen 本身仅仍用于一个内部头文件(src/tcpedit/tcpedit_stub.h)——参见 scripts/autoopts/README.md。构建发布压缩包时无需任何上述内容,因为其中已附带这些生成好的文件。

Autotools

./autogen.sh   # only needed once, from a git checkout
./configure
make
sudo make install

CMake(推荐)

自 4.6 起,该套件也可以使用 CMake(3.16+)构建——这是编译 Tcpreplay 的推荐且首选方式。 Autotools 仍然提供并用于发布 tarball,但最终将被弃用,因此新的脚本/打包应以 CMake 为目标。

cmake -B build
cmake --build build
sudo cmake --install build

每个 ./configure 标志都有对应的 CMake 等效项——请参阅 CMakeLists.txt 顶部的表格。以下是几个示例:

# debug build with support for the -d option
cmake -B build -DENABLE_DEBUG=ON

# AddressSanitizer or ThreadSanitizer build
cmake -B build -DENABLE_ASAN=ON
cmake -B build -DENABLE_TSAN=ON

# custom libpcap install, static linking, custom tcpdump path
cmake -B build -DWITH_LIBPCAP=/usr/local/opt/libpcap \
               -DENABLE_STATIC_LINK=ON -DWITH_TCPDUMP=/usr/sbin/tcpdump

# force a specific packet injection method
cmake -B build -DFORCE_INJECT_PCAP_SENDPACKET=ON

# several configurations side by side
cmake -B build-debug -DENABLE_DEBUG=ON
cmake -B build-release

cmake --build build --target manpages 会重新生成 man 手册页 (需要 python3 + asciidoctor);直接运行 cmake --build build 不会改动它们。 使用 CMake Tools 扩展的 VS Code 用户只需打开仓库文件夹,并在提示时选择一个配置预设即可。

性能:netmap、AF_XDP、io_uring

如果默认的套接字路径速度不够快,Tcpreplay 有三种开销更低的方式将数据包直接推送到网卡。大致按以下顺序尝试——io_uring 需要的配置最少,netmap 需要的配置最多:

io_uring(Linux,需要 liburing-dev——无需打补丁的驱动)

在安装了 liburing-dev 且内核支持 io_uring 的 Linux 系统上会被检测到。 数据包仍然通过常规的 PF_PACKET 原始套接字发出,但发送操作通过 io_uring 队列异步提交,从而减少每个数据包的系统调用开销。

sudo apt-get install liburing-dev
cmake -B build && cmake --build build && sudo cmake --install build
sudo tcpreplay -i eth0 --io-uring test.pcap
AF_XDP(Linux,需要 libxdp-dev/libbpf-dev 以及支持 eBPF 的驱动)

在安装了 libxdp-dev 和 libbpf-dev 的 Linux 系统上检测到。当 选中(--xdp)时,内核网络栈被绕过,数据包 直接通过支持 eBPF 的驱动发送——在普通 网卡上达到全线速,可与商业流量生成器相媲美,且无需修改 驱动。

sudo apt-get install libxdp-dev libbpf-dev
cmake -B build && cmake --build build && sudo cmake --install build
sudo tcpreplay -i eth0 --xdp test.pcap
netmap(Linux/BSD,需要打过 netmap 补丁的网络驱动——侵入性最强,上限最高)

[netmap] 在重放期间绕过网络驱动,直接写入网卡的 TX 缓冲区。这是三种方案中侵入性最强的一种——该接口处于活动状态时,其上的网络栈会完全失效,所以不要在你通过 SSH 登录所用的接口上进行测试——但在受支持的硬件上具有最高的吞吐量上限。

从[项目页面][netmap]下载并安装 netmap。如果你将其解压到 /usr/src 或 /usr/local/src,它会被自动识别;否则请在构建时指定其路径:

cmake -B build -DWITH_NETMAP=/home/fklassen/git/netmap
cmake --build build
sudo cmake --install build

重放到原始 IP(L3)接口

在 Linux 上,tcpreplay 可以直接重放到仅支持第三层的接口,例如 WireGuard 和 tun 设备——无需构建选项或命令行标志。输入文件中的任何 第二层头部(包括 VLAN 标签的以太网、Linux SLL、 回环等)都会被自动剥离,数据包以裸 IPv4/IPv6 形式发送,并带有正确的协议,这正是 WireGuard 等驱动所要求的:

sudo tcpreplay -i wg0 test.pcap

请注意,非 IP 数据包(例如 ARP)无法在这些接口上发送,并会被报告为失败,而且这些接口不支持 --io-uring。

libtcpreplay C 库

自 4.6 起,该套件会安装 libtcpreplay,这是一个静态库,通过 tcpreplay_api.h 暴露与 tcpreplay 二进制文件所使用的相同的重放引擎。 应用程序可以通过编程方式重放 pcap 文件并读取实时统计信息,而无需 fork 该二进制文件并抓取其输出:

cc myapp.c $(pkg-config --cflags --libs --static libtcpreplay) -o myapp

头文件安装到 include/tcpreplay/ 下;两套构建系统都会安装该库及其 libtcpreplay.pc。完整示例程序见 examples/。

下载工具