内容
# Wireshark MCP 服务器
通过 tshark 进行网络捕获和分析,作为 [模型上下文协议](https://modelcontextprotocol.io/) (MCP)服务器。使像 Claude 这样的 AI 助手能够完全访问 Wireshark 的分析功能。
**20 个工具** (15 个独立工具 + 5 个复合工作流程)。可移植 - 在任何安装了 tshark 的主机上运行。Windows、Linux、macOS。
## 使其与众不同
大多数 Wireshark MCP 服务器为您提供 4-8 个基本工具(捕获、读取、统计)。而这个服务器包括 **复合工作流程工具** ,这些工具将多个分析合并为一个调用:
- **`wireshark_recon`** — 完整的网络调查:协议、主要通信方、设备清单(带供应商识别)、DNS 统计。一次调用。
- **`wireshark_identify_devices`** — 通过 MAC/OUI 解析、主机名提取(DNS/mDNS/NBNS)和基于端口的角色分类来发现设备。
- **`wireshark_traffic_profile`** — 深入研究单个 IP:使用的协议、主要对等方、进出字节、活动端口、DNS 查询、随时间变化的活动。
- **`wireshark_security_audit`** — 检查明文凭证(HTTP 基本身份验证、FTP、telnet)、未加密协议、DNS 异常、ARP 异常、广播风暴。可选的 URLhaus 威胁情报。
- **`wireshark_compare_captures`** — 两个捕获文件的差异:新/消失的设备、协议分布变化、流量体积差异。
此外,还附带了一个 **OUI 数据库** (~1500 个供应商前缀),用于即时的 MAC 到供应商解析,无需外部查找。
## 快速入门
### 先决条件
- Python 3.11+
- [Wireshark](https://www.wireshark.org/download.html) 已安装(包含 tshark)
- 在 Linux 上:捕获权限(`sudo setcap cap_net_raw+ep $(which tshark)` 或以 root 运行)
### 安装
```bash
git clone https://github.com/wgthomas/wireshark-mcp.git
cd wireshark-mcp
pip install -r requirements.txt
```
### 配置 Claude 代码 / Claude 桌面
添加到您的 MCP 配置(`~/.claude.json` 或 Claude 桌面设置):
```json
{
"mcpServers": {
"wireshark": {
"command": "python",
"args": ["/path/to/wireshark-mcp/wireshark_mcp.py"],
"env": {}
}
}
}
```
tshark 自动检测。如果它不在您的 PATH 中,请设置 `WIRESHARK_TSHARK_PATH`:
```json
"env": {
"WIRESHARK_TSHARK_PATH": "/usr/bin/tshark"
}
```
## 工具
### 独立工具(15)
| 工具 | 描述 |
|------|-------------|
| `wireshark_list_interfaces` | 可用的捕获接口 |
| `wireshark_check_permissions` | 验证 tshark 和捕获权限 |
| `wireshark_capture` | 实时捕获到 pcapng 文件 |
| `wireshark_list_captures` | 已保存的捕获文件 |
| `wireshark_protocol_hierarchy` | 协议分布树 |
| `wireshark_conversations` | 通信的双方(按字节排名前 N 名) |
| `wireshark_endpoints` | 具有流量体积的唯一端点 |
| `wireshark_dns_analysis` | DNS 查询类型、响应代码、响应时间 |
| `wireshark_io_stats` | 流量体积随时间间隔的变化 |
| `wireshark_http_analysis` | HTTP 方法和响应代码 |
| `wireshark_expert_info` | Wireshark 警告、错误和注释 |
| `wireshark_extract_fields` | 自定义 tshark 字段提取 |
| `wireshark_packet_list` | 前 N 个数据包摘要 |
| `wireshark_resolve_oui` | MAC 地址供应商查找 |
| `wireshark_version` | tshark 版本和路径 |
### 工作流程工具(5)
| 工具 | 描述 |
|------|-------------|
| `wireshark_recon` | 完整的网络侦察 |
| `wireshark_identify_devices` | 设备发现和分类 |
| `wireshark_traffic_profile` | 单个 IP 深入研究 |
| `wireshark_security_audit` | 面向安全的分析 |
| `wireshark_compare_captures` | 两个捕获文件的差异 |
所有工作流程工具都接受 `pcap_file` 路径或 `interface` 进行实时捕获。
## 配置
所有设置均通过环境变量并带有 `WIRESHARK_` 前缀:
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `WIRESHARK_TSHARK_PATH` | 自动检测 | tshark 二进制文件路径 |
| `WIRESHARK_CAPTURE_DIR` | `./captures` | 保存捕获文件的位置 |
| `WIRESHARK_DEFAULT_DURATION` | `120` | 捕获持续时间(秒) |
| `WIRESHARK_MAX_PACKETS` | `100000` | 每个捕获的最大数据包数 |
| `WIRESHARK_DEFAULT_TOP_N` | `20` | 排名结果的默认限制 |
## Token 优化
所有工具都返回结构化的 JSON,从不返回原始 tshark 文本。输出是汇总的摘要,限制在 ~4000 个 token 内。当需要特定数据包数据时,请使用 `wireshark_extract_fields` 进行有针对性的深入研究。
## 安全
- **无 shell=True** — 所有 tshark 命令都使用 `subprocess` 和参数列表
- **输入净化** — 显示过滤器和参数针对注入字符进行验证
- **仅捕获文件** — 服务器读取/写入 pcap 文件,从不执行任意命令
## 测试
```bash
# 基本测试(无需捕获文件)
python test_quick.py
# 完整测试(使用捕获文件)
python test_quick.py path/to/capture.pcapng
# 工作流程测试
python test_workflows.py path/to/capture.pcapng [target_ip]
```
## 许可证
MIT