sundruid/muonfp
GitHub: sundruid/muonfp
MuonFP 是一个零外部依赖的 Rust 被动 TCP 指纹传感器,通过分析 SYN/SYN-ACK 数据包提取精简指纹签名,为网络安全研究和侦察检测提供数据支撑。
Stars: 34 | Forks: 6

# MuonFP
MuonFP 是一个开源的被动 TCP 指纹传感器。它通过观察 TCP SYN
和 SYN-ACK 数据包,记录下源自 TCP 窗口大小、选项顺序、MSS 以及窗口缩放因子的精简签名。
MuonFP 可用于网络安全研究、侦察检测,以及为支持指纹识别的工具(例如
[Fingerprint Firewall](https://github.com/sundruid/fpfw))提供数据。
阅读背景论文:
[没有所谓的“良性”互联网扫描器](https://www.kenwebster.com/index.php/2025/01/29/there-is-no-such-thing-as-a-benign-internet-scanner/)。
## 功能特性
- IPv4 和 IPv6 TCP SYN/SYN-ACK 指纹识别。
- 针对 IPv6 扩展头的常见选项头和分片头遍历。
- 带有 UTC 时间戳和传感器主机名的 JSON Lines 指纹输出。
- 支持轮转的指纹和 PCAP 输出,且活动日志支持重启安全。
- 可通过 `--stdout` 选择立即输出 JSON。
- 自动选择 Linux 接口或显式指定配置的接口。
- 在不需要 PCAP 记录时支持 `/dev/null`。
- 提供 systemd 服务和 Debian 发布构件。
MuonFP 仅负责记录指纹;策略匹配和流量阻断等操作由 Fingerprint Firewall 等下游工具执行。
## 指纹格式
示例:
```
26847:2-4-8-1-3:1460:8
```
这四个字段分别是:
1. TCP 窗口大小。
2. TCP 选项 Kind 值(保持其在线路上的确切顺序)。
3. TCP 最大分段大小 (MSS)。
4. TCP 窗口缩放因子。
有关草案格式的规范,请参阅 [MuonFP 指纹规范](MuonFP%20Fingerprint%20Specification.md)。
## 命令行
```
MuonFP - open-source TCP fingerprinting
Usage: muonfp [OPTIONS]
Options:
-v, --version, -version Show version information
-s, --stdout Output JSON fingerprints to stdout immediately
--list-interfaces List available capture interfaces
-h, --help Show this help message
```
所有版本形式都会报告 Cargo 包版本:
```
$ muonfp --version
MuonFP v1.5.0
```
## Debian 安装说明
MuonFP 1.5.0 Linux 构件基于 Debian 12 amd64 构建,支持 Debian 12
和 Debian 13 amd64。
### Debian 软件包
```
curl -LO https://github.com/sundruid/muonfp/releases/download/v1.5.0/muonfp_1.5.0-1_amd64.deb
sudo apt install ./muonfp_1.5.0-1_amd64.deb
```
### 兼容性安装程序
```
curl -LO https://github.com/sundruid/muonfp/releases/download/v1.5.0/muonfp-v1.5.0-debian12-amd64.tar.gz
tar -xzf muonfp-v1.5.0-debian12-amd64.tar.gz
cd muonfp-v1.5.0
sudo ./install.sh
```
安装程序会保留现有的 `/etc/muonfp.conf`。默认情况下,卸载操作也会
保留配置和日志:
```
sudo ./install.sh --uninstall
```
仅在需要同时删除配置和已收集的日志数据时,才使用 `--uninstall --purge`。
### 仅二进制文件升级
现有的手动安装可以仅替换可执行文件:
```
curl -LO https://github.com/sundruid/muonfp/releases/download/v1.5.0/muonfp-v1.5.0-debian12-amd64
sudo systemctl stop muonfp
sudo cp /usr/local/bin/muonfp /usr/local/bin/muonfp.previous
sudo install -m755 muonfp-v1.5.0-debian12-amd64 /usr/local/bin/muonfp
/usr/local/bin/muonfp --version
sudo systemctl start muonfp
```
安装前,请根据发布版本中的 `SHA256SUMS` 校验下载的文件。
## 配置
服务会读取 `/etc/muonfp.conf`:
```
interface=auto
fingerprints=/var/log/fingerprints
pcap=/var/log/pcaps
max_file_size=10
```
- `interface=auto` 会选择 Linux 的默认路由接口。如有需要,请使用
`muonfp --list-interfaces` 并显式设置接口名称。
- 设置 `pcap=/dev/null` 可禁用 PCAP 记录。
- `max_file_size` 是以 MiB 为单位的轮转阈值,且必须大于
零。
数据包捕获需要 root 权限或 `CAP_NET_RAW`。
## 从源码构建
MuonFP 需要 Rust 1.85 或更高版本:
```
git clone https://github.com/sundruid/muonfp.git
cd muonfp
cargo build --release --locked
./target/release/muonfp --version
```
在提交更改之前:
```
cargo fmt --all -- --check
cargo clippy --locked --all-targets --all-features -- -D warnings
cargo test --locked
```
## 许可证
MuonFP 源代码基于 [MIT License](LICENSE) 发布。指纹
格式规范附带其自身的 CC BY 4.0 声明。
联系方式:sundruid@protonmail.com
标签:Rust, TCP/IP, 可视化界面, 威胁情报, 开发者工具, 网络安全, 网络流量审计, 被动指纹识别, 通知系统, 防御绕过, 隐私保护