GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

FlyingIceyyds/BW16-Tools 项目深度技术分析

项目背景与痛点

在无线网络安全领域,无论是家用Wi-Fi网络还是企业无线网络,如何防止身份认证攻击、无线干扰及信道钓鱼等一系列安全威胁,是当前很多网络安全工程师和研究人员面临的一大挑战。BW16-Tools 正是在这一背景下应运而生,旨在为研究者提供一套能够对无线网络进行深入安全测试的工具集。

该项目聚焦于 Ai-Thinker BW16-Kit RTL8720DN 设备上的 Wi-Fi 和蓝牙功能,其提供了包括解除身份认证、信道干扰检测、认证/关联帧洪水攻击以及蓝牙弹窗攻击等功能。通过这些功能,研究人员可以更深入地理解无线网络安全中的脆弱环节,并为防御措施的开发提供数据支持。

核心技术揭秘

技术架构

BW16-Tools 的核心实现依赖于 Arduino 开发环境和 RTL8720DN 芯片的底层硬件支持。整体来看,项目主要围绕无线安全测试功能,通过定制的接口和硬件驱动完成。核心架构涉及Wi-Fi功能和BLE功能两大部分。

数据流图说明
graph TD A[用户命令行输入] --> B{"参数解析"} B -->|"参数合法"| C[发送命令] C --> D[Wi-Fi/BLE硬件接口] D --> E[执行Wi-Fi/BLE操作] E --> F[操作结果监控] F -->|"到位"| G[结果反馈] B -->|"参数非法"| H[错误提示]

从图中可以看出,用户的输入命令被解析为具体的参数,通过软硬件接口发送给 Wi-Fi 硬件或 BLE 模块。这一流程通过对不同功能模块的调用,实现如解除身份认证、加密帧的发送与接收等操作,最终将操作结果反馈给用户。

实现原理与关键组件

程序通过调用 RTL8720DN 的底层库函数,实现核心功能的逻辑处理。其中,解除身份认证(Deauth)功能模块利用RTL库函数发送解除认证帧;信道干扰和Deauth/Disassoc帧检测功能监控Wi-Fi信道中的异常流量;蓝牙弹窗攻击则通过对BLE数据包的内容进行特定修改。

核心算法部分不仅需要底层硬件的支持,还涉及对Wi-Fi及蓝牙协议的理解,让攻击和防御措施在特定情景下奏效。因此,设计者的编程能力及对网络协议的掌握程度对工具的成功开发至关重要。

功能亮点与差异

BW16-Tools 承载了多项关键功能,与市场上的许多安全测试工具相比,它不仅更为专注,还具备跨平台的能力与自定义脚本执行,这些都是其显著优势。具体的亮点包括:

  1. 解除身份认证攻击:一种有效检测和审核无线网络安全性的手段,通过发送解除认证帧,模拟攻击行为。
  2. 蓝牙弹窗攻击:因蓝牙攻击的复杂性和不可预见性,为用户开辟了一个全新的研究领域,这也是当前很多安全工具未曾涉猎的。
  3. 自定义脚本功能:提供命令行模式,便于根据具体需求编写测试脚本,支持高度个性化的安全测试。

应用场景与落地建议

该工具的应用场景广泛,适用于教育培训机构的安全课程使用,科研机构进行网络漏洞挖掘的实验,或者是个人在自行架设家用无线网络安全研究中使用。由于这些功能极容易引起对他人网络环境的侵犯,建议使用者需具备极高的信息安全意识,明确告知任意测试活动的合法性与不滥用原则。

此外,虽然项目已提供了丰富的功能模块,但工具的正确与合规操作依然需要使用者付出大量学习时间和精力去理解各项功能背后的原理,以确保在安全范围内使用该工具开展研究。

综合评价

BW16-Tools 在无线安全测试领域展示了出色的能力。其简洁的用户交互界面、强大的功能实现以及易用的自定义脚本支持,使其成为一款不可或缺的研究工具。但同时,它也存在一定的使用风险,不当使用可能会触犯法律法规,因此,项目强调的合法使用警示值得用户深入理解和遵守。对于开发者而言,该项目同样提供了良好的学习机会和实践平台,可用于深入研究Wi-Fi及蓝牙协议及其安全特性。

简要分析

热度分
441
价值分
206
活跃状态
活跃

语言占比

C
C++

Release

贡献者

README

🛠️ BW16-Tools

基于Ai-Thinker BW16-Kit RTL8720DN 的无线安全测试工具。包含WIFI功能:解除身份认证(Deauth),信道干扰(Channel Interference),Deauth/Disassoc帧检测(Detect),密码钓鱼(Phishing),认证/关联帧洪水攻击(Dos),以及BLE功能:蓝牙弹窗攻击,蓝牙信标广播等。仅用于安全性研究和教育目的,请勿滥用。使用Arduino开发。

2025-10-22

此项目已归档,不再计划更新。

由于BW16硬件资源比较有限,我认为不适合继续添加新的功能。另外此项目最初只为自用,并且我没有Arduino相关的开发经验,这导致项目结构混乱不易维护。同时我收到的一些反馈,有一些因设备而异造成的问题,有些设备工作正常,而有些设备会遇到问题,我并没有更好的办法来排查此类问题。如果后续你对此项目有任何疑问可随时与我联系。另外我在规划一个新的功能更全面且结构规范易维护的项目(同类型但与BW16无关),但目前详情还只是未知。

补充:此项目基于5gwifi-bw16,大部分的功能实现依靠RTL8720dn-WiFi-Packet-Injection

当前项目包含两个分支:

  • main分支

    • 仅包含WIFI相关功能
    • 功能稳定,无资源紧缺造成的严重故障(如内存溢出等)
  • Beta分支

    • 包含蓝牙BLE相关功能(蓝牙弹窗和蓝牙信标广播)
    • 由于BW16内存资源有限,Beta版BLE功能会造成严重的内存溢出,导致部分设备出现SSID列表显示异常,无法启动,功能异常等,需自行测试

如果你只需要使用WIFI相关功能,那么请前往releases下载最新版本Bin文件进行烧录,或克隆仓库自行编译:

git clone https://github.com/FlyingIceyyds/BW16-Tools/

如果你要使用BLE蓝牙相关功能,那么请下载此版本Bin进行烧录:Beta 1.0,或克隆仓库自行编译:

git clone -b Beta https://github.com/FlyingIceyyds/BW16-Tools/

注意:Beta版中,一些WIFI相关功能可能无法使用或工作不正常,具体因设备而异。如果不需要使用BLE蓝牙相关功能,请不要使用Beta版本!这似乎是由于内存不足引起的内存溢出,软件层面很难跟进修复。

另外如果使用过程中遇到了一些bug,建议尝试不同版本,请尝试更换至3.0,2.1,Beta1.0,选择你认为最实用的版本

📌 使用须知

本项目旨在合规前提下用于安全性研究和教育目的,请勿滥用。

📑 功能介绍

  • 扫描SSID/AP [Scan]
    • 快速扫描:常规主动+被动扫描
    • 深度扫描:多种扫描模式,逐个信道扫描
  • 解除认证攻击 [Attack -> Deauth]
    • 发送解除认证管理帧强制客户端断开连接
    • WPA3强制启用管理帧保护,所以对WPA3网络无效
  • 信标帧攻击 [Attack -> Beacon]
    • 随机信标帧攻击:发送大量随机信标帧
    • 克隆指定AP:克隆指定AP发送的信标帧SSID
    • 可选择工作频段2.4G/5G
  • 密码钓鱼 [Phishing]
    • 支持选择Web页面样式
  • 连接/信道干扰 [Channel Interference]
    • 将目标AP发送的信标帧和探测响应克隆到多个信道
    • 客户端无法确认真正的AP工作在哪个信道,从而干扰连接
    • 通信层面干扰,无视WPA/WPA2/WPA3等安全协议
  • 广播黑洞[BBH]
    • 主要功能:尝试吞噬目标AP生成的信标帧从而使目标WIFI无法被扫描到
    • 被动技能:实测此功能运行时如果附近有Windows设备正在扫描WIFI,那么有概率导致此设备无线网卡故障,表现为扫描不到WIFI或WIFI开关无法开启,重启设备或重启网卡即可解决
  • AP洪水攻击 [Dos]
    • 向目标AP发送大量随机Mac地址的开放认证请求和关联请求帧
    • 实测针对轻量家用路由和随身WIFI效果显著,对于手机热点无效
  • 攻击帧检测 [Detect]
    • 监听指定信道中的Deauth/Disassoc帧
    • 支持选择信道组(2.4G/5G/全部/常用)
    • 智能记录疑似被攻击的接入点
    • (然而并不智能,它会记录一些无用的内容)
  • 监视器 [Monitor]
    • 监听指定信道中的有效数据包数量
    • 生成实时图表统计
    • 右上角出现“[*]”指示,表示监听到了解除认证/关联帧
  • 快速抓包 [Capture]
    • 抓取WAP/WPA2握手包,与 Web UI 的 Handshake Capture 功能相同,但操作相对更方便
  • Web UI
    • 自定义SSID信标帧攻击 [Custom Beacon]
    • WPA/WPA2握手包抓取 [Handshake Capture]

📟 OLED UI

UI

🔗 部分代码来源

🧾 许可证

采用 GPL 3.0 许可证,使用此项目,请遵守:

  • 禁止修改后闭源售卖
  • 禁止应用于闭源项目/产品
  • 售卖衍生产品需保留版权并无条件提供源代码(禁止以本项目固件为卖点高价售卖设备)

🧭 使用指南

物料

  • Ai-Thinker BW16-Kit (RTL8720DN)
  • 0.96 OLED 屏幕 (SSD 1315 / 1306)
  • 任意按钮 x 4
  • 3.7v 锂电池 & 充电模块 & 电源开关(可选)

接线

0.96OLED BW16-Kit
GND GND
VCC 3V3
SCL PA25
SDA PA26
按键映射 BW16-Kit
BTN_UP (上) PA27
BTN_DOWN (下) PA12
BTN_OK (确认) PA13
BTN_BACK (返回) PB2

按钮一端接BW16-Kit对应端口引脚(PA/PB),另一端接BW16-Kit任意GND引脚

可在 BW6-Tools.ino 中修改按键引脚定义:

// 按键引脚定义
#define BTN_DOWN PA12
#define BTN_UP PA27
#define BTN_OK PA13
#define BTN_BACK PB2

PCB参考

PCB

PCB

BOM

  • Ai-Thinker BW16-Kit [x1]
  • 0.96 OLED (SSD 1315 / 1306) [x1]
  • 4 * 4 * 1.8 轻触开关 [x4]
    • 长宽 4 * 4,高度随意
  • SS12D07 G3 (8.8 * 4.5 * 3) 拨片开关 [x1]
    • 立式直插,长宽 8.8 * 4.5,柄长随意
  • 3.7V 锂电池 502030 [x1]
    • 厚 5mm ,宽 20mm,长30mm
  • CL4056 3.7V 锂电池充电模块 [x1]
    • 长16.8mm * 宽12mm

使用预编译bin烧录固件

前往 Releases 下载编译好的bin文件,使用任意烧录工具烧录固件

  • 烧录前需要按住BW16-Kit上的Burn按键不放,随后按一下RST按键进入下载模式

自行编译烧录固件

1.为Arduino IDE安装BW16开发板

Arduino_IDE_1

Arduino_IDE_2

  • 请安装3.17版本!!!

Arduino_IDE_3

2.导入本地库

  • 依次导入本仓库 libraries 目录中所有库文件

Arduino_IDE_4

3.编译项目并上传

  • 打开/src/BW16-Tools/BW16-Tools.ino
  • 使用USB连接BW16-Kit
  • 按住BW16-Kit上的Burn按键不放,随后按一下RST按键进入下载模式
  • 编译并上传

Arduino_IDE_5

评论

暂无评论