phreakocious/tcptrace-ng
GitHub: phreakocious/tcptrace-ng
tcptrace-ng是一款用于TCP流量分析的本地Web UI工具。
Stars: 0 | Forks: 0
# tcptrace-ng
本地 web UI 用于 [tcptrace](https://github.com/blitz/tcptrace) pcap 分析,带有交互式浏览器图表。

## 快速入门
```
# 1. 获取 tcptrace 二进制文件 — 选择一个:
git clone --recurse-submodules && cd tcptrace-ng && make vendor-tcptrace
# 或:brew install tcptrace # macOS
# 或:apt install tcptrace # Debian/Ubuntu
# 2. 安装 tcptrace-ng
pip install -e ".[dev]"
# 或:uv pip install -e ".[dev]"
# 3. 在 pcaps 目录中运行它
cd /path/with/pcaps
tcptrace-ng
```
浏览器打开到本地 NiceGUI 页面,布局为顶部栏 + 侧边栏 + 主面板。在标题栏中选择一个 pcap;侧边栏将填充该 pcap 的连接(可筛选)。点击任何连接即可立即分析它。主面板显示:
- 每个生成的 `.xpl` 图表(时间序列、吞吐量、RTT、owin、ssize)都有一个标签页,以交互式 Plotly 图表的形式渲染,支持平移/缩放。
- **tcptrace 输出** 按钮(右上角)在模态中打开原始彩色分析(绿色 = 良好,黄色 = 有趣,红色 = 差)。
- 标题栏中的复选框切换常见的 tcptrace 标志 — **DNS**(默认关闭,选择加入 → 添加 `-n` 以跳过主机名/端口号解析),**RTT**(`-r`),**警告**(`-w`),**校验和**(`--checksum --warn_printbadcsum` 以验证并显示错误的 IP/TCP 校验和 — 对于捕获 NIC 负载的碎片很有用),**0 轴**(`-zx`)。切换会重新运行分析并清除该标志组合的缓存。
- 当预检查扫描标志条件导致分析结果失真时,标题栏中会出现一个 `⚠ N 警告` 磁贴。目前检测到 NIC 负载(LSO/GSO/TSO/LRO/GRO) — 当捕获显示大于 1500 B 的 TCP 段时,捕获的 MSS、时间序列阶梯和重传检测都是不可靠的。点击查看完整文本。
### 隧道解封装
tcptrace 不了解现代覆盖封装,因此任何封装在 **Geneve**(UDP/6081)、**VXLAN**(UDP/4789)或 **GRE**(IP 协议 47)中的流量对它来说是不可见的。tcptrace-ng 在前 ~200 帧;如果存在,它会重新编写一次 pcap(剥离外部标题)并将解封装的副本传递给 tcptrace。解封装的 pcap 存储在 `.tcptrace//decap.pcap`。当运行解封装过程时,标题会显示 `decap: geneve`(或 `vxlan+gre` 等)。
裸 IP 内部(常见于 GRE)会获得一个合成的以太网标题,以便输出保持 DLT_EN10MB。IPv6 扩展标题(HBH/路由/目标/分片)已经由 tcptrace 的 `ipv6.c` 本地处理。
点击另一个连接以切换视图 --- 已分析的连接会从缓存中立即渲染。侧边栏页脚有一个“↓ xpl zip”按钮,可以将您在此会话中分析的每个连接捆绑在一起,以防您仍然想使用桌面 `xplot`/`jplot` 查看。
## 缓存
每个 pcap 的缓存都位于 `.tcptrace//` 中,紧邻每个 pcap。标题显示总缓存大小。**清除缓存** 会清除一切;**重新分析** 只会清除当前 pcap 的缓存。
将 `.tcptrace/` 添加到您的 `.gitignore`。
## CLI 选项
```
tcptrace-ng [DIR]
--port PORT bind port (default: pick free)
--no-browser don't auto-open browser
--timeout SECONDS per-subprocess timeout (default: 60)
--debug verbose logs
-V, --version
```
## 引入的 tcptrace
上游 tcptrace ([tcptrace.org](http://tcptrace.org)) 自 2006 年以来没有更新;其 TLS 证书已过期,源代码不再在现代工具链上构建。[github.com/blitz/tcptrace](https://github.com/blitz/tcptrace) 是实际的标准源 — 这是 FreeBSD 端口和 Homebrew 公式跟踪的源。tcptrace-ng 在 `vendor/tcptrace`(子模块 → [phreakocious/tcptrace](https://github.com/phreakocious/tcptrace)) 中引入了该分支,并为现代 macOS/Linux 工具链添加了两个构建修复:
- `mod_traffic.c`:静音了 `-Wreturn-type` 现在失败的未使用返回值警告。
- `tcpdump.c`:用 `pcap_dispatch()` 替换了私有的 `pcap_offline_read()`(已在现代 libpcap 中删除) — [msagarpatel 的 2021 年 Ubuntu 修复](https://github.com/blitz/tcptrace/pull/9)。
```
git submodule update --init # if you didn't clone with --recurse-submodules
make vendor-tcptrace # configure + build → vendor/tcptrace/tcptrace
```
运行器按以下顺序解析二进制文件:`$TCPTRACE_BIN`(如果设置)→ `vendor/tcptrace/tcptrace`(如果构建)→ `$PATH` 上的第一个 `tcptrace`。已安装的 wheels 跳过引入的副本,并回退到 `$PATH`。
## 开发
```
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest -q # unit tests
ruff check src tests # lint
ruff format src tests # format
```
## 可选依赖项
对于非 pcap 捕获(例如,来自旧工具的 `.cap`),安装 Wireshark CLI 工具(`capinfos`、`editcap`)。tcptrace-ng 将自动作为后备运行它们。
标签:Debian/Ubuntu, DEF CON 演示, Geneve, GRE, Linux系统, Pcap分析, pip安装, Plotly, Python开发, TCP/IP协议, tcptrace, TCP流量分析, VXLAN, Web界面, 交互式图表, 日志审计, 系统分析, 网络分析, 网络安全, 网络封装, 网络性能优化, 网络性能分析, 网络性能测试, 网络性能监控, 网络性能监控工具, 网络性能监控平台, 网络性能监控解决方案, 网络性能监控软件, 网络性能管理, 网络性能评估, 网络故障排查, 网络数据可视化, 网络流量统计, 网络诊断工具, 网络调试, 自动化, 逆向工具, 隐私保护