文章总结: pcap2har是一个用Rust编写的工具,可将PCAP格式的网络数据包转换为HAR格式,便于分析HTTP/HTTPS流量。该工具支持HTTP/1.x、HTTP/2、HTTPS和FastCGI协议,可与eCapture配合使用捕获解密后的HTTPS数据。用户可通过ChromeDevTools或Reqable等工具查看生成的HAR文件进行网络流量分析。该工具目前存在一些局限性,如不支持WebSocket和QUIC协议。
综合评分: 89
文章分类: 安全工具,网络安全,WEB安全
【小工具】基于 Rust 的 PCAP 到 HAR 转换工具
原创
Litt1eQ
Coder小Q
2025年11月26日 08:30
山东
【小工具】基于 Rust 的 PCAP 到 HAR 转换工具
本文咱们不聊密码学,来看一个小工具,这里回归我的老本行,哈哈哈哈,不是因为我懒(咳咳),最近呢,因为密码学的一个非常有趣的网站eprint[1]被DDoS了,然后搜索功能不好用(现在应该已经恢复了),因此呢,对就是这个原因,我们来看一个我写的小工具吧。
为啥我要写一个这个项目呢,因为我发现,现有的开源的都不符合我的需求,因为使用eCapture[2]可以获取解密后的https数据,但是没找到能做转换的,所以就干脆和AI进行一波合作,来实现出了这个项目,当然还是参考了之前找到的开源项目的[3],在这里感谢所有项目的作者。
其实eCapture出了个带有图形界面的项目eCaptureQ[4],这个的好处是可以实时的观看流量,但是,他对于数据的展示能力相对来说还是比较弱,这里,我其实之前在用Reqable[5],这个界面说实话还是非常好看的,然后呢,想着这个本身就能展示har文件,那不如就写一个转换器了。
项目简介
pcap2har[6] 是一个用 Rust 编写的高性能网络流量分析工具,用于将 PCAP(Packet Capture)格式的网络数据包文件转换为 HAR(HTTP Archive)格式的 JSON 文件。该工具支持多种网络协议的解析,包括 HTTP/1.x、HTTP/2、HTTPS(TLS 1.2)以及 FastCGI,为网络流量分析、API 调试和性能优化提供了便捷的解决方案。
技术背景
PCAP 格式
PCAP(Packet Capture)是一种通用的网络数据包捕获文件格式,由 libpcap 库定义。它记录了网络接口上捕获的原始数据包,包含完整的网络层、传输层和应用层数据。PCAP 文件通常由以下工具生成:
- tcpdump:Linux/Unix 系统上的命令行抓包工具
- Wireshark:跨平台的图形化网络协议分析器
- tshark:Wireshark 的命令行版本
- eCapture:基于 eBPF 的 SSL/TLS 流量捕获工具
PCAP 文件的数据结构包括文件头和数据包记录,每个数据包记录包含时间戳、捕获长度和原始数据包内容。
HAR 格式
HAR(HTTP Archive)是一个基于 JSON 的存档格式,用于记录 Web 浏览器与网站之间的交互信息。HAR 格式由 W3C Web Performance Working Group 制定,版本 1.2 规范定义了标准的数据结构。
HAR 文件的主要组成部分:
{
"log": {
"version": "1.2",
"creator": {...},
"entries": [
{
"startedDateTime": "2024-01-01T00:00:00.000Z",
"time": 123.45,
"request": {
"method": "GET",
"url": "https://example.com/api",
"httpVersion": "HTTP/1.1",
"headers": [...],
"queryString": [...],
"cookies": [...],
"postData": {...}
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [...],
"cookies": [...],
"content": {...}
},
"timings": {...}
}
]
}
}
HAR 格式的优势在于它提供了高层次的 HTTP 会话视图,包含了请求响应的完整信息以及性能时序数据,便于开发者理解和分析。
工作流程与 eCapture 集成
eCapture 简介
eCapture 是一个基于 eBPF(Extended Berkeley Packet Filter)技术的网络流量捕获工具。与传统的抓包工具不同,eCapture 可以在内核态拦截 SSL/TLS 库函数(如 OpenSSL、GnuTLS、BoringSSL)的调用,获取加密前的明文数据。
eBPF 技术原理:
- eBPF 允许在 Linux 内核中运行沙箱化的程序
- 通过 kprobe/uprobe 在函数入口/返回点插入探针
- 捕获函数参数和返回值,无需修改应用程序代码
- 将捕获的数据传递到用户态进行处理
eCapture 的工作机制:
- 在 SSL_write/SSL_read 等函数上设置 uprobe
- 捕获加密前/解密后的明文数据
- 重构完整的数据包(添加以太网帧、IP 头、TCP 头)
- 写入 PCAP/PCAPNG 文件
完整工作流
# 步骤 1:使用 eCapture 捕获 HTTPS 流量
sudo ecapture tls -m pcapng -i eth0 --pcapfile=capture.pcapng "tcp port 443"
# 步骤 2:转换为 HAR 格式
pcap2har capture.pcapng -o output.har
# 步骤 3:使用工具分析
# - Chrome DevTools: Network -> Import HAR
# - Reqable: File -> Open
# - 在线查看器: http://www.softwareishard.com/har/viewer/
使用指南
安装
前置依赖:
-
Rust 工具链(1.70+)
-
libpcap 开发库
-
Debian/Ubuntu:
sudo apt-get install libpcap-dev -
Fedora/CentOS:
sudo yum install libpcap-devel -
macOS:
brew install libpcap(通常已预装)
编译安装:
git clone https://github.com/Litt1eQ/pcap2har.git
cd pcap2har
cargo build --release
sudo cp target/release/pcap2har /usr/local/bin/
基本用法
# 转换 PCAP 文件
pcap2har capture.pcap -o output.har
# 从标准输入读取
tcpdump -i eth0 -w - | pcap2har - -o output.har
# 输出到标准输出
pcap2har capture.pcap > output.har
HAR 文件查看工具
Chrome DevTools
内置的网络分析工具,支持 HAR 导入导出:
- Network 面板 -> 右键 -> “Save all as HAR with content”
- Network 面板 -> 右键 -> “Import HAR file”
优势:无需安装、功能强大、支持瀑布图和时序分析
Reqable[5]
专业的 HTTP 调试工具,跨平台支持:
- 清晰的 UI 界面
- 强大的搜索过滤功能
- 支持请求重放
- 可编辑请求后重新发送
小结
这里呢,我们简单的实现了一下这个功能,当然这个库还有一些不完善的地方,比如ws不支持,quic不支持,等等,可能存在的各种各样的bug,后面佛系随缘修了,然后呢,其实最开始,我也想做实时的来着,但是吧,这个它本身是类似于外挂代理形式的存在,因此呢,不好直接做代理转发,所以呢,只能退而求其次,选择解析PCAP文件了,后面如果有其他更好的方式,其实也可以搞一下,主要是我懒的不想写UI,而且Reqable,恰好还提供了UI,还能方便我后续继续测试。好了,快乐的时光过得特别快,又到了说再见的时候了,咱们下次再见~
参考资料
- https://eprint.iacr.org/
- https://github.com/ehids/ecapture
- https://github.com/colinnewell/pcap2har-go
- https://github.com/gojue/ecaptureq
- https://reqable.com/
- https://github.com/Litt1eQ/pcap2har
- https://firefox-source-docs.mozilla.org/security/nss/legacy/key_log_format/
- https://wiki.wireshark.org/DisplayFilters
- https://www.tcpdump.org/manpages/tcpdump.1.html
- https://ebpf.io/
- http://www.softwareishard.com/blog/har-12-spec/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Coder小Q Litt1eQ《【小工具】基于 Rust 的 PCAP 到 HAR 转换工具》