snype 是一个用 Python 构建的终端 UI 工具,旨在简化基于 aircrack-ng/hcxtools 的 WPA2 握手包捕获、去认证攻击和字典破解工作流。
# snype — WPA 握手包捕获工具
**为 aircrack-ng / hcxtools 工作流打造的现代终端 UI。snype 通过键盘驱动的 TUI 和合理的默认设置,简化了无线侦察、握手包捕获、解除认证和字典破解流程。**
## 概述
snype 将标准的无线审计工具链封装在单一界面中:
- 基于 `textual` 和 `rich` 构建的**现代 TUI** —— 状态栏、侧边栏导航、快捷键、模态对话框。
- **自动双终端启动器** —— 监听和解除认证根据环境在 `xterm`、`tmux` 或嵌入式 PTY 面板中并行运行。
- **环境检测** —— 透明支持桌面 Linux、无头/SSH 会话以及 Kali NetHunter / Termux。
- **结构化输出** —— 每次捕获都会写入到特定会话目录中,并附带 `meta.json` 以保证可复现性。
- **CLI 标志** —— TUI 中的每一个操作都可以通过命令行执行,方便脚本编写。
## 功能特性
- 交互式 TUI,支持上下文快捷键和实时状态栏。
- 通过 `airodump-ng` 进行网络扫描和目标选择,并解析 CSV。
- 针对性的数据包捕获,每个会话的输出会进行去重处理。
- 解除认证模块,支持配置持续时间和目标客户端。
- 通过 `hcxpcapngtool` 自动将 `.cap` 转换为 `.hc22000`。
- 基于 `aircrack-ng` 的字典破解包装器,支持结果持久化保存。
- 从传统的扁平布局一键迁移到全新的 `snype-data/` 目录树。
- 由 `argparse` 生成的详细 `--help` 参考。
## 系统要求
### 系统
- 基于 Linux 的操作系统(桌面、SSH 或 NetHunter / Termux)。
- 支持监听模式和数据包注入的无线网卡。
- Python 3.10 或更高版本。
- 监听模式和注入操作需要 sudo / root 权限。
### 外部工具
- `aircrack-ng` 套件:`airmon-ng`、`airodump-ng`、`aireplay-ng`、`aircrack-ng`。
- `hcxtools`:`hcxpcapngtool`、`hcxdumptool`。
- 至少需要以下之一:`tmux`、`xterm`、`kitty`、`gnome-terminal`、`konsole`(可选 —— 嵌入式 PTY 后端将作为后备方案使用)。
### Python 包
| 包名 | 版本 | 用途 |
|---|---|---|
| [`textual`](https://github.com/Textualize/textual) | `>= 0.50` | TUI 框架(布局、组件、快捷键) |
| [`rich`](https://github.com/Textualize/rich) | `>= 13.0` | 组件内的富文本和表格渲染 |
## 安装
snype 安装在项目本地的虚拟环境中。其 Python
依赖项和可执行文件与系统 Python 保持隔离。
```
git clone https://github.com/ente0/snype.git
cd snype
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
```
在 Windows PowerShell 中,使用以下命令激活环境:
```
.venv\Scripts\Activate.ps1
```
拉取新更改后,请刷新当前活动环境:
```
git pull
python -m pip install -e .
```
### 可选:全局暴露 `snype`
要在不激活 `.venv` 的情况下从任何目录运行 `snype`,请将此
项目的虚拟环境可执行文件路径添加到您的 `PATH` 中。在仓库根目录下运行一次此命令:
```
printf '\nexport PATH="%s/.venv/bin:$PATH"\n' "$PWD" >> ~/.zshrc
source ~/.zshrc
```
对于 Bash,请在两条命令中将 `~/.zshrc` 替换为 `~/.bashrc`。这会存储
仓库绝对的 `.venv/bin` 路径;如果移动了仓库位置,请重新进行设置。
完成后请退出环境:
```
deactivate
```
### 系统依赖
Debian / Ubuntu / Kali
```
sudo apt update
sudo apt install -y aircrack-ng hcxtools hcxdumptool tmux xterm \
python3 python3-pip python3-venv
```
Fedora
```
sudo dnf install -y aircrack-ng hcxtools hcxdumptool tmux xterm \
python3 python3-pip
```
Arch Linux / Manjaro
```
sudo pacman -S aircrack-ng hcxtools hcxdumptool tmux xterm \
python python-pip
```
Kali NetHunter / Termux
```
pkg install aircrack-ng hcxtools tmux python
```
snype 会自动检测 NetHunter,并强制为双终端启动器使用 `tmux` 后端。
## 快速开始
```
sudo .venv/bin/snype
```
首次运行会执行一次性迁移:任何旧版 `handshakes/` 目录以及旧的 `selected_network.txt` / `interface_config.txt` 文件都会被移动到新的 `snype-data/` 布局中。绝对不会删除任何内容 —— 旧文件只是被重新定位,而不是被丢弃。
使用预填充状态启动:
```
sudo .venv/bin/snype -i wlan0 -I wlan1 -b AA:BB:CC:DD:EE:FF -c 6
```
如果不安装直接从仓库运行:
```
sudo python3 snype.py
```
## CLI 参考
运行 `snype --help` 获取权威列表。最相关的标志:
| 标志 | 参数 | 用途 |
|---|---|---|
| `-i`, `--interface` | `IFACE` | 主网卡,用于监听。 |
| `-I`, `--inject` | `IFACE` | 用于注入的辅助网卡(默认为主网卡)。 |
| `-b`, `--bssid` | `MAC` | 预选目标 BSSID。 |
| `-c`, `--channel` | `N` | 预选频道。 |
| `-e`, `--essid` | `NAME` | 预选 ESSID(用于会话命名)。 |
| `-d`, `--data-dir` | `PATH` | 覆盖数据目录(默认:`./snype-data`)。 |
| `-t`, `--term-mode` | `auto\|xterm\|tmux\|pty` | 强制指定特定的双终端后端。 |
| `--duration` | `SECONDS` | 定时解除认证攻击的默认持续时间。 |
| `--dry-run` | | 打印外部命令但不实际执行。 |
| `-v`, `--verbose` | | 启用详细日志记录。 |
| `--version` | | 打印版本并退出。 |
| `-h`, `--help` | | 打印完整帮助信息并退出。 |
## TUI 指南
TUI 分为四个区域:
```
+------------------------------------------------------------+
| status bar : iface, target, channel, cap/hc22000/pwd count |
+-----------+------------------------------------------------+
| sidebar | |
| Scan | main pane |
| Monitor | (tables, forms, progress, logs) |
| Deauth | |
| Crack | |
| Files | |
| Settings | |
+-----------+------------------------------------------------+
| footer : keybinding hints and last log line |
+------------------------------------------------------------+
```
### 全局快捷键
| 按键 | 操作 |
|---|---|
| `s` | 扫描网络 |
| `m` | 开始针对性监听 + 解除认证 |
| `d` | 独立解除认证 |
| `c` | 进入字典破解视图 |
| `f` | 浏览捕获的文件 |
| `t` | 设置(网卡、终端后端) |
| `h` | 返回欢迎屏幕 |
| `?` | 显示帮助 |
| `q` | 退出 |
### 特定视图快捷键
**扫描 (Scan)**
| 按键 | 操作 |
|---|---|
| `r` | 开始扫描 |
| `↑` / `↓` | 移动选择 |
| `Enter` | 选择目标 |
| `+` / `-` | 调整扫描持续时间 |
**解除认证 (Deauth)**
| 按键 | 操作 |
|---|---|
| `Enter` | 执行解除认证 |
| `+` / `-` | 调整持续时间 |
| `c` | 清除客户端 MAC(针对全部) |
**破解 (Crack)**
| 按键 | 操作 |
|---|---|
| `r` | 刷新捕获列表 |
| `↑` / `↓` | 选择捕获文件 |
| `w` | 从 `$SNYPE_WORDLIST` 加载字典 |
| `Enter` | 执行破解 |
**设置 (Settings)**
| 按键 | 操作 |
|---|---|
| `1` | 设置监听网卡 |
| `2` | 设置注入网卡 |
| `3` | 切换终端后端 |
| `f` | 清空监听模式服务 |
### 典型工作流
1. **设置** (`t`) —— 设置监听网卡和可选的注入网卡。
2. **扫描** (`s`) —— 从实时列表中发现并选择目标。
3. **监听 + 解除认证** (`m`) —— 启动器会打开一个双面板终端,使数据包捕获和解除认证同时运行。完成后关闭两个面板。
4. **转换** —— 会话结束时,`.cap` 文件会自动转换为 `.hc22000`。
5. **破解** (`c`) —— 设置 `$SNYPE_WORDLIST`,按 `w` 加载,然后按 `Enter` 进行破解。
6. **文件** (`f`) —— 浏览 `snype-data/hs/` 下的捕获文件、哈希值和恢复的密码。
## 数据布局
所有产物都存储在一个单一、可移植的目录树中。默认根目录为 `./snype-data/`,可使用 `--data-dir` 或 `SNYPE_DATA_DIR` 环境变量覆盖。
```
snype-data/
├── config.json # interface + last target state
├── hs/ # captures organised by ESSID
│ └──
/
│ ├── /
│ │ ├── capture.cap
│ │ ├── capture.hc22000
│ │ └── meta.json # BSSID, channel, start, stop, EAPOL count
│ └── passwords/
│ └── _password.txt
├── logs/
│ └── snype.log
└── found_passwords.jsonl # append-only cracked keys
```
### `meta.json`
每个会话目录都包含一个自描述的元数据文件。示例:
```
{
"essid": "MyNetwork",
"bssid": "AA:BB:CC:DD:EE:FF",
"channel": 6,
"started_at": "2026-04-14T14:32:01+00:00",
"stopped_at": "2026-04-14T14:34:18+00:00",
"duration_s": 137,
"eapol_frames": 4,
"handshake_complete": true,
"capture": "capture.cap",
"hashcat": "capture.hc22000"
}
```
## 终端自动检测
当用户触发“监听 + 解除认证”时,snype 会并排打开两个终端,以便数据包捕获和解除认证同时运行。后端会自动选择;也可以使用 `--term-mode` 强制指定。
检测顺序(自动模式):
1. **NetHunter / Termux**(设置了 `$TERMUX_VERSION`,或检测到 Kali-NetHunter 绑定挂载)—— 强制使用 `tmux`。
2. **图形桌面**(设置了 `$DISPLAY`)—— 默认使用 `xterm`,后备为在 `PATH` 中找到的 `kitty`、`gnome-terminal`、`konsole` 中的第一个。
3. **可用 tmux 的 TTY** —— 创建一个分离的 tmux 会话,水平分割并附加。
4. **后备方案** —— TUI 本身内部的嵌入式 PTY 面板(通过 `pty.openpty` 和 asyncio 读取器进行多路复用)。
当前会话使用的后端会在状态栏和 `snype-data/logs/snype.log` 中报告。
## 推荐配套工具:hashCrack
对于 GPU 加速破解,我们推荐 [hashCrack](https://github.com/ente0/hashCrack),这是一款专为与 snype 配合使用而设计的配套工具。
工作流:
1. 使用 snype 捕获握手包,并让其生成 `.hc22000` 产物。
2. 将该产物提供给 hashCrack:
```
hashcrack captured_handshake.hc22000
```
优势:
- 通过 `hashcat` 实现 GPU 加速攻击模式。
- 多种预置的破解策略和掩码。
- 丰富的字典管理功能。
## 故障排除
找不到网卡
- 确认适配器已物理连接。
- 使用 `iw list` 检查监听模式能力。
- 使用 `ip link` 报告的确切网卡名称。
权限被拒绝
- 使用 `sudo` 运行 snype。
- 在 NetHunter 上,确保 chroot 有权访问 USB 无线设备。
未找到网络
- 验证网卡是否确实处于监听模式(`iwconfig `)。
- 尝试通过 `-c` 手动锁定频道。
- 某些适配器受地区限制;请检查 `iw reg`。
解除认证无效
- 确保您在目标范围内。
- 某些客户端实现了 802.11w / PMF,会忽略解除认证帧。
- 使用 `--duration` 增加持续时间或重复攻击。
TUI 渲染问题
- 确保终端至少报告 100x30 个字符的大小。
- 如果您的终端模拟器比较特殊,请使用 `--term-mode tmux` 强制指定后端。
- 如果颜色显示异常,通过导出 `COLORTERM=` 来禁用真彩色。
- 如果 textual 在启动时抛出错误,请确保使用的是 Python 3.10+:`python3 --version`。
未找到 snype 命令
- 激活项目环境:`source .venv/bin/activate`。
- 或者从仓库根目录直接运行:`sudo .venv/bin/snype`。
## 教育资源
- [4 次握手解释](https://notes.networklessons.com/security-wpa-4-way-handshake)
- [Radiotap 简介](https://www.radiotap.org/)
- [Aircrack-ng 文档](https://wiki.aircrack-ng.org/)
## 许可证
本项目采用 GPL-3.0 授权。详情请参阅 LICENSE 文件。
## 支持
- [报告问题](https://github.com/ente0/snype/issues)
## 相关项目
- [hashCrack](https://github.com/ente0/hashCrack)
- [hashcat-defaults](https://github.com/ente0/hashcat-defaults)
- [wpa2-wordlists](https://github.com/kennyn510/wpa2-wordlists)
- [paroleitaliane](https://github.com/napolux/paroleitaliane)
- [SecLists](标签:Python, TUI, WiFi破解, 插件系统, 无后门, 网络安全, 逆向工具, 隐私保护