公式ファームウェアで直接 BLE Spam を動かす Flipper ツール
Flipper-zero-on-dwgx は公式ファームウェア OFW 上で直接動く Flipper Zero の app パックで、中心は BLE Spam、ついでに自分が整理した SD カードのリソースも同梱している。サードパーティファームウェアにある使い勝手のいい BLE Spam はどれも RAW HCI で Bluetooth スタックを力技で叩いていて、魔改ファームを焼かないと動かない。一つの機能のためにシステム一式を入れ替えたくなかったので、魔改ファームに依存しないバージョンを書き直した。
中心は x_ble_spam、8KB ちょっとの .fap だ。RAW HCI には触れず、公式が公開している furi_hal_bt_extra_beacon_* API を使って広告を出す。システムの Bluetooth スタックと衝突しないので、ファームの入れ替えも要らない。39 種類のデバイスの広告を模倣していて、Apple Proximity Pair / Nearby Action、Samsung EasySetup、Google Fast Pair、Windows Swift Pair をカバーしている。操作は方向キーでデバイス切り替え、OK で広告のオンオフ、BACK で終了、長押しでページ送り。
ハマったプロトコルの落とし穴をいくつかメモしておく。Apple Proximity Pair のバッテリーバイトは rand() % 16 にする必要があり、% 10 ではない。でないと Beats のイヤホンでダイアログが出ない。Nearby Action の Continuity type は 0x0F、flags は 0xC0 にする。AppleTV への参加を模擬する場合は 0xBF。BLE のアドレスタイプは必ず GapAddressTypeRandom で、MAC の先頭 2 ビットを 0xC0 に強制しないとプロトコルに適合しない。Setup New iPhone や iOS17 Crash のようなシステムのポップアップは新しい iOS ですでに公式に修正されている。これはプロトコルの時効の問題で、コードのせいではない。
リポジトリには自分の SD カードのリソーススナップショットも置いてあり、Bluetooth / NFC / Sub-GHz / GPIO / Infrared / Games で分類し、さらにリンクを検証してまだ生きているコミュニティのナビゲーションも付けた。パッケージ化する前に機微なものは全部削除した——交通カードの dump、U2F 秘密鍵、FindMy ビーコンの秘密鍵、BT HID のペアリングキー、それに自宅の SSID を含むスキャンログ。残しておくのはプライバシーのリスクでしかない。
custom_apps/x_ble_spam は自分で書いたもので、個人利用、二次配布はしない。SD カード内のサードパーティの .fap の著作権は原作者に帰属し、ここは学習用のミラーにすぎない。テストは自分のデバイスに限定すること。無茶はしないように。