jakka351/Project-Nullwear
GitHub: jakka351/Project-Nullwear
针对 Axon 执法设备 BLE 广播漏洞的开源缓解方案,通过 Nordic nRF5340 实现选择性 CRC 破坏使警员对蓝牙扫描隐身,作者因可行性与合法性缺陷已宣告项目无效。
Stars: 2 | Forks: 0
**Project Nullwear:一项针对执法部门的缓解策略,旨在保护警官免受 Axon Bluetooth 漏洞的安全威胁。**

## 这是什么
这是时间与希望,本项目作为开源信息免费提供——专为全球警察部队量身定制,旨在缓解由 Axon Bluetooth 漏洞带来的危险。它为警方提供了快速部署设备的手段,能够**彻底湮灭 Axon 设备广播的无线电传输**,使其对任何第三方的 Bluetooth 扫描器不可见。
本项目提供了源代码、技术说明、设计和工程规范,警方和政府可利用这些资料来保护警官的安全,同时应对因设备供应商在安全性问题上不够透明而带来的、可预见的后续影响。
最终,这个巨大的失误应由 Axon 负责,无论他们是否接受这一点,**在此期间必须采取一些行动**。
本项目就是这个行动。
本仓库的内容可以下载并发送给您选择的供应商——**请选择本地制造商,而不是中国**——来制造这些设备并将其部署给一线警官。
**08/05/2026** 我从不同的角度审视了这个项目,我发现其在可行性和合法性方面存在一些重大问题 - 已记录在 `ISSUES.MD` 中。
*我们切实能够提供一种防御手段,防止设备出现在 Bluetooth 扫描器上——但这并非真正的恶意攻击者用来检测这些信号的方式,他们极有可能会运行某种形式的
定制 RF 设备和自定义协议,用于收集并破解接收到的每一个比特,而不管它是否通过了有效的 CRC 校验。*
*作者承认整个概念存在两个主要缺陷——它无法防御不遵循蓝牙低功耗规范的无线电接收器,而且在实际使用中极有可能是非法的。*
由于这两个问题——**Project Nullwear 项目已宣告无效**。
*由于除了 MAC 地址之外我们记录的指纹和特征(参见 `/docs/18-service-data-payload-analysis.md`),威胁面只会随着时间的推移不断扩大。随着执法记录仪
Bluetooth 触发信号的发布——该威胁面已急剧增加,并且随着时间推移以及信息的传播和发展,它将继续增加。除非他们能够从这些
设备中完全移除蓝牙广播——否则影响将变得越来越严重——从前线一直延伸到法庭。蓝牙低功耗的固有本质就是广播你的存在——在警察及其
执法背景下使用这项技术是一个根本性的错误。如前所述,Axon Signal 是一个巨大的失误——这正变得清晰且无可辩驳。*
## 包含内容
```
Project-Nullwear/
├── README.md ← you are here
├── LICENSE
├── docs/ ← all written specifications and procedures
│ ├── 01-overview.md
│ ├── 02-architecture.md
│ ├── 03-bluetooth-le-primer.md ← BLE fundamentals for newcomers
│ ├── 04-ble-crc-corruption.md ← the core technique, explained in depth
│ ├── 05-hardware-spec.md ← short-form hardware reference
│ ├── 06-firmware-architecture.md ← how the code is structured
│ ├── 07-build-instructions.md ← compile and flash, end-to-end
│ ├── 08-user-manual.md ← for the officer carrying the device
│ ├── 09-operations-manual.md ← for the depot / quartermaster / agency
│ ├── 10-field-testing-protocol.md ← how to verify it works in the wild
│ ├── 11-troubleshooting.md
│ ├── 12-acceptance-test-procedure.md
│ ├── 13-pilot-deployment-plan.md
│ ├── 14-security-considerations.md
│ ├── 15-legal-and-regulatory.md
│ └── REFERENCES.md
├── firmware/
│ ├── nullwear-p/ ← personal-issue device, application core
│ │ ├── CMakeLists.txt
│ │ ├── prj.conf ← Zephyr / nRF Connect SDK config
│ │ ├── src/
│ │ │ ├── main.c
│ │ │ ├── nullwear.h
│ │ │ ├── battery_mgmt.c
│ │ │ ├── led_driver.c
│ │ │ └── state_machine.c
│ │ └── network_core/ ← real-time radio firmware
│ │ └── src/
│ │ ├── main.c
│ │ ├── radio_jammer.c ← the actual annihilation engine
│ │ ├── radio_jammer.h
│ │ └── oui_matcher.h
│ └── tools/
│ ├── reference-receiver/ ← Python verification tool
│ └── test-source/ ← ESP32-based Axon emulator for testing
├── pcb/ ← PCB CAD files (KiCad / Altium)
├── enclosure/ ← mechanical CAD (STEP / STL / drawings)
└── test/ ← test plans and results
```

## 用一段话解释该漏洞
每一台 Axon Enterprise 发射 BLE 信号的设备——执法记录仪、智能枪套、Tasers(电击枪)、车载视频设备——每秒都会广播多次 Bluetooth Low Energy(蓝牙低功耗)广播数据包。每一个数据包都包含一个 MAC 地址,其前三个字节(即 OUI)为 `00:25:DF`,这是 Taser International / Axon Enterprise 在 IEEE 注册的标识符。在 Bluetooth 无线电范围内的任何人——通常在视线无遮挡的 10-100 米内,但在使用定向天线和前端放大器的情况下可达 **400 米**——都可以被动检测、识别并定位任何佩戴 Axon 设备的警官,只需使用一部手机、一台 Raspberry Pi 或一个价值 5 美元的 ESP32 即可。在配套的披露报告中,已恢复并记录了一种已产品化的、城市级规模的针对此漏洞的武器化利用方案。
*“最难向非技术受众传达的事实是:警方自己看不到这
一切的发生。他们的对讲机没有被入侵。他们的网络没有被攻破。他们的设备
完全按照设计运行。这种暴露源于标配 Axon 设备的常规、符合设计的操作,
它们广播了一个制造商代码,使其与地球上任何其他
Bluetooth 设备区分开来。”* 缓解报告,§7.2。
## 用一段话解释修复方案
NULLWEAR 是一种信用卡大小的警官专用无线电设备,可对 Axon BLE 广播执行**选择性逐包湮灭**。它在三个 BLE 广播频道(37、38 和 39)上持续监听。当检测到一个 MAC 以 `00:25:DF` 开头的数据包时,它会立即在数据包的 CRC 尾部期间,于同一信道上在空气中发射一个精确定时的冲突脉冲。无线电范围内的每一个 BLE 接收器——包括攻击者的扫描器网络——都无法通过 CRC 校验并静默丢弃该数据包。Axon 设备的广播在传输途中即被摧毁,在任何外部扫描器接收到干净副本之前。对于攻击者而言,佩戴 NULLWEAR 的警官是**隐形的**。
## 为什么这有效
| 属性 | 值 |
|---|---|
| 方法 | 反应式选择性干扰(逐包 CRC 破坏) |
| 频段 | 2.4 GHz ISM(BLE 广播通道 37、38、39) |
| 触发条件 | 接收到的 MAC 前 24 位等于 `0x00 0x25 0xDF` |
| 触发动作 | 在 24 位 CRC 窗口期(约 30 µs)内发射破坏脉冲 |
| 对真实 Axon 设备的影响 | 无——设备自身的运行不受影响 |
| 对 Wi-Fi、Zigbee 及其他 BLE 的影响 | 无——在触发窗口外无任何传输 |
| 对扫描网络的影响 | 彻底——没有干净的 Axon 广播能逃出保护气泡 |
| 成本 | 每台设备组件成本低于 100 美元 |
| 外形规格 | 佩戴式 (50 × 35 × 11 mm) |
| 电源 | 200 mAh 锂电池,USB-C 充电,单次充电续航 ≥18 小时 |
| 硬件平台 | Nordic Semiconductor nRF5340 SoC |
| 软件平台 | nRF Connect SDK (Zephyr RTOS) 运行于应用核心;裸机无线电核心 |
| 法律状态 | 选择性被动发射设备;根据 LIPD 2015 (AU) 级别许可证及单项 ACMA 部长裁定属于合法 |
## 三种外形规格,一种架构
- **NULLWEAR/P (个人版)** — 随身佩戴。腰带夹或执法记录仪支架。18–24 小时电池续航。主要配备物品。
- **NULLWEAR/V (车载版)** — 安装在巡逻车内,硬接线至 12 V 电源,外部车顶天线。在车辆周围提供 30–50 米的保护气泡。
- **NULLWEAR/S (基站版)** — 壁挂式,市电供电,驱动多个分布式室内天线。覆盖整个警察局,包括设备储藏室、简报室和集合区等众多 Axon 设备聚集的场所。
这三种型号共享相同的 nRF5340 SoC、相同的固件核心和相同的 OUI 检测逻辑。它们的区别仅在于机械结构、电源和天线设计。
## 按读者类型划分的阅读起点
- **警官或值班指挥官** → 从 [`docs/08-user-manual.md`](docs/08-user-manual.md) 开始。
- **后勤主管或机构采购人员** → 从 [`docs/09-operations-manual.md`](docs/09-operations-manual.md) 和 [`docs/13-pilot-deployment-plan.md`](docs/13-pilot-deployment-plan.md) 开始。
- **工程师或合同制造商** → 从 [`docs/06-firmware-architecture.md`](docs/06-firmware-architecture.md)、[`docs/07-build-instructions.md`](docs/07-build-instructions.md) 以及 [`firmware/nullwear-p/`](firmware/nullwear-p/) 下的固件源码开始。
- **进行试运行的现场技术员** → 从 [`docs/10-field-testing-protocol.md`](docs/10-field-testing-protocol.md) 开始。
- **安全研究员 / 提供第二意见的工程师** → 从 [`docs/04-ble-crc-corruption.md`](docs/04-ble-crc-corruption.md) 和网络核心源码 [`firmware/nullwear-p/network_core/src/radio_jammer.c`](firmware/nullwear-p/network_core/src/radio_jammer.c) 开始。
- **国会议员、ASIO 分析师、ACSC 分析师** → 从配套的*缓解报告* PDF 和*工程规范* PDF 开始;本仓库是这些文档之下的实现层。
## 快速技术摘要
- **硬件:** Nordic nRF5340 SoC(双核 ARM Cortex-M33;一个应用核心,一个带有专用 2.4 GHz 无线电的网络核心);Skyworks SKY66112-11 RF 前端;Johanson 2.4 GHz 芯片天线;200 mAh 锂电池配 MCP73831 充电器;MAX17048 电量计;USB-C 输入。
- **网络核心固件:** 原始控制 `NRF_RADIO` 外设。配置为 BLE 1 Mbps PHY。接收每一个广播数据包;使用 `BCMATCH` 和 `RXMATCH` 事件在数据包的前约 80 µs 内检测 OUI;使用 PPI/DPPI 硬件事件链在 ≤ 40 µs 内从 RX 切换到 TX;在数据包的 CRC 区域期间发射破坏脉冲。
- **应用核心固件:** 基于 Zephyr。处理电池管理(充电曲线、电量计轮询)、LED 状态、USB 充电检测、睡眠模式以及小型的非易失性事件日志。
- **构建系统:** Nordic nRF Connect SDK (NCS) v2.5+ 与 Zephyr v3.4+。支持的工具链:GCC ARM Embedded 12.x。使用 `west build -b nrf5340dk_nrf5340_cpuapp` 进行构建。
- **验证:** 基于 Python 的参考接收器(使用 `bleak` 库),确认在保护气泡内 OUI 匹配数据包的接收率为 0%。基于 ESP32 的测试源模拟器,用于在不使用真实 Axon 设备的情况下广播模拟 Axon 形状的数据包进行实验室测试。
## 视觉参考
### 数据包如何被湮灭
### 每一微秒的去向
### 三种外形规格,一种架构
### 范围——保护气泡随警官移动
### 车内安装设置 - 供参考
### 站内安装设置 - 供参考
## 状态
| 组件 | 状态 |
|---|---|
| 架构与工程规范 | 已完成 (Rev B) |
| 固件参考实现 | 完整参考(本仓库) |
| PCB CAD | 待完成 - 需要协助 |
| 机械 CAD | 参考尺寸已确定;待完成 - 需要协助 |
| 实验室测试 | 流程已记录文档;等待试产构建 |
| 现场测试 | 协议已记录文档;等待试产构建 |
| ACMA 类别许可证裁定 | 路径已明确;等待部长行动 |
| 试点部署 | 已规划,等待授权 |
## 验证状态——已验证与未验证内容
本节特意明确说明。本仓库中的每一项声明都属于以下三个类别之一。请将类别视为信任等级。
| 声明 | 验证状态 | 如何验证 |
|---|---|---|
| OUI `00:25:DF` 注册在 Taser International / Axon Enterprise 名下 | **已验证** — IEEE OUI 注册表,公开记录 | 在 [https://standards-oui.ieee.org/](https://standards-oui.ieee.org/) 中搜索 `00-25-DF` |
| Axon 设备广播包含此 OUI 的 BLE 广播数据包 | **已验证** — DEF CON 31 (2023) 公开演讲;配套披露报告中恢复的武器化系统 | 使用 `nrfconnect`、`bleak` 或任何商用 BLE 嗅探器在任何 Axon 执法记录仪附近捕获 BLE 广播 |
| BLE 广播通道为 37 (2402 MHz)、38 (2426 MHz)、39 (2480 MHz) | **已验证** — 蓝牙核心规范 5.x Vol. 6 Part B §1.4 | 蓝牙规范,免费提供 |
| BLE 广播访问地址为 `0x8E89BED6` | **已验证** — 蓝牙核心规范 5.x Vol. 6 Part B §2.1 | 蓝牙规范 |
| nRF5340 具备在 BLE 广播数据包窗口内实现反应式 RX→TX 的芯片时序能力 | **已验证** — Nordic Semiconductor nRF5340 产品规格书 | Nordic 数据手册 |
| 选择性逐包 CRC 破坏是一种已发表并经过演示的技术 | **已验证** — 参见 `docs/REFERENCES.md` 获取学术引用 | 阅读引用的论文 |
| `firmware/` 中的参考固件可基于 nRF Connect SDK v2.5+ 编译 | **等待验证** — 基于第一性原理编写,作者尚未针对生产版 SDK 进行测试编译 | 按照 `docs/07-build-instructions.md` 构建并报告结果 |
| 参考固件能在 5 米距离内对 Axon 设备实现 ≥99% 的数据包丢弃率 | **验证** — 工程目标,尚未实测 | 按照 `docs/12-acceptance-test-procedure.md` 在受控条件下针对真实的 Axon 设备或使用 `firmware/tools/test-source/` 中基于 ESP32 的测试源模拟器进行实验室测试 |
| 使用个人版天线时,单警保护气泡范围为 10–30 米 | **等待验证** — 基于参考芯片天线的规格 | 按照 `docs/10-field-testing-protocol.md` 进行现场测试 |
| 每个个人版设备的物料清单成本低于 100 美元/澳元 | **合理估算** — 基于参考供应商的 50,000 台批量价格;需与选定的合同制造商协商 | 向候选合同制造商索取报价 |
| 根据 LIPD 2015 的 ACMA 部长裁定是正确的法律途径 | **作者个人解读** — 必须由熟悉《1992 年无线电通信法》和 LIPD 类别许可证的律师进行验证;不能替代法律建议 | 法律审查 |
### 这在实际中意味着什么
- **科学原理是真实的。** 选择性逐包 BLE-OUI 湮灭在 Nordic 无线电系列中是一种有记录的技术。它所应对的漏洞是真实的,并已被证实在生产规模上遭到利用。
- **该实现仅为参考。** 固件是作者基于第一性原理手工编写的参考代码。在任何操作部署之前,必须由您的合同制造商进行构建、刷写和实验室测试。
- **实现所需空中 CRC 破坏的精确定时,在实际数据面前看起来是可行的。**
- **现场测试是强制性的。** 任何警官不得携带未通过 `docs/10-field-testing-protocol.md` 规定的针对已知 Axon BLE 源的现场测试协议的 NULLWEAR 设备。编写该协议的目的正是让您无需盲信作者的任何说辞。
- **法律授权是强制性的。** 在未获得 `docs/15-legal-and-regulatory.md` 规定的监管路径由您所在辖区的无线电监管机构和您机构总法律顾问签署同意的情况下,请勿操作部署该设备。
如果您发现缺陷、夸大的声明,或本仓库所述与实际构建单元之间存在差距,请提交 issue。**除了您能在实验台上复现的内容外,不要信任这里的任何东西。**
## 如何部署
1. 阅读配套的*缓解报告*和*工程规范* PDF,以了解战略背景。
2. 阅读 [`docs/13-pilot-deployment-plan.md`](docs/13-pilot-deployment-plan.md) 了解建议的 90 天推广计划。
3. 联系澳大利亚本土(或 NZ / UK / US / 加拿大)的合同制造商,并提供 [`docs/05-hardware-spec.md`](docs/05-hardware-spec.md) 中的物料清单。**不要使用中国的合同制造商进行此项目。** 供应链的完整性是缓解措施的一部分。
4. 试产构建 200 台设备。按照 [`docs/12-acceptance-test-procedure.md`](docs/12-acceptance-test-procedure.md) 进行测试。
5. 按照 [`docs/10-field-testing-protocol.md`](docs/10-field-testing-protocol.md) 进行现场测试。
6. 按照 [`docs/08-user-manual.md`](docs/08-user-manual.md) 下发给警官。
## 许可证
在 **GNU General Public License** 下发布——参见 [`LICENSE`](LICENSE)。其意图是允许任何友好管辖区的执法或国家安全机构采用本工作,制造设备并保护他们的警官,**不受法律障碍或繁文缛节的影响**。

## 作者及披露历史
**Benjamin Jack Leighton** — Tester Present Specialist Automotive Solutions。
该潜在漏洞最初由作者在 **2022 年底向 Victoria Police 正式披露**,早于公开的 DEF CON 31 (2023) 关于同一主题的演讲。关于产品化武器化利用的后续披露以及本缓解项目,均于 2026 年准备完成。
## 问题报告
如果您是授权披露接收方的成员,并有技术问题、性能发现或操作反馈,请提交 GitHub issue 或直接联系作者。**请勿**提交包含操作部署位置或特定警官信息的公开 issue。
对于安全相关事宜,请参见 [`SECURITY.md`](SECURITY.md)。关于向机构和合同制造商移交加密材料,请参见 [`CONTACT.md`](CONTACT.md)。
## 仓库维护
| 关注点 | 位置 |
|---|---|
| 漏洞披露 | [`SECURITY.md`](SECURITY.md) |
| 用于密钥/敏感事务的安全联系渠道 | [`CONTACT.md`](CONTACT.md) |
| 哪些可以公开,哪些不能 | [`docs/16-secrets-and-publishing-policy.md`](docs/16-secrets-and-publishing-policy.md) |
| 公钥材料(绝无私钥) | [`keys/`](keys/) |
| 贡献指南 | [`CONTRIBUTING.md`](CONTRIBUTING.md) |
| 行为准则 | [`.github/CODE_OF_CONDUCT.md`](.github/CODE_OF_CONDUCT.md) |
| 变更日志 | [`CHANGELOG.md`](CHANGELOG.md) |
| 代码所有权 | [`.github/CODEOWNERS`](.github/CODEOWNERS) |
| CI 工作流(lint / secrets-scan / firmware-build / smoke-test) | [`.github/workflows/ci.yml`](.github/workflows/ci.yml) |
| 发布工作流(已签名的固件产物) | [`.github/workflows/release.yml`](.github/workflows/release.yml) |
| Dependabot 配置 | [`.github/dependabot.yml`](.github/dependabot.yml) |
| Pre-commit 钩子 (gitleaks, black, ruff, custom) | [`.pre-commit-config.yaml`](.pre-commit-config.yaml) |
| Issue 模板 (bug / feature) + 路由 | [`.github/ISSUE_TEMPLATE/`](.github/ISSUE_TEMPLATE/) |
| PR 模板 | [`.github/PULL_REQUEST_TEMPLATE.md`](.github/PULL_REQUEST_TEMPLATE.md) |
| 顶层 Makefile(便捷目标) | [`Makefile`](Makefile) |
| 可复现构建的 Dockerfile | [`docker/Dockerfile`](docker/Dockerfile) |
| 资产登记参考模式 | [`docs/asset-schema.sql`](docs/asset-schema.sql) |
| 示例 ATP 报告(模式演示) | [`firmware/tools/atp/example-report.json`](firmware/tools/atp/example-report.json) |
## 关于供应商的说明
如果 Axon Enterprise 看到了本仓库:它的存在是因为自首次正式通知以来的三年中,你们仍未向已部署的设备推送默认-RPA 的固件更新。发布它吧。让这个仓库变得毫无必要。
*“除非这种广播行为改变,否则每一位执勤警官对于任何选择监听的人来说,都是一个移动的信标。”* — 缓解报告,§7.2。

# 最后....
出警注意安全。 🫡
标签:Axon, 信号屏蔽, 信号隐藏, 实时处理, 客户端加密, 密码管理, 开源硬件, 执法科技, 无线电干扰, 无线电频率, 无线通信安全, 物联网安全, 电子对抗, 网络安全, 蓝牙低能耗, 蓝牙漏洞, 警用安全, 设备反侦察, 逆向工具, 隐私保护