AlexeyVasilev/PcapConstrictorWinPacket

GitHub: AlexeyVasilev/PcapConstrictorWinPacket

这是一个用于 Windows 的实时流量捕获工具,通过压缩加密载荷来优化存储和分析效率。

Stars: 0 | Forks: 0

# PcapConstrictorWinPacket PcapConstrictorWinPacket 是 PcapConstrictor 项目家族中实用的 Windows 实时记录器。它使用 Npcap/libpcap 捕获流量,然后在保留足够数据包结构以便 Wireshark 等工具分析的同时,减少加密的 TLS 和 QUIC 有效载荷字节。它的作用和策略范围与 PcapConstrictorAFPacket 类似,但针对 Windows 平台,并输出经典的 PCAP 文件。 与主 PcapConstrictor 离线工具相比,PcapConstrictorWinPacket 故意支持更小的策略面。在 `v0.1.0` 版本中,它支持通过 `tls.app_data_continuation_policy = final_only` 策略进行 TLS 应用数据压缩,以及已知 DCID 的 QUIC 短头压缩,但不支持 TLS 流或批量连续策略、PCAPNG 输出或 TLS/QUIC 解密。 ## 最新版本 首个发布版本是 `v0.1.0`。 `PcapConstrictorWinPacket-v0.1.0-windows-x64.zip` 该软件包包含可执行文件、示例配置、README、更新日志、发布说明和 Apache-2.0 许可证。它不包含 Npcap;使用实时捕获前请单独安装 Npcap 运行时。 ## 项目家族 | 项目 | 作用 | 使用场景 | |---|---|---| | [PcapConstrictor](https://github.com/AlexeyVasilev/PcapConstrictor) | 主离线 PCAP/PCAPNG 压缩工具 | 当您已拥有捕获文件,并需要最丰富的策略支持,包括 TLS final_only/stream/bulk、QUIC、PCAPNG、重新膨胀/恢复、校验和策略、统计信息和决策日志时。 | | [PcapConstrictorAFPacket](https://github.com/AlexeyVasilev/PcapConstrictorAFPacket) | Linux AF_PACKET 实时记录器 | 当您需要用户态 PcapConstrictor 风格策略的实用 Linux 实时捕获时。支持 TLS final_only 和 QUIC CID 感知的短头压缩,但不支持 TLS stream/bulk。 | | [PcapConstrictorWinPacket](https://github.com/AlexeyVasilev/PcapConstrictorWinPacket) | Windows Npcap/libpcap 实时记录器 | 当您需要使用 Npcap 进行 Windows 实时捕获,并拥有与 AFPacket 类似策略范围的工具时。支持 TLS final_only 和已知 DCID 的 QUIC 压缩,但不支持 TLS stream/bulk。 | | [PcapConstrictorBPF](https://github.com/AlexeyVasilev/PcapConstrictorBPF) | 实验性 Linux TC eBPF 记录器 | 当您需要一个演示 TC 钩子、BPF 映射、对验证器友好的解析,以及更小的实时捕获策略子集的研究性 eBPF 项目时。 | ## 当前状态 `v0.1.0` 是首个发布版本。它提供: ## 命令行界面 支持的命令: ``` PcapConstrictorWinPacket --help PcapConstrictorWinPacket --list-interfaces PcapConstrictorWinPacket --config config.ini PcapConstrictorWinPacket --config config.ini --offline-input input.pcap ``` `--offline-input` 运行确定性的离线管道: `input.pcap -> PcapReader -> OfflinePacketFeed -> LiveCapturePolicy -> PcapWriter -> output.pcap` `--config config.ini` 当编译了 Npcap 支持时,运行实时捕获。 `--list-interfaces` 通过 Npcap/libpcap 枚举接口,以便您可以将适配器名称复制到配置中。 离线模式仍然可以通过 `--config config.ini --offline-input input.pcap` 使用,并且不需要实时 Npcap 捕获支持。 ## 预编译二进制文件的运行时要求 Windows x64 预编译二进制包的要求: - Windows x64 - 单独安装 Npcap 运行时 - 根据 Npcap 安装选项,可能需要管理员权限 预编译包不包含 Npcap。使用 `--list-interfaces` 和在启用 Npcap 的构建中进行实时捕获,都需要 Npcap 运行时。 官方 `v0.1.0` Windows x64 预编译二进制文件使用 MSVC 构建。在该发布配置中,可执行文件对 `wpcap.dll` 和 `Packet.dll` 使用延迟加载,因此即使 Npcap 运行时 DLL 缺失,`--help` 和离线模式仍可启动,并且 `--list-interfaces` 或实时捕获可以打印清晰的控制台错误,解释必须单独安装 Npcap 运行时。 ## 从源码构建 从源码构建的要求: - C++20 编译器 - CMake - 可用的 Npcap SDK,并通过 `NPCAP_SDK_DIR` 传递以进行实时捕获构建 Npcap SDK 仅在从源码构建时需要。仅运行预编译二进制文件不需要它。 如果提供了 `NPCAP_SDK_DIR`,则生成的构建可以包含 `--list-interfaces` 和实时捕获支持。使用该二进制文件的机器上仍需安装 Npcap 运行时。 推荐的发布工具链: - MSVC 是官方发布二进制文件的推荐工具链 - MSVC 启用 Npcap 的构建对 `wpcap.dll` 和 `Packet.dll` 使用延迟加载 - 这是 `v0.1.0` 中支持对缺失 Npcap 运行时进行优雅诊断的路径 示例: ``` cmake -S . -B build -DNPCAP_SDK_DIR="C:\Path\To\Npcap-SDK" cmake --build build --config Release ``` 也支持仅离线构建: - 离线工具和离线兼容性工作流可以在没有 `NPCAP_SDK_DIR` 的情况下构建 - 当 `NPCAP_SDK_DIR` 缺失时,CMake 可以回退到仅离线构建 - 仅离线构建不提供 `--list-interfaces` 或实时捕获 - 离线兼容性工作流在如此构建后,仍可在没有实时 Npcap 支持的情况下运行 - 仅离线构建和离线模式不需要 Npcap 运行时 当前非 MSVC 限制: - MinGW/GCC 启用 Npcap 的构建目前不提供与 MSVC 发布构建相同的优雅缺失运行时保证 - 如果 `wpcap.dll` 或 `Packet.dll` 在 Windows DLL 搜索路径中缺失,Windows 加载器可能在 `main()` 之前失败 - 在这种情况下,应用程序无法打印其自身的缺失运行时错误,甚至 `--help` 可能无法启动 - 对于 MinGW 开发构建,请正常安装 Npcap 或确保 Npcap DLL 目录可被 Windows 发现 如果您想要一个明确的仅离线构建: ``` cmake -S . -B build -DPCAP_CONSTRICTOR_WINPACKET_ENABLE_NPCAP_INTERFACE_LISTING=OFF cmake --build build --config Release ``` ## 预编译二进制软件包 发布的 `v0.1.0` Windows x64 软件包包含: ``` PcapConstrictorWinPacket-v0.1.0-windows-x64.zip PcapConstrictorWinPacket.exe config.example.ini README.md CHANGELOG.md RELEASE_NOTES.md LICENSE ``` 软件包说明: - 该软件包不包含 Npcap - 该软件包不应捆绑或再分发 Npcap - 使用 `--list-interfaces` 或实时捕获前,请从 Npcap 官方网站安装 Npcap - 官方 `v0.1.0` 软件包使用 MSVC x64 构建 - 在 MSVC 发布构建中,缺失 `wpcap.dll` 或 `Packet.dll` 应在执行 `--list-interfaces` 或实时捕获之前通过控制台错误报告 - 非 MSVC 启用 Npcap 的构建如果 Npcap DLL 无法被 Windows 发现,仍可能在应用程序启动前失败 - Npcap SDK 不是预编译二进制软件包用户所必需的 ## 快速入门 对于启用 Npcap 的构建或安装了 Npcap 运行时的预编译二进制文件: 1. 列出接口: ``` PcapConstrictorWinPacket.exe --list-interfaces ``` 2. 将 `config.example.ini` 复制为 `config.ini`,然后将接口名称复制进去。 3. 运行有时间限制的捕获: ``` PcapConstrictorWinPacket.exe --config config.ini ``` 捕获部分示例: ``` [capture] backend = npcap interface = \Device\NPF_{GUID} output = live-test.pcap promiscuous = true default_snaplen = 65535 max_capture_len = 65535 max_packets = 1000 duration_sec = 30 read_timeout_ms = 100 ``` 仅离线构建仍可通过 `--config config.ini --offline-input input.pcap` 运行确定性的离线管道,但它们不支持 `--list-interfaces` 或实时捕获。仅离线构建和离线模式不需要 Npcap 运行时。 ## 未来工作 未来的跨工具链改进可以用一个基于 `LoadLibrary` 和 `GetProcAddress` 的小型运行时加载 Npcap API 包装器来替换直接的 libpcap 导入,但这故意被排除在 `v0.1.0` 的范围之外。 ## 环回示例 使用此接口捕获本地主机流量: ``` interface = \Device\NPF_Loopback ``` 当您想要检查同一台机器上进程之间的流量时,环回捕获非常有用。Npcap 将其公开为 `DLT_NULL`,PcapConstrictorWinPacket 在输出的 PCAP 中保留该链路类型。 ## 混杂模式 - `promiscuous = true` 通过 `pcap_open_live` 请求混杂模式 - `promiscuous = false` 以非混杂模式打开适配器 - 在交换式以太网上,混杂模式不能保证能看到所有局域网流量 - 在 Wi-Fi 上,混杂模式与监视模式不同,并且可能受到驱动程序、硬件或 Npcap 行为的限制 - 环回捕获在实质上不使用混杂模式 - 根据 Npcap 的安装模式,实时捕获和混杂捕获可能需要管理员权限 ## 捕获统计信息和丢包 - 最终的实时摘要包含应用程序计数器和一个单独的 `Npcap/libpcap stats` 部分 - `ps_drop` 可能指示在数据传递给应用程序之前丢弃的数据包 - `ps_ifdrop` 可能不可用或依赖于后端 - 精确的 `pcap_stats` 语义是平台相关的,并且与应用程序级别的数据包计数不相同 - 高丢包数可能意味着需要降低流量、提高性能、使用更窄的捕获设置或减少处理开销 ## 限制 - 面向 Windows 的项目 - 实时捕获和 `--list-interfaces` 需要 Npcap 运行时 - 仅支持经典 PCAP 输出 - 不支持 pcapng 输出 - 不支持 TLS 或 QUIC 解密 - 不支持 WFP、NDIS 或自定义驱动程序后端 - 不支持 `Packet.dll` 底层后端 - 不支持监视模式 - 尚不支持 BPF 或捕获过滤器 - 不支持 TLS 流或批量连续策略 - 不支持 QUIC 迁移 - 不支持的链路类型会明确失败 ## 验证检查清单 请参阅 [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md) 了解 `v0.1.0` 的打包和冒烟测试检查清单。 ## 测试 `tests/fixtures/golden/` 下的黄金固定文件用于离线兼容性检查,以便在 Windows 代码库独立发展的同时,策略行为可以与 AFPacket 和主 PcapConstrictor 的 `final_only` 工作流保持一致。 ## 发布说明 请参阅 [RELEASE_NOTES.md](RELEASE_NOTES.md) 了解 `v0.1.0` 的发布说明,并参阅 [CHANGELOG.md](CHANGELOG.md) 了解项目变更摘要。 ## 许可证 Apache License 2.0。请参阅 [LICENSE](LICENSE)。 Copyright 2026 Alexey Vasilev。
标签:Bash脚本, Npcap, PCAP, PCAP录制器, QUIC, QUIC分析, TLS, TLS监控, Wireshark, 加密流量处理, 句柄查看, 实时PCAP记录, 实时记录, 有效载荷减少, 流量压缩, 网络安全, 网络工具, 防御工具, 隐私保护