seemoo-lab/nexmon
GitHub: seemoo-lab/nexmon
一个针对 Broadcom/Cypress WiFi 芯片的 C 语言固件补丁框架,旨在普通设备上解锁监控模式、帧注入及底层无线电控制能力。
Stars: 2760 | Forks: 483

# 什么是 nexmon?
Nexmon 是我们基于 C 语言的固件补丁框架,适用于 Broadcom/Cypress WiFi 芯片。它使您能够编写自己的固件补丁,例如,启用带有 radiotap 头的监控模式和帧注入。
在下文中,您可以了解 nexmon 的功能概览。该仓库主要致力于在多种芯片上启用监控模式和帧注入。如果您需要更多功能,以下项目可能会引起您的兴趣:
* http://nexmon.org/jammer:一个真正的 Wi-Fi 干扰器,允许使用任意干扰信号覆盖正在进行的帧传输。
* 它将 Wi-Fi 芯片用作软件定义无线电来生成干扰信号
* 它允许使用非标准信道,例如 2.4 GHz 频段中的 80 MHz 带宽
* 它允许设置任意发射功率
* 它允许修补 D11 核心的实时 MAC 实现
* http://nexmon.org/csi:适用于各种 Wi-Fi 芯片的信道状态信息提取器
* 它允许提取 80 MHz 带宽下高达 4x4 MIMO 传输的 CSI
* http://nexmon.org/debugger:无需 JTAG 访问即可调试 ARM 微控制器
* 它允许低级别访问调试寄存器以设置断点和观察点,并允许单步执行
* http://nexmon.org/covert_channel:在 Wi-Fi 信号中隐藏信息的隐蔽通道
* 比干扰器更先进的软件定义无线电功能
* 信道状态信息提取的示例应用
* http://nexmon.org/sdr:将您的 Wi-Fi 芯片用作软件定义无线电
* 目前仅在 2.4 和 5 GHz Wi-Fi 频段中支持传输

# 警告
我们的软件可能会损坏您的硬件,并可能使您的硬件保修失效!使用我们的工具的风险和责任由您自行承担!如果您不同意这些条款,请勿使用 nexmon!
# 支持的设备
目前以下设备支持我们的 nexmon 固件补丁。
WiFi 芯片 | 固件版本 | 用于 | 操作系统 | M | RT | I | FP | UC | CT
------------------------- | -------------------- | ------------------------- | ---------------------------- | --- | --- | --- | --- | --- | ---
bcm4330 | 5_90_100_41_sta | Samsung Galaxy S2 | Cyanogenmod 13.0 | X | X | | X | X | O
bcm4335b0 | 6.30.171.1_sta | Samsung Galaxy S4 | LineageOS 14.1 | X | X | X | | X | O
bcm4339 | 6_37_34_43 | Nexus 5 | Android 6 Stock | X | X | X | X | X | O
bcm43430a11 | 7_45_41_26 | Raspberry Pi 3 and Zero W | Raspbian 8 | X | X | X | X | X | O
bcm43430a11 | 7_45_41_46 | Raspberry Pi 3 and Zero W | Raspbian Stretch | X | X | X | X | X | O
bcm43439a07 | 7_95_49 (2271bb6 CY) | Raspberry Pi Pico W | Pico SDK | X | X | | X | X |
bcm43451b1 | 7_63_43_0 | iPhone 6 | iOS 10.1.1 (14B100) | | | | X | X |
bcm43455 | 7_45_77_0_hw | Huawei P9 | Android 7 Stock | X | X | X | X | X |
bcm43455 | 7_120_5_1_sta_C0 | Galaxy J7 2017 | ? | | | | X | X |
bcm43455 | 7_45_77_0_hw(8-2017) | Huawei P9 | Android 7 Stock | X | X | X | X | X |
bcm434555 | 7_46_77_11_hw | Huawei P9 | Android 8 China Stock | X | X | X | X | X |
bcm43455 | 7_45_59_16 | Sony Xperia Z5 Compact | LineageOS 14.1 | X | X | X | X | X |
bcm43455c0 | 7_45_154 | Raspberry Pi B3+/B4 | Raspbian Kernel 4.9/14/19 | X | X | | X | X |
bcm43455c0 | 7_45_189 | Raspberry Pi B3+/B4 | Raspbian Kernel 4.14/19, 5.4 | X | X | | X | X |
bcm43455c0 | 7_45_206 | Raspberry Pi B3+/B4 | Raspberry Pi OS Kernel 5.4 | X | X | X | X | X |
bcm43455c0 | 7_45_234 (4ca95bb CY)| Raspberry Pi B3+/B4/5 | Raspberry Pi OS | | | | X | X |
bcm43436b03 | 9_88_4_65 | Raspberry Pi Zero 2 W | Raspberry Pi OS Kernel 5.10 | X | X | X | X | X |
bcm4356 | 7_35_101_5_sta | Nexus 6 | Android 7.1.2 | X | X | | X | X | O
bcm4358 | 7_112_200_17_sta | Nexus 6P | Android 7 Stock | X | X | | X | X | O
bcm4358 | 7_112_201_3_sta | Nexus 6P | Android 7.1.2 Stock | X | X | | X | X | O
bcm43582 | 7_112_300_14_sta | Nexus 6P | Android 8.0.0 Stock | X | X | X | X | X | O
bcm43596a03 | 9_75_155_45_sta_c0 | Samsung Galaxy S7 | Android 7 Stock | X | | | O | X |
bcm43596a03,2 | 9_96_4_sta_c0 | Samsung Galaxy S7 | LineageOS 14.1 | X | X | X | O | X |
bcm4375b13,5,6 | 18_38_18_sta | Samsung Galaxy S10 | Rooted + disabled SELinux | X | X | X | O | X |
bcm4375b13,5,6 | 18_41_8_9_sta | Samsung Galaxy S20 | Rooted + disabled SELinux | X | X | X | O | X |
bcm4389c15,8,9 | 20_82_42_sta (r994653) | Samsung Galaxy S22 Plus | Android 14, Rooted with [Magisk](https://github.com/topjohnwu/Magisk) | | | | X | X |
bcm4389c15,8,9 | 20_101_36_2 (r994653)| Google Pixel 7 and 7 Pro | Rooted with [Magisk](https://github.com/topjohnwu/Magisk) | | | | X | X |
bcm4389c15,8,9 | 20_101_57 (r1035009)| Google Pixel 7 and 7 Pro | Rooted with [Magisk](https://github.com/topjohnwu/Magisk) | | | | X | X |
bcm4398d05,8,9 | 24_671_6_9 (r1031525)| Google Pixel 8 | Rooted with [Magisk](https://github.com/topjohnwu/Magisk) | | | | X | X |
bcm6715b05 | 17_10_188_6401 (r808804)| Asus RT-AX86U Pro | Stock firmware 3.0.0.4_388.23565 | | | | / | X |
qca95004 | 4-1-0_55 | TP-Link Talon AD7200 | Custom LEDE Image | | | | | |
1 bcm43430a1 过去被错误地标记为 bcm43438。
2 使用 LD_PRELOAD=libnexmon.so 而不是 LD_PRELOAD=libfakeioctl.so 通过 ioctls 注入帧
3 flash patches 需要为 8 字节长并在 8 字节边界上对齐
4 第一个 60 GHz Wi-Fi 路由器 Talon AD7200 中的 802.11ad Wi-Fi 芯片。使用 [nexmon-arc](https://github.com/seemoo-lab/nexmon-arc) 修补您的固件,并使用我们定制的 LEDE 镜像 [lede-ad7200](https://github.com/seemoo-lab/lede-ad7200) 运行它
5 禁用了区域 1 上的执行保护(称为 Execute Never),因为它会干扰 nexmon 代码(Section 上的权限错误)
6 要使用 nexutil,您需要停用 SELinux 或将其设置为 permissive
7 有关使用 Pico SDK 和 nexmon 的示例应用程序,请参阅 [pico-nexmon](https://github.com/seemoo-lab/pico-nexmon)。
8 flash patches 需要为 16 字节长并在 16 字节边界上对齐。
9 使用 [Magisk](https://github.com/topjohnwu/Magisk) 模块安装固件、nexutil 并设置 SELinux 策略。
## 图例
- M = Monitor Mode (监控模式)
- RT = Monitor Mode with RadioTap headers (带 RadioTap 头的监控模式)
- I = Frame Injection (帧注入)
- FP = Flash Patching
- UC = Ucode Compression
- CT = c't Article Support (为了保持一致性支持,请使用我们的 ct-artikel 分支)
# 创建您自己的固件补丁的步骤
## 使用运行 Linux 的 x86 计算机(例如 Ubuntu 16.04)为 bcm4330、bcm4339 和 bcm4358 构建补丁
* 安装一些依赖项:`sudo apt-get install git gawk qpdf adb flex bison`
* **仅对于 x86_64 系统是必需的**,安装 i386 库:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
* 克隆我们的仓库:`git clone https://github.com/seemoo-lab/nexmon.git`
* 在仓库的根目录中:`cd nexmon`
* 设置构建环境:`source setup_env.sh`
* 编译一些构建工具并从原始固件文件中提取 ucode 和 flashpatches:`make`
* 转到设备的 *patches* 文件夹(例如 Nexus 5 的 bcm4339):`cd patches/bcm4339/6_37_34_43/nexmon/`
* 编译打补丁的固件:`make`
* 生成原始固件文件的备份:`make backup-firmware`
* 在您的智能手机上安装打补丁的固件:`make install-firmware`(确保您的智能手机事先已连接到您的机器)
### 使用 Monitor Mode 补丁
* 至少从我们的实用程序中安装 *nexutil* 和 *libfakeioctl*。最简单的方法是使用此应用程序:https://nexmon.org/app。但您也可以通过在 *utilties* 文件夹中执行 `make` 从源代码构建它(注意:您需要正确安装 Android NDK)。
* 使用 ADB 工具连接到您的 Android 手机:`adb shell`
* 确保您**没有**连接到接入点
* 使用 *nexutil* 启用监控模式:`nexutil -m2`
* 此时监控模式处于活动状态。无需调用 *airmon-ng*。
* **重要:** 大多数工具需要 Radiotap 接口才能正常工作。*libfakeioctl* 为您模拟这种类型的接口,因此,在调用您喜欢的工具(例如 tcpdump 或 airodump-ng)时使用 LD_PRELOAD 加载此库:`LD_PRELOAD=libfakeioctl.so tcpdump -i wlan0`
* *未经测试的提示:* 感谢 XDA 成员 ruleh,有一个 bcmdhd 驱动程序补丁可以激活原生监控模式,请参阅:https://github.com/ruleh/misc/tree/master/monitor
### 在 Nexus 5 上通过 UDP 使用 nexutil
为了能够在没有 root 权限的情况下与固件通信,我们创建了一个可通过 `libnexio` 访问的 UDP 接口,`nexutil` 也使用该接口。您首先需要通过设置安全 cookie 向固件证明您通常拥有 root 权限。然后您可以将其用于基于 UDP 的连接。您的 wlan0 接口也需要一个 192.168.222.0/24 范围内的 IP 地址,或者您必须更改默认的 nexutil `broadcast-ip`:
* 设置 wlan0 接口的 IP 地址:`ifconfig wlan0 192.168.222.1 netmask 255.255.255.0`
* 以 root 身份设置安全 cookie:`nexutil -x`
* 启动 UDP 连接,例如激活监控模式:`nexutil -X -m1`
## 使用 Raspbian/Raspberry Pi OS(推荐)在 RPI3/Zero W 上为 bcm43430a1,在 RPI3+/RPI4 上为 bcm434355c0,或在 RPI Zero 2W 上为 bcm43436b0 构建补丁
**注意:** 我们目前支持内核版本 4.4(已弃用)、4.9、4.14、4.19、5.4、5.10 和 5.15。Raspbian 包含 bcm43455c0 的固件版本 7.45.154。我们也支持 Cypress 发布的较新固件版本 7.45.189。Raspberry Pi OS 包含固件版本 7.45.206。请尝试哪一个最适合您。
* 确保以下命令以 root 身份执行:`sudo su`
* 升级您的 Raspbian 安装:`apt-get update && apt-get upgrade`
* 安装内核头文件以构建驱动程序和一些依赖项:`sudo apt install raspberrypi-kernel-headers git libgimp2.0-dev gawk qpdf bison flex make autoconf libtool texinfo`
* 克隆我们的仓库:`git clone https://github.com/seemoo-lab/nexmon.git`
* 进入我们仓库的根目录:`cd nexmon`
* 在 32 位 Raspbian/Raspberry Pi OS 上
* 检查 `/usr/lib/arm-linux-gnueabihf/libisl.so.10` 是否存在,如果不存在,请从源代码编译它:
* `cd buildtools/isl-0.10`, `./configure`, `make`, `make install`, `ln -s /usr/local/lib/libisl.so /usr/lib/arm-linux-gnueabihf/libisl.so.10`
* 检查 `/usr/lib/arm-linux-gnueabihf/libmpfr.so.4` 是否存在,如果不存在,请从源代码编译它:
* `cd buildtools/mpfr-3.1.4`, `autoreconf -f -i`, `./configure`, `make`, `make install`, `ln -s /usr/local/lib/libmpfr.so /usr/lib/arm-linux-gnueabihf/libmpfr.so.4`
* 在 64 位 Raspberry Pi OS 上
* `sudo dpkg --add-architecture armhf`
* `sudo apt-get update`
* `sudo apt-get install libc6:armhf libisl23:armhf libmpfr6:armhf libmpc3:armhf libstdc++6:armhf`
* `sudo ln -s /usr/lib/arm-linux-gnueabihf/libisl.so.23.0.0 /usr/lib/arm-linux-gnueabihf/libisl.so.10`
* `sudo ln -s /usr/lib/arm-linux-gnueabihf/libmpfr.so.6.1.0 /usr/lib/arm-linux-gnueabihf/libmpfr.so.4`
* 然后您可以设置构建环境以编译固件补丁
* 设置构建环境:`source setup_env.sh`
* 编译一些构建工具并从原始固件文件中提取 ucode 和 flashpatches:`make`
* 转到 bcm43430a1/bcm43455c0/bcm43436b0 芯片组的 *patches* 文件夹:`cd patches/bcm43430a1/7_45_41_46/nexmon/` / `patches/bcm43455c0/<7_45_154 or 7_45_189>/nexmon/` / `cd patches/bcm43436b0/9_88_4_65/nexmon/`
* 编译打补丁的固件:`make`
* 生成原始固件文件的备份:`make backup-firmware`
* 在您的 RPI3 上安装打补丁的固件:`make install-firmware`
* 安装 nexutil:从我们仓库的根目录切换到 nexutil 文件夹:`cd utilities/nexutil/`。编译并安装 nexutil:`make && make install`。
* *可选*:删除 wpa_supplicant 以更好地控制 WiFi 接口:`apt-get remove wpasupplicant`
此外,禁用省电功能(`iw dev wlan0 set power_save off`)有助于防止固件崩溃。
* **注意:** 要连接到常规接入点,您必须先执行 `nexutil -m0`
### 使用 Monitor Mode 补丁
* 得益于 Mame82 的先前工作,您可以通过执行以下命令设置一个新的监控模式接口:
```iw phy `iw dev wlan0 info | gawk '/wiphy/ {printf "phy" $2}'` interface add mon0 type monitor```
* 要在固件中激活监控模式,只需启动接口:`ifconfig mon0 up`。
* 此时,监控模式处于活动状态。无需调用 *airmon-ng*。
* 该接口已经设置了 Radiotap 头,因此,像 *tcpdump* 或 *airodump-ng* 这样的工具可以开箱即用:`tcpdump -i mon0`
* *可选*:使 RPI3 在重启后加载修改后的驱动程序:
* 查看重启时默认驱动程序的路径:`modinfo brcmfmac` # 第一行应该是完整路径
* 备份原始驱动程序:`mv "/brcmfmac.ko" "/brcmfmac.ko.orig"`
* 复制修改后的驱动程序(内核 4.9):`cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_kernel49/brcmfmac.ko "/"`
* 复制修改后的驱动程序(内核 4.14):`cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko "/"`
* 探测所有模块并生成新的依赖关系:`depmod -a`
* 新驱动程序应在重启后默认加载:`reboot`
* **注意:** 可以在 `wlan0` 接口上并行连接到接入点或运行您自己的接入点以及监控模式接口。
# 如何构建实用程序
要为 Android 构建 nexmon 或 dhdutil 等实用程序,您需要下载**旧版** NDK 版本 11c,
解压它并导出环境变量 `NDK_ROOT`,指向您解压 NDK 文件的目录。
# 如何提取 ROM
Wi-Fi 固件由存储在每个 Wi-Fi 芯片 ROM 中的只读部分和由驱动程序加载到 RAM 中的另一部分组成。要分析整个固件,需要提取 ROM。有两种选择可以做到这一点。要么编写一个固件补丁,简单地将 ROM 的内容复制到 RAM,然后转储 RAM,要么在将常规固件加载到 RAM 后直接转储 ROM。尽管第二种选择更容易,但只有在驱动程序可以直接访问 ROM 的情况下才有效,但这并不总是可能的。此外,加载到 RAM 中的固件可能包含覆盖存储在 ROM 中数据的 ROM 补丁。通过在加载原始 RAM 固件后转储 ROM,它包含 flash patches。因此,需要为每次 RAM 固件更新重新转储 ROM 以保持一致性。作为结论,我们更倾向于在将其复制到 RAM 后转储干净的 ROM。
## 直接转储 ROM
要直接转储 ROM,您需要知道在哪里找到它以及它有多大。在带有 Cortex-M3 的芯片上,它通常位于高地址,例如 0x800000,而在带有 Cortex-R4 的芯片上,它可能位于 0x0。运行 dhdutil 执行转储:
```
dhdutil membytes -r 0x0 0xA0000 > rom.bin
```
## 复制到 RAM 后转储干净的 ROM
对于 BCM4339 和 BCM4358,我们创建了 `rom_extraction` 项目,它们加载一个固件补丁,将 ROM 复制到 RAM,然后使用 dhdutil 将其转储。要在项目目录中转储 ROM,只需执行以下命令:
```
make dump-rom
```
ROM 提取后,`rom.bin` 文件将被复制到相应的固件子目录中。要应用特定 RAM 固件版本的 flash patches,请进入其目录并执行:
```
make rom.bin
```
# 此仓库的结构
* `buildtools`:包含编译器和其他构建固件的工具
* `firmwares`
* ``
* ``
* ``:将被加载到 WiFi 芯片 RAM 中的原始固件
* `definitions.mk`:主要包含固件特定地址
* `structs.h`:仅对此固件版本有效的结构
* `Makefile`:用于提取 flashpatches 和 ucode
* `flashpatches.c`(由 Makefile 生成):包含 flashpatches
* `ucode.bin`(由 Makefile 提取):包含未压缩的 Ucode
* `structs.common.h`:固件版本之间通用的结构
* `patches`
* ``
* ``
* `nexmon`
* `Makefile`:用于构建固件
* `patch.ld`:链接器文件
* `src`
* `patch.c`:对固件的常规补丁
* `injection.c`:与帧注入相关的代码
* `monitormode.c`:与带 radiotap 头的监控模式相关的代码
* `ioctl.c`:处理自定义 IOCTL
* ...
* `obj`(由 Makefile 生成):从 C 文件创建的目标文件
* `log`(由 Makefile 生成):编译期间写入的日志
* `gen`(由 Makefile 生成):构建过程中生成的文件
* `nexmon.pre`(由 gcc 插件生成):提取的 at-attributes 和 targetregion-pragmas
* `nexmon.ld`(由 nexmon.pre 生成):用于将补丁代码放置在固件中定义地址的链接器文件
* `nexmon.mk`(由 nexmon.pre 生成):用于从 patch.elf 获取代码并将其放入固件的 Make 文件
* `flashpatches.ld`(由 nexmon.pre 生成):将 flashpatches 放置在固件 ROM 中目标位置的链接器文件
* `flashpatches.mk`(由 nexmon.pre 生成):用于将 flashpatch 配置和数据结构插入固件的 Make 文件
* `patch.elf`(由目标文件和链接器脚本生成):包含放置在预定义地址的新编译代码
* `common`
* `wrapper.c`:固件中已存在函数的包装器
* `ucode_compression.c`:基于 [tinflate](http://achurch.org/tinflate.c) 的 ucode 解压
`radiotap.c`:RadioTap 头解析器
* `helper.c`:有用的实用程序函数
* `driver`:打补丁的 brcmfmac 驱动程序
* `include`:通用包含文件
* `firmware_version.h`:芯片和固件版本的定义
* `patcher.h`:用于对现有固件代码执行修补的宏(例如,BPatch 修补分支指令)
* `capabilities.h`:允许指示能力(例如,监控模式和帧注入)
* `nexioctl.h`:定义自定义 IOCTL 号
# 相关项目
* [bcmon](https://bcmon.blogspot.de/):bcm4329 和 bcm4330 的监控模式和帧注入
* [monmob](https://github.com/tuter/monmob):bcm4325、bcm4329 和 bcm4330 的监控模式和帧注入
* [P4wnP1](https://github.com/mame82/P4wnP1):基于 Raspberry Pi Zero W 和 Nexmon 的可高度定制的攻击平台
* [kali Nethunter OS](https://github.com/nethunteros):将 Kali Linux 引入支持 Nexmon 的智能手机的 ROM
* [dustcloud-nexmon](https://github.com/dgiese/dustcloud-nexmon):适用于小米 IoT 设备(基于 ARM)的 Nexmon
* [InternalBlue](https://github.com/seemoo-lab/internalblue):基于博通蓝牙控制器逆向工程的蓝牙实验框架
# 关于固件黑客的有趣文章
如果您知道更多使用 nexmon 或执行类似固件黑客的项目,请告诉我们,我们将添加链接。
* [Project Zero](https://googleprojectzero.blogspot.de/2017/09/over-air-vol-2-pt-1-exploiting-wi-fi.html):Over The Air - Vol. 2, Pt. 1: Exploiting The Wi-Fi Stack on Apple Devices
* [broadpwn](https://blog.exodusintel.com/2017/07/26/broadpwn/):Remotely Compromising Android and IOS via a Bug in Broadcom's Wi-Fi Chipsets
* [Project Zero](https://googleprojectzero.blogspot.de/2017/04/over-air-exploiting-broadcoms-wi-fi_4.html):Over The Air: Exploiting Broadcom's Wi-Fi Stack (Part 1)
* [Project Zero](https://googleprojectzero.blogspot.de/2017/04/over-air-exploiting-broadcoms-wi-fi_11.html):Over The Air: Exploiting Broadcom's Wi-Fi Stack (Part 2)
# 阅读我的博士论文
* Matthias Schulz. [**Teaching Your Wireless Card New Tricks: Smartphone Performance and Security Enhancements through Wi-Fi Firmware Modifications**](http://tuprints.ulb.tu-darmstadt.de/7243/). Dr.-Ing. thesis, Technische Universität Darmstadt, Germany, February 2018. [pdf](http://tuprints.ulb.tu-darmstadt.de/7243/7/dissertation_2018_matthias_thomas_schulz.pdf)
# 阅读我们的论文
* F. Gringoli, M. Schulz, J. Link, and M. Hollick. [**Free Your CSI: A Channel State Information Extraction Platform For Modern Wi-Fi Chipsets**](https://doi.org/10.1145/3349623.3355477). Accepted to appear in *Proceedings of the 13th Workshop on Wireless Network Testbeds, Experimental evaluation & CHaracterization (WiNTECH 2019)*, October 2019. [code](https://nexmon.org/csi)
* D. Mantz, J. Classen, M. Schulz, and M. Hollick. [**InternalBlue - Bluetooth Binary Patching and Experimentation Framework**](https://dl.acm.org/citation.cfm?id=3326089). *In Proceedings of the 17th Annual International Conference on Mobile Systems, Applications, and Services (MobiSys '19)*. June 2019.
* M. Schuß, C. A. Boano, M. Weber, M. Schulz, M. Hollick, K. Römer. [**JamLab-NG: Benchmarking Low-Power Wireless Protocols under Controlable and Repeatable Wi-Fi Interference**](https://dl.acm.org/citation.cfm?id=3324331). *Proceedings of the 2019 International Conference on Embedded Wireless Systems and Networks (EWSN 2019)*, February 2019.
* M. Schulz, D. Wegemer, and M. Hollick. [**The Nexmon Firmware Analysis and Modification Framework: Empowering Researchers to Enhance Wi-Fi Devices**](https://doi.org/10.1016/j.comcom.2018.05.015). *Elsevier Computer Communications (COMCOM) Journal*. 2018.
* M. Schulz, J. Link, F. Gringoli, and M. Hollick. [**Shadow Wi-Fi: Teaching Smart- phones to Transmit Raw Signals and to Extract Channel State Information to Implement Practical Covert Channels over Wi-Fi**](https://dl.acm.org/citation.cfm?id=3210333). Accepted to appear in *Proceedings of the 16th ACM International Conference on Mobile Systems, Applications, and Services*, MobiSys 2018, June 2018.
* D. Steinmetzer, D. Wegemer, M. Schulz, J. Widmer, M. Hollick. [**Compressive Millimeter-Wave Sector Selection in Off-the-Shelf IEEE 802.11ad Devices**](https://dl.acm.org/citation.cfm?id=3143384). *Proceedings of the 13th International Conference on emerging Networking EXperiments and Technologies*, CoNEXT 2017, December 2017.
* M. Schulz, D. Wegemer, M. Hollick. [**Nexmon: Build Your Own Wi-Fi Testbeds With Low-Level MAC and PHY-Access Using Firmware Patches on Off-the-Shelf Mobile Devices**](https://dl.acm.org/citation.cfm?id=3131476). *Proceedings of the 11th ACM International Workshop on Wireless Network Testbeds, Experimental Evaluation & Characterization (WiNTECH 2017)*, October 2017. [pdf](https://www.seemoo.tu-darmstadt.de/mschulz/wintech2017) [video](https://youtu.be/m5Zrk4n4hoE)
* M. Schulz, F. Knapp, E. Deligeorgopoulos, D. Wegemer, F. Gringoli, M. Hollick. [**DEMO: Nexmon in Action: Advanced Applications Powered by the Nexmon Firmware Patching Framework**](https://dl.acm.org/citation.cfm?id=3133333), Accepted for publication in *Proceedings of the 11th ACM International Workshop on Wireless Network Testbeds, Experimental Evaluation & Characterization (WiNTECH 2017)*, October 2017. [pdf](https://www.seemoo.tu-darmstadt.de/mschulz/wintech2017demo)
* M. Schulz, F. Gringoli, D. Steinmetzer, M. Koch and M. Hollick. [**Massive Reactive Smartphone-Based Jamming using Arbitrary Waveforms and Adaptive Power Control**](https://dl.acm.org/citation.cfm?id=3098253). Proceedings of the *10th ACM Conference on Security and Privacy in Wireless and Mobile Networks (WiSec 2017)*, July 2017. [pdf](https://www.seemoo.tu-darmstadt.de/mschulz/wisec2017) [video](https://youtu.be/S2XPBK0KdiQ)
* M. Schulz, E. Deligeorgopoulos, M. Hollick and F. Gringoli. [**DEMO: Demonstrating Reactive Smartphone-Based Jamming**](https://dl.acm.org/citation.cfm?id=3106022). Proceedings of the *10th ACM Conference on Security and Privacy in Wireless and Mobile Networks (WiSec 2017)*, July 2017. [pdf](https://www.seemoo.tu-darmstadt.de/mschulz/wisec2017demo)
* M. Schulz. [**Nexmon - Wie man die eigene WLAN-Firmware hackt**](http://heise.de/-3538660),
c't 26/2016, S. 168, Heise Verlag, 2016.
* M. Schulz, D. Wegemer, M. Hollick. [**DEMO: Using NexMon, the C-based WiFi
firmware modification framework**](https://dl.acm.org/citation.cfm?id=2942419),
Proceedings of the *9th ACM Conference on Security and Privacy in Wireless and
Mobile Networks (WiSec 2016)*, July 2016. [pdf](https://www.seemoo.tu-darmstadt.de/mschulz/wisec2016demo1)
* M. Schulz, D. Wegemer and M. Hollick. [**NexMon: A Cookbook for Firmware
Modifications on Smartphones to Enable Monitor Mode**](http://arxiv.org/abs/1601.07077),
CoRR, vol. abs/1601.07077, December 2015.
[bibtex](http://dblp.uni-trier.de/rec/bibtex/journals/corr/SchulzWH16)
[Get references as bibtex file](https://nexmon.org/bib)
# 引用我们的项目
任何使用本项目并导致学术出版物或其他包含参考书目的出版物的情况,都应引用 Nexmon 项目,并根据您使用的代码引用我们的一篇论文。在我们的 [bibtex file](nexmon.bib) 中查找所有参考文献。以下是仅针对该项目的引用:
```
@electronic{nexmon:project,
author = {Schulz, Matthias and Wegemer, Daniel and Hollick, Matthias},
title = {Nexmon: The C-based Firmware Patching Framework},
url = {https://nexmon.org},
year = {2017}
}
```
# 联系方式
* [Matthias Schulz](https://seemoo.tu-darmstadt.de/mschulz)
* Daniel Wegemer
# 支持方
## Secure Mobile Networking Lab (SEEMOO)

## Networked Infrastructureless Cooperation for Emergency Response (NICER)

## Multi-Mechanisms Adaptation for the Future Internet (MAKI)

## Technische Universität Darmstadt

标签:ARM固件, Broadcom, CSI, Cypress, D11核心, Jammer, Monitor Mode, SDR, WiFi安全, WiFi芯片, 云资产清单, 信道状态信息, 固件补丁, 安全渗透, 客户端加密, 客户端加密, 嵌入式开发, 帧注入, 干扰检测, 攻击路径可视化, 无线网络安全, 物联网安全, 网卡驱动, 软件定义无线电, 逆向工具, 逆向工程, 通信协议分析, 隐蔽信道, 黑客工具