dwgx@blog:~$dwgx
> cd ../posts

给 Flipper Zero 写个 BLE Spam 应用

// created

flipper-custom-apps 是给 Flipper Zero 写的自定义应用, 核心是一个 X-BLE Spam。原理很直接: 用官方的 furi_hal_bt_extra_beacon_* 发 BLE 广播包, 伪造成 Apple、三星、Android、Windows 的配对广播, 附近手机就会自动弹配对框。

内置 40 种设备配置, Apple 这边有 Proximity Pair(AirPods 各代、Beats、AirTag)和 Nearby Action(Vision Pro、AppleTV、HomePod、HomeKit), 另外有三星 Buds/Galaxy Watch 的 EasySetup、Android Fast Pair、Windows Swift Pair, 再塞一个 LoveSpouse。加了个 [ALL] Rotate 自动轮播, 每次广播随机换一次 BLE MAC, 免得一直用同一个地址。

交互做得很朴素, 左右切配置, OK 开始停止, 屏幕一行 Broadcasting BLE:OK, 出错就显示 BLE:ERR, 再配蓝色/红色 LED 区分状态。退出时会把蓝牙状态干净还原, 不然 Flipper 后面用起来会出问题。

花心思的是 ESP32 联动。用 GPIO UART 接一块跑 Ghost ESP 或 Marauder 固件的 ESP32, 应用把指令转发过去, 两个射频一起打。两种固件指令格式不一样, 我干脆两条都发(blespam -appleblespam -t apple), 哪个固件认哪条自己判断, 停止就发 blespam -sstopscan。UART 走 115200, 没检测到 ESP32 就跳过 boost, Flipper 自己单打不受影响。

结构上就一个外部 FAP。application.fam 声明成 FlipperAppType.EXTERNAL, 用 ufbt 编译(ufbt buildufbt launch 直接部署), 产物丢进 apps/Bluetooth/ 就能跑。x_ble_spam.c 是入口、UI 和包构造, esp_boost.c/h 管 ESP32 那段 UART。

这东西只拿来自己研究蓝牙协议和设备指纹。仓库是自定义许可证, 仅限个人学习, 不许商用和再分发。