pr0misc/Libnexmonkali-Plus
GitHub: pr0misc/Libnexmonkali-Plus
通过 LD_PRELOAD 拦截系统调用,在应用 Nexmon 补丁的 Broadcom 芯片上实现监听模式、帧注入与信道切换的跨平台兼容库。
Stars: 0 | Forks: 0
# Libnexmonkali-Plus 🚀
## 📖 概述
该库通过 `LD_PRELOAD` 拦截系统调用,从而在应用了 Nexmon 补丁的 Broadcom 芯片上启用监听模式、帧注入和信道切换。它同时支持 **bcmdhd** (Samsung) 和 **brcmfmac** (TicWatch/RPi) 内核驱动,并能在运行时自动检测正确的注入方法。
### 支持的设备
| 设备 | 芯片 | 驱动 | 架构 | 注入方式 |
|---|---|---|---|---|
| Samsung S10/S21+ | BCM4375b1 | `bcmdhd` | aarch64 | `NEX_INJECT_FRAME` IOCTL |
| TicWatch Pro/Pro3 | BCM43436b0 | `brcmfmac` | armhf | Raw socket → `wl_send_hook` |
| Raspberry Pi (64-bit) | 各种 | `brcmfmac` | aarch64 | Raw socket → `wl_send_hook` |
| Raspberry Pi (32-bit) | 各种 | `brcmfmac` | armhf | Raw socket → `wl_send_hook` |
### 支持的工具
| 工具 | 用途 | 自动延迟 |
|---|---|---|
| Reaver / Bully | WPS 攻击 | 5ms |
| hcxdumptool | PMKID/握手包捕获 | 10ms |
| aireplay-ng | Deauth / 注入 | 15ms |
| Kismet | 扫描 / 监听 | 20ms |
| airodump-ng | 跳频 / 扫描 | 40ms |
| 所有其他工具 | 通用 | 70ms (安全) |
## ⚡ 关键特性
### 1. 通用数据包注入
通过 Hook 所有主要的数据包传输系统调用:`write()`、`sendto()`、`sendmsg()`、`send()`、`sendmmsg()` 来实现。在 **bcmdhd** 设备上,帧通过 `NEX_INJECT_FRAME` IOCTL 路由。在 **brcmfmac** 设备 (TicWatch/RPi) 上,帧直接传递给内核,由固件的 `wl_send_hook` 处理注入。
### 2. 自动驱动检测
初始化时,库会探测 `/sys/module/brcmfmac/` 和 `/sys/module/bcmdhd/` 以确定已加载的驱动,并选择正确的注入方法。如果探测失败,则回退到基于架构的默认设置(`armhf` → raw socket, `aarch64` → IOCTL)。
### 3. 可靠的握手包捕获
强制设置 `WLC_SET_PM=0` (持续唤醒模式) 以防止芯片在 EAPOL 握手期间进入休眠。每次信道变更后都会强制开启混杂模式 (`WLC_SET_PROMISC=1`)。
### 4. 智能速度 (自动优化)
检查 `/proc/self/comm` 以检测当前运行的工具,并自动设置最佳注入延迟。可以通过 `NEXMON_DELAY` 环境变量进行覆盖。
### 5. 信道切换稳定性
每次信道变更后重新强制执行唤醒和混杂状态。对于 Kismet 和 hcxdumptool,每注入 50 个帧会定期执行一次稳定性强化。
### 6. Kismet & hcxdumptool 绕过
- 伪造 `NL80211_CMD_SET_INTERFACE` 成功(防止出现“无法设置监听模式”错误)
- 抑制读取时的 `EOPNOTSUPP`/`EINVAL` netlink 错误(防止工具中止)
- 强制 `SIOCSIWMODE` 成功,以支持 Kismet 的旧版监听模式路径
### 7. 可配置接口
设置 `NEXMON_IFACE` 环境变量以覆盖默认的 `wlan0` 接口名称。
## 🛠️ 编译与安装
### 前置条件
- 交叉编译器:`aarch64-linux-gnu-gcc` 和/或 `arm-linux-gnueabihf-gcc`
- libnl3 开发头文件:`apt install libnl-3-dev libnl-genl-3-dev`
### 编译
```
# 适用于 Samsung S10/S21+ 及现代 64-bit 设备
make aarch64
# 适用于 TicWatch Pro/Pro3 及 32-bit ARM 设备
make armhf
# 全局安装 (复制到 /usr/lib/ 和 /usr/bin/)
sudo make install
```
## 💻 使用方法
### 步骤 1:启用监听模式 (设备端)
```
nexutil -m2 # or: nexutil -s0x613 -i -v2
```
### 步骤 2:运行工具
**选项 A:单条命令 (推荐)**
```
# 自动检测速度 (让 library 为每个 tool 选择最佳延迟)
nxsp 0 reaver -i wlan0 -b -c
# 手动覆盖延迟 (例如,15ms)
nxsp 15 mdk4 wlan0 d
```
**选项 B:Shell 模式**
```
# 进入 Nexmon shell (每个 tool 智能自动检测)
nxsp load
# 运行 tools — 每个 tool 自动获得其最佳延迟
reaver -i wlan0 ...
airodump-ng wlan0
# 退出
exit
```
**选项 C:直接使用 LD_PRELOAD**
```
NEXMON_DELAY=0 LD_PRELOAD=/usr/lib/libnexmonkali.so reaver -i wlan0 ...
```
### 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| `NEXMON_DELAY` | 自动检测 | 注入延迟 (纳秒) (0 = 无延迟) |
| `NEXMON_IFACE` | `wlan0` | 覆盖接口名称 |
## ⚠️ 免责声明
本软件仅用于教育目的和经授权的安全审计。作者不对因使用本软件而导致的任何滥用或损害负责。请确保您遵守所有关于无线电传输和网络安全的当地法律法规。
## 🏆 致谢
- 原始工作:[Nexmon Team](https://github.com/seemoo-lab/nexmon)
- 灵感与动力:[yesimxev](https://github.com/yesimxev)
- 原始库:[RoninNada](https://github.com/RoninNada/libnexmonkali)
- S10 优化与分支:[qazianwar222](https://github.com/pr0misc)
标签:aireplay-ng, airodump-ng, bcmdhd, brcmfmac, Broadcom 芯片, Kali Linux 工具, LD_PRELOAD, Nexmon, WiFi 渗透测试, 中间人攻击, 内核驱动, 协议分析, 安卓安全, 客户端加密, 握手包捕获, 数据包注入, 权限提升, 监听模式, 系统调用拦截, 网络协议, 网络安全, 防御绕过, 隐私保护