deagonlol/PacketEye
GitHub: deagonlol/PacketEye
一款 Wireshark 风格的 AI 驱动桌面流量分析应用,在本地解析 pcap 文件并通过确定性引擎与 AI 生成威胁检测报告。
Stars: 0 | Forks: 0
# PacketEye
AI 驱动的网络流量分析器 —— 一个 Wireshark 风格的**桌面应用**,它可以打开
`.pcap`/`.pcapng` 捕获文件,在本地进行解析,运行确定性的威胁检测
引擎,并在此之上叠加 AI 威胁报告和聊天功能。
所有解析都在**你的机器上**完成。只有紧凑的几 KB 大小的摘要 —— 绝不是原始
数据包 —— 会被发送给 AI。
## 功能
- **威胁检测** — 明文凭证(Telnet/FTP/HTTP Basic/SNMP)、不安全的
协议、脆弱/过时的 TLS、端口扫描、主机/ICMP 扫描、ARP 欺骗、恶意 DHCP、
DNS 隧道、LLMNR/NBT-NS 暴露、NXDOMAIN 激增、C2 信标活动等等 — 每一项都包含
严重程度、受影响的主机、可点击的数据包证据、修复建议以及 MITRE
ATT&CK 参考。
- **仪表盘** — 数据包/字节/主机/时长统计、按严重程度分类的发现、协议
细分、流量随时间变化图以及主要通信者 (top talkers)。
- **会话** — 带有 TCP 状态的可排序/可过滤的 5 元组流表。
- **协议** — DNS / HTTP / TLS 细分(查询的域名 + NXDOMAINs,包含
方法/主机/UAs 的请求,带有版本/密码套件的 SNIs)。
- **数据包** — 虚拟化的 Wireshark 风格表格,带有显示过滤器、解码的层
树以及十六进制/ASCII 转储。
- **AI 报告** — 流式、分段的 Markdown 威胁评估(Groq)。可导出为
Markdown(发现项 + AI 评估)。
- **聊天** — 提出关于该捕获文件的后续问题。
## 技术栈
Electron + electron-vite + React 19 + TypeScript + Tailwind。一个纯 TypeScript 的
pcap/pcapng 解析器和协议解析器(没有 `tshark`/`libpcap` 依赖)运行在 Node worker
线程中。AI 功能通过 Vercel AI SDK + `@ai-sdk/groq` 实现,从主进程调用,因此
API key 永远不会到达渲染进程。
## 快速开始
```
npm install
npm run make-samples # writes synthetic test captures into ./samples
npm run dev # launch the app (electron-vite)
```
打开 `samples/mixed-threats.pcap`,查看在植入了威胁的合成
捕获文件上进行的全面检测。
### AI(可选)
报告和聊天功能使用 [Groq](https://console.groq.com/keys)(最便宜/最快,需自备
你的专属 key)。打开 **Settings**,粘贴你的 `gsk_…` key,选择一个模型
(默认为 `llama-3.1-8b-instant`),并可选择性地开启 payload 脱敏。检测
和所有的检查功能在没有 key 的情况下也能完全正常工作。
## 脚本
| 脚本 | 作用 |
|--------|--------------|
| `npm run dev` | 在开发模式下启动应用 |
| `npm run build` | 构建 main/preload/renderer bundles |
| `npm test` | 运行 Vitest 测试套件(解析器、检测、健壮性、报告、AI 连线) |
| `npm run make-samples` | 在 `./samples` 目录中生成合成的 `.pcap` 固件 |
| `npm run make-fixture` | 重新生成浏览器预览的数据固件 |
| `npm run dist` | 通过 electron-builder 打包安装程序 |
## 架构
```
Main process window/menu, file dialogs, settings (userData/settings.json),
Groq streaming over IPC, Markdown report export
Parser worker streaming pcap/pcapng parse; owns the packet index, flow table,
stats, app-layer summaries, and findings; answers paged/filtered
packet queries and lazy hex/detail by file offset
Renderer sandboxed React UI (contextIsolation on) via a typed preload bridge
```
源码布局:
- `src/shared/pcap/` — 读取器 (`parse.ts`, `reader.ts`),解析器 (`dissect/`),流
追踪器 (`flows.ts`),统计数据 (`analyze.ts`),以及纯分析核心
(`analyze-capture.ts`)。
- `src/shared/detect/` — 确定性检测规则 (`rules.ts`)。
- `src/main/` — 窗口/IPC (`index.ts`),worker 宿主 (`capture-service.ts`),设置,
报告导出,以及 AI (`ai/`)。
- `src/renderer/src/` — React 应用 (`views/`, `components/`, `store.ts`)。
- `scripts/` — 合成捕获生成器 (`scenarios.ts`, `make-sample-pcaps.ts`)。
### 浏览器预览
`npm run make-fixture` 会写入 `src/renderer/src/lib/sample-analysis.json`,让
渲染器 UI 能够在普通浏览器中 (`vite --config vite.preview.config.ts`) 通过对 preload API 的模拟,基于真实的
分析数据运行 — 非常适合在无需启动 Electron 的情况下进行快速 UI 迭代。
### 后续步骤
添加一个实时的网络流量分析器,以便在威胁发生的瞬间进行实时缓解。
标签:AI威胁检测, IP 地址批量处理, 威胁情报, 密码管理, 开发者工具, 桌面应用, 网络流量分析, 自动化攻击, 防御绕过