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.3k2926112天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站
<p align="center">
  <img src="https://raw.githubusercontent.com/appneta/tcpreplay/master/docs/guide/assets/images/logo.svg" alt="" width="96" height="96">
</p>
<h1 align="center">Tcpreplay</h1>

[![Test Status](https://github.com/appneta/tcpreplay/actions/workflows/github-actions-ci.yml/badge.svg)](https://github.com/appneta/tcpreplay/actions/workflows/github-actions-ci.yml)
[![Coverity Scan Build Status](https://scan.coverity.com/projects/12017/badge.svg)](https://scan.coverity.com/projects/12017)
[![CodeQL](https://github.com/appneta/tcpreplay/actions/workflows/codeql.yml/badge.svg)](https://github.com/appneta/tcpreplay/actions/workflows/codeql.yml)
[![cpp-linter](https://github.com/appneta/tcpreplay/actions/workflows/c-linter.yml/badge.svg)](https://github.com/appneta/tcpreplay/actions/workflows/c-linter.yml)
[![Website](https://img.shields.io/website-up-down-green-red/https/tcpreplay.appneta.com.svg)](https://tcpreplay.appneta.com)
[![Release](https://img.shields.io/github/release/appneta/tcpreplay.svg)](https://github.com/appneta/tcpreplay/releases)

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 是快速导览;该网站才是参考手册。

- [套件](#the-suite)
- [4.6 版新特性](#whats-new-in-46)
- [安装发行版](#installing-a-release)
- [从源码构建](#building-from-source)
  - [Autotools](#autotools)
  - [CMake](#cmake-recommended)
  - [性能:netmap、AF\_XDP、io\_uring](#performance-netmap-af_xdp-io_uring)
  - [重放到原始 IP(L3)接口](#replaying-onto-raw-ip-l3-interfaces)
  - [libtcpreplay C 库](#libtcpreplay-c-library)
  - [运行测试套件](#running-the-test-suite)
- [获取帮助](#getting-help)
- [贡献](#contributing)
- [许可证](#license)
- [作者](#authors)

套件
=========
网络重放:
--------------------------
* **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](#cmake-recommended) 现在是主要且推荐的构建系统
  (发布 tarball 仍使用 autotools)
* [io_uring](#performance-netmap-af_xdp-io_uring) 和
  [AF_XDP](#performance-netmap-af_xdp-io_uring) 快速路径数据包注入,
  与现有的 netmap 支持并存——两者所需的配置都比 netmap 更少,
  且无需打补丁的驱动
* [libtcpreplay](#libtcpreplay-c-library),一个静态 C 库,可将
  重放引擎直接嵌入到你自己的程序中
* 自动支持[重放到原始 IP (L3) 接口](#replaying-onto-raw-ip-l3-interfaces),
  如 WireGuard 和 tun 设备

完整的发布历史请参阅 [CHANGELOG](https://github.com/appneta/tcpreplay/blob/master/docs/CHANGELOG)。

安装发布版本
=====================
[![GitHub downloads](https://img.shields.io/github/downloads/appneta/tcpreplay/total.svg)](https://github.com/appneta/tcpreplay/releases)
[![SourceForge downloads](https://img.shields.io/sourceforge/dt/tcpreplay.svg)](https://sourceforge.net/projects/tcpreplay)

下载最新的[发布 tarball](https://github.com/appneta/tcpreplay/releases/latest)
(也在 [SourceForge](https://sourceforge.net/projects/tcpreplay) 上提供镜像),
然后:
```
tar xf tcpreplay-*.tar.xz && cd tcpreplay-*
./configure && make && sudo make install
```
发布压缩包中已附带预生成的 CLI 解析器和手册页,因此除 C 编译器和 libpcap 外无需其他依赖——仅当你从 git 检出构建,或需要 CMake、netmap、AF_XDP 或 io_uring 支持时,才需参考下方的[从源码构建](#building-from-source)。

更详细的平台特定说明见压缩包中附带的 `INSTALL` 文件(内容与这里的 [`docs/INSTALL`](https://github.com/appneta/tcpreplay/blob/master/docs/INSTALL) 相同)。

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

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

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

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

每个 `./configure` 标志都有对应的 CMake 等效项——请参阅 [`CMakeLists.txt`](https://github.com/appneta/tcpreplay/blob/master/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 需要的配置最多:

<details>
<summary><b>io_uring</b>(Linux,需要 <code>liburing-dev</code>——无需打补丁的驱动)</summary>

在安装了 `liburing-dev` 且内核支持
[io_uring](https://man7.org/linux/man-pages/man7/io_uring.7.html) 的 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
```
</details>

<details>
<summary><b>AF_XDP</b>(Linux,需要 <code>libxdp-dev</code>/<code>libbpf-dev</code> 以及支持 eBPF 的驱动)</summary>

在安装了 `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
```
</details>

<details>
<summary><b>netmap</b>(Linux/BSD,需要打过 netmap 补丁的网络驱动——侵入性最强,上限最高)</summary>

[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
```
</details>

重放到原始 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/`](https://github.com/appneta/tcpreplay/blob/master/examples)。

运行测试套件
------------------------
```
cd test
sudo make test
```
需要 root 权限(原始套接字/数据包注入),并会在配置的测试网卡上发送实时流量——不要针对你正在使用的接口运行它。`make test` 仅支持 autotools;有关使用 `--with-testnic`/`--with-testnic2` 配置测试网卡的信息,请参阅 [`docs/INSTALL`](https://github.com/appneta/tcpreplay/blob/master/docs/INSTALL)。

获取帮助
============
认为你发现了 bug,或者有疑问?请先搜索
[现有 issue](https://github.com/appneta/tcpreplay/issues),如果尚未涵盖,
再[新建一个](https://github.com/appneta/tcpreplay/issues/new)。请包含:

* Tcpreplay 版本(`-V`/`--version`)和平台
* 如果是构建问题:`configure`/`cmake` 和 `make` 的输出
* 如果是运行时问题:确切的命令行,以及你尝试做什么的描述(或
  附上 pcap)
* 其他任何看起来相关的内容——细节越多,我们能越快提供帮助

发现了特定的安全漏洞?请遵循
[`SECURITY.md`](https://github.com/appneta/tcpreplay/blob/master/SECURITY.md),而不是提交公开 issue。

我们也鼓励你先查看
[文档站点](https://tcpreplay.appneta.com)——包括
[指南](https://tcpreplay.appneta.com/guides/)、
[FAQ](https://tcpreplay.appneta.com/faq/) 和
[man 手册](https://tcpreplay.appneta.com/reference/man-pages/)——然后再发帖到
tcpreplay-users
[邮件列表](https://lists.sourceforge.net/lists/listinfo/tcpreplay-users),
并且请不要直接给维护者发邮件,这样其他人也能从你的问题中受益
(并帮助解答)。

贡献
============
1. [Fork] 仓库,如果尚未设置,请[设置 git][git]
2. 为你的功能或 bug 修复创建一个分支
3. 进行修改——有关编码
   标准以及贡献代码在许可证方面的含义,请参阅 [`docs/HACKING`](https://github.com/appneta/tcpreplay/blob/master/docs/HACKING)
4. 推送到你的 fork,并针对 `master` [发送 pull request][pr]

我们会在 GitHub 上与你一起审查和讨论;一旦被接受,它会被直接应用到
`master`。另请参阅
[开发者指南](https://tcpreplay.appneta.com/developers/),了解架构层面的材料——编写 DLT 插件、嵌入
libtcpreplay/libtcpedit,以及插件设计。

许可证
=======
Tcpreplay 采用 [GPLv3] 许可,并包含由
加利福尼亚大学伯克利分校、劳伦斯伯克利实验室及其
贡献者开发的软件。完整文本请参阅 [`LICENSE`](https://github.com/appneta/tcpreplay/blob/master/LICENSE)。

这涵盖为该项目编写的文件;随
Tcpreplay 套件分发的某些文件由其他作者拥有版权,并带有不同的
许可证,并在文件内作了相应标记。有关适用于特定文件或模块的
许可证问题,可以发送到
[tcpreplay-users 邮件列表](https://sourceforge.net/p/tcpreplay/mailman/tcpreplay-users/)。

作者
=======
Tcpreplay 由 Aaron Turner 创建。Fred Klassen([AppNeta by Broadcom][AppNeta])
于 2013 年接手维护,从 4.0 版本开始,添加了上文所述的
性能和流量测试功能。

[GPLv3]:    http://www.gnu.org/licenses/gpl-3.0.html
[netmap]:   https://github.com/luigirizzo/netmap
[flow]:     https://en.wikipedia.org/wiki/Traffic_flow_(computer_networking)
[NetFlow]:  http://www.cisco.com/go/netflow
[Cygwin]:   http://www.cygwin.com/
[Wireshark]: https://www.wireshark.org
[tcpdump]:  http://www.tcpdump.org
[Cisco]:    http://www.cisco.com
[AppNeta]:  https://www.broadcom.com/products/software/network-management/appneta
[git]:      https://help.github.com/articles/set-up-git
[Fork]:     https://help.github.com/articles/fork-a-repo
[pr]:       https://help.github.com/articles/using-pull-requests
下载工具