biandratti/huginn-net
GitHub: biandratti/huginn-net
一个纯 Rust 实现的多协议被动指纹识别库,结合 p0f 风格的 TCP 指纹和 JA4 风格的 TLS 分析,用于操作系统、浏览器和 TLS 客户端识别。
Stars: 155 | Forks: 13

# Huginn Net - 多协议被动指纹识别
[](https://docs.rs/huginn-net)
[](https://crates.io/crates/huginn-net)
[](https://crates.io/crates/huginn-net)
[](https://github.com/biandratti/huginn-net#license)
[](#ci)
[](#security)
[](https://deps.rs/repo/github/biandratti/huginn-net)
[](https://codecov.io/github/biandratti/huginn-net)
**Huginn Net 结合了 p0f TCP 指纹识别与 JA4 TLS 客户端分析**,在实现与原始 p0f 工具相同检测精度的同时,增加了现代 TLS 指纹识别功能。该 Rust 实现已经过真实网络流量的充分验证,并能持续提供可靠的指纹识别结果。
#### 为什么选择 Huginn Net?
- **无需第三方工具** - 不需要 tshark、wireshark 或外部工具
- **与 p0f 精度一致** - 经过大量设备测试验证
- **现代 Rust 实现** - 内存安全和零成本抽象
- **生产级性能** - 以与原始 p0f 相当的速度在约 3.1ms 内处理数据包
- **类型安全架构** - 在编译时防止整类错误
- **全面的测试** - 完整的单元测试和集成测试覆盖
- **简单的集成** - 纯 Rust 实现,无需系统库
- **活跃的开发** - 持续改进和维护
#### 什么是被动流量指纹识别?
被动流量指纹识别是一种无需发送任何探测即可推断远程主机和应用程序信息的技术。通过分析正常网络会话期间交换的 TCP/IP 数据包和 TLS 握手的特征,Huginn Net 可以提供以下洞察:
- **操作系统** - 使用受 p0f 启发的 TCP 指纹识别来确定 OS 类型、版本和网络栈
- **应用程序与浏览器** - 使用 HTTP 头部和 JA4 TLS 客户端指纹识别进行精确的应用程序识别
- **网络基础设施** - 检测中间设备、代理和负载均衡器
- **客户端能力** - TLS 版本、密码套件和支持的扩展
### Huginn Net 支持的网络栈分析 (OSI 模型)
| 层 | 协议 / 功能 | Huginn Net 分析 |
|-------|---------------------------|---------------------------------------------|
| 7 | TLS | JA4 (FoxIO 风格) |
| 7 | HTTP | HTTP/1 & HTTP/2 - 头部, User-Agent, 语言 |
| 4 | TCP | OS 指纹识别 (p0f 风格) |
#### 实际应用:
- **网络安全分析** - 无需主动扫描即可识别设备、应用程序和 TLS 客户端
- **资产发现** - 被动且安全地映射网络基础设施和应用程序栈
- **威胁检测** - 检测隐藏系统、可疑 TLS 客户端和恶意应用程序
- **应用程序监控** - 跨网络跟踪浏览器类型、版本和 TLS 能力
- **研究与取证** - 分析流量模式、TLS 使用情况并改善安全态势
- **合规性监控** - 跟踪设备类型、OS 版本和 TLS 配置
## 📚 Huginn Net Crates
| Crate | 描述 | 文档 |
|-------|-------------|---------------|
| **[huginn-net](huginn-net/README.md)** | **TCP-HTTP-TLS 分析** - 完整的多协议网络指纹识别 | [📖 使用指南](huginn-net/README.md) |
| **[huginn-net-tcp](huginn-net-tcp/README.md)** | **TCP 分析** - OS 指纹识别、MTU 检测、运行时间估算 | [📖 TCP 指南](huginn-net-tcp/README.md) |
| **[huginn-net-http](huginn-net-http/README.md)** | **HTTP 分析** - 浏览器检测、HTTP/1.x & HTTP/2 指纹识别 | [📖 HTTP 指南](huginn-net-http/README.md) |
| **[huginn-net-tls](huginn-net-tls/README.md)** | **TLS 客户端分析** - JA4 指纹识别、TLS 版本检测 | [📖 TLS 指南](huginn-net-tls/README.md) |
### **我应该使用哪个库?**
- **多协议扫描**:使用 **[huginn-net](huginn-net/README.md)** 进行完整的网络分析
- **仅 TCP**:使用 **[huginn-net-tcp](huginn-net-tcp/README.md)** 进行 OS 检测和 TCP 分析
- **仅 HTTP**:使用 **[huginn-net-http](huginn-net-http/README.md)** 进行浏览器和 Web 服务器检测
- **仅 TLS**:使用 **[huginn-net-tls](huginn-net-tls/README.md)** 进行 JA4 指纹识别和 TLS 分析
- **高级**:直接使用 `huginn-net-db` 进行自定义签名解析
## 🚀 快速开始
### 选择您的方式
**用于多协议分析:**
```
[dependencies]
huginn-net = "1.7.3" # Complete analysis suite
```
**用于特定协议:**
```
[dependencies]
huginn-net-tcp = "1.7.3" # TCP/OS fingerprinting only
huginn-net-http = "1.7.3" # HTTP analysis only
huginn-net-tls = "1.7.3" # TLS/JA4 analysis only
```
### 使用与示例
有关详细的使用示例、安装指南和完整的代码示例:
**📖 [完整使用指南 - huginn-net 模块](huginn-net/README.md)**
**📚 [示例与教程](examples/README.md)** - 包含以下工作示例:
- **实时网络捕获** - 实时分析
- **PCAP 文件分析** - 离线流量分析
- **特定协议示例** - TCP、HTTP、TLS 专项分析
## 📊 性能与基准测试
### 多协议性能摘要
| 协议 | 检测速度 | 完整分析 | 主要用例 |
|----------|-----------------|---------------|------------------|
| **TCP** | 83.3M pps | 975.6K pps | OS 指纹识别, MTU 检测 |
| **HTTP** | 142.9M pps | 526.6K pps | 浏览器/服务器检测 |
| **TLS** | 48M pps | 45K pps | JA4 指纹识别, TLS 分析 |
### 关键性能亮点
- **超快检测**:TCP 83.3M pps,HTTP 142.9M pps,用于预过滤
- **稳健分析**:TCP 提供 975.6K pps,HTTP 526.6K pps,用于完整指纹识别
- **并行支持**:TCP 扩展至 2.11M pps (4 workers),HTTP 至 1.54M pps (2 workers),TLS 至 97K pps (2-4 workers)
- **全面覆盖**:所有协议均针对实时网络监控进行了优化
### 准确性与兼容性
- **TCP**:在测试的设备类别中匹配原始 p0f 精度
- **TLS**:用于现代 TLS 指纹识别的 JA4 方法论
- **HTTP**:具有全面签名数据库的浏览器和服务器检测
### 性能优化
为获得最大性能,请使用特定协议的库:
- `huginn-net-tcp` 用于仅 TCP 分析
- `huginn-net-tls` 用于仅 TLS 分析
- `huginn-net-http` 用于仅 HTTP 分析
*有关全面的基准测试分析和容量规划指南,请参阅 [benches/README.md](benches/README.md)。*
### 已验证的设备类别
- **桌面操作系统** - Windows (XP/7/8/10)、Linux 发行版、macOS
- **移动设备** - Android 设备、iPhone/iPad
- **游戏主机** - Nintendo 3DS、Nintendo Wii
- **网页浏览器** - Chrome、Firefox、Safari、Edge、Opera
- **Web 服务器** - Apache、nginx、IIS、lighttpd
- **网络工具** - wget、curl、各种爬虫和机器人
- **遗留系统** - 旧版 Windows、Unix 变体
*基于 p0f 数据库中可用的签名。有关完整的签名列表,请参阅 [huginn-net-db/config/p0f.fp](huginn-net-db/config/p0f.fp)。*
### 数据库覆盖范围
当前的签名数据库包含以下模式:
- **主要操作系统**(Windows、Linux、macOS、BSD 变体)
- **流行的网页浏览器**(Chrome、Firefox、Safari 等)
- **常见的 Web 服务器**(Apache、nginx、IIS)
- **游戏设备**(Nintendo 主机)
- **网络分析工具**(爬虫、机器人、命令行工具)
## 高级功能
### 多协议支持
- **TCP SYN/SYN+ACK** 指纹识别用于 OS 检测
- **HTTP 请求/响应** 分析用于应用程序识别
- **TLS ClientHello** 分析与 JA4 指纹识别用于客户端识别
- **MTU 发现** 用于链路类型检测
- **运行时间估算** 从 TCP 时间戳(在现代系统上精度有限)
- **自定义签名数据库** 易于更新
### 数据包过滤
可选的按端口和/或 IP 地址进行数据包过滤以提高性能。过滤器在完整数据包解析之前应用,从而减少 CPU 开销。在所有 crate 中可用。有关用法,请参阅 [示例与教程](examples/README.md)。
### 匹配质量
Huginn Net 为所有指纹匹配提供智能质量评分,帮助您评估每次检测的可靠性。
质量评分是根据观察到的网络特征与已知签名之间的**距离**计算得出的。
为了在匹配中获得最佳质量,需要一个丰富的数据库。
#### 质量指标
- **完美匹配 (1.0)**:零距离的精确签名匹配
- **高质量 (0.8-0.95)**:差异极小的非常接近的匹配
- **中等质量 (0.6-0.8)**:存在一些差异的良好匹配
- **低质量 (0.4-0.6)**:可接受的匹配,但存在显著差异
- **差质量 (<0.4)**:弱匹配,请谨慎使用
### TLS JA4 指纹识别
此实现遵循 [FoxIO, LLC 的官方 JA4 规范](https://github.com/FoxIO-LLC/ja4) 进行 TLS 客户端指纹识别。有关完整的归属和许可详细信息,请参阅 [许可与归属](#-licensing--attribution) 部分。我们不实施 FoxIO License 1.1 下的 JA4+ 组件。
## 配套项目
### 网络扫描与测试
要进行可视化分析和实验,请使用我们的配套 Web 应用程序:
**[huginn-net-profiler: 被动网络配置文件分析器](https://github.com/biandratti/huginn-net-profiler)**
功能:
- 实时指纹可视化
- 交互式签名数据库探索
- 自定义模式测试与验证
### 反向代理
**实验性**,尚未准备好用于生产环境:
**[huginn-proxy: 带指纹识别的高性能反向代理](https://github.com/biandratti/huginn-proxy)** *(目前处于活跃开发中)*
功能:
- 支持 ALPN 的 TLS 终止
- 自动指纹提取 (JA4, Akamai HTTP/2)
- 作为 HTTP 头部注入指纹 (`x-huginn-net-ja4`, `x-huginn-net-akamai`)
- 负载均衡和基于路径的路由
## 下一个里程碑
- **增强的数据库** - 持续的签名更新和社区贡献
- **高级分析** - 模式分析和报告工具
- **实时流** - 高性能数据包处理流水线
## 📄 许可证
根据 [MIT](LICENSE-MIT) 或 [Apache 2.0](LICENSE-APACHE) 双重许可。
### 归属
`huginn-net` 是一个独立的 Rust 实现,灵感来源于 `p0f` 和 `JA4` 的方法论。
- **p0f**:TCP 指纹识别灵感来源于 Michał Zalewski 的原始 p0f。逻辑已在 Rust 中从头重写,以确保内存安全和性能。
- **JA4**:TLS 指纹识别遵循 [FoxIO, LLC 的 JA4 规范](https://github.com/FoxIO-LLC/ja4),该规范在 BSD 3-Clause 许可下可用。我们的实现是为 `huginn-net` 从头编写的,不使用原始 JA4 仓库中的任何代码。JA4 方法和规范版权归 (c) 2023, FoxIO, LLC 所有。
标签:Crates.io, HTTP指纹, Huginn, JA4, p0f, Radare2, Rust, TCP/IP, TLS指纹, Zero-Copy, 协议分析, 占用监测, 可视化界面, 域名收集, 密码管理, 并发处理, 库, 应急响应, 底层编程, 开源, 异常检测, 权限提升, 系统分析, 网络分析, 网络安全, 网络流量审计, 被动指纹识别, 设备识别, 资产管理, 通知系统, 防御绕过, 隐私保护