FindMy Flipper - AirTagおよびSmartTagエミュレーター
(github.com/MatthewKuKanich)- FindMy Flipperは、FlipperZeroのBluetooth機能を拡張し、Apple AirTag、Samsung SmartTag、Tile Trackerのように動作させるアプリ
- FlipperZeroのBLEビーコンでSmartTag信号をブロードキャストし、既存タグを複製したりOpenHaystackの鍵ペアを生成したりして、Apple FindMyネットワークと連携できる
- 既存タグの複製方式では、AirTag、Samsung SmartTag、Tile TrackerのMACアドレスとpayloadを取得してネイティブアプリで追跡できるが、AirTagはバッテリーを入れ直すと鍵がローテーションし、Flipperの現在の鍵が無効になる可能性がある
- AirTagの鍵生成方式は、実際のAirTagやAppleデバイスがなくても可能だが、Docker Desktop、Python、Gitが必要で、位置データを受け取るためにコンピューターとApple ID認証を使用する
- アプリはバックグラウンド実行とビーコン間隔・送信出力の調整に対応しており、ユーザーは追跡デバイスに関するプライバシー法規と元のデバイスの所有権を尊重する必要がある
FlipperZeroを追跡タグのように使うアプリ
- FindMy Flipperは、FlipperZeroにApple AirTag、Samsung SmartTag、Tile Trackerをエミュレートさせるアプリ
- FlipperZeroのBLEビーコンを使って、FindMy Networkで検出され得るSmartTag信号をブロードキャストする
- 目標機能は次のとおり
- 既存のApple AirTag、Samsung SmartTag、Tile TrackerをFlipperZeroに複製
- 実際のAirTagなしでFindMyネットワーク用のOpenHaystack鍵ペアを生成
- FlipperZeroの位置を継続的に追跡
主な機能
-
タグエミュレーション
- 既存タグのMACアドレスとpayloadを複製できる
- 実際のAirTagを所有していなくても、FindMyネットワーク用の鍵ペアを生成できる
-
ユーザー調整
- ビーコンのブロードキャスト間隔を調整できる
- 送信出力を変更し、可視性とバッテリー寿命のバランスを調整できる
-
バックグラウンド動作
- アプリはバックグラウンド実行に最適化されている
- FlipperZeroの通常利用を妨げず、低いバッテリー消費で追跡を維持するよう設計されている
インストール方法
- インストールは2つの方法で可能
- デバイスに合ったリリース/プリコンパイル済みのFAPファームウェアを使用
fbt/ufbtでファームウェアを自分でビルド
- 現在、すべてのファームウェアはアイコンを含めてmainブランチで動作するはず
SmartTagデータの取得方法
- タグエミュレーションデータの取得方法は2つ
-
Option A: 既存タグの複製
- Option B: AirTag鍵生成
-
-
Option A: 既存タグの複製
- 既存タグの複製は推奨される方式で、追加設定なしで追跡できる
- Apple、Samsung、Tileのタグを、実際のタグのMACアドレスとpayloadの複製として使用できる
- この方式により、Apple FindMy、Samsung SmartThing、Tile Appのようなネイティブアプリ経由で追跡できる
- 基本手順は次のとおり
- AirTag、Samsung SmartTag、Tile Trackerをまずデバイスとペアリング
- 登録済みデバイスからタグを約15分離してLostモードに入れる
- AndroidのnrfConnectまたはESP32を使用
- nrfConnectではApple版が必要なRawデータを表示しないため、Android版の使用が案内されている
- ESP32-WROOMまたはESP32-S3を使えば、Androidなしでも必要なデータを取得できる
- 関連ツールとしてESP32-AirTag-Scannerを使用できる
- スキャン手順には、フィルターでタグブランド以外の項目を除外し、RSSIを**-40 dBm**に調整したうえで、SmartTagが「FindMy」デバイスとして表示されるまで待つ工程が含まれる
- payloadとMACアドレスをキャプチャした直後に、タグのバッテリーを取り外す必要がある
- AirTagにバッテリーを再装着すると、Appleサーバーとの間で鍵がローテーションされる可能性がある
- 鍵がローテーションされると、Flipperの現在の鍵は無効になる
- Flipperで使い続けるには、AirTagの電源を切ったままにするか、バッテリーを取り外しておく必要がある
- AirTagとFlipperを同時に使用することはできず、必要であれば手順を繰り返してFlipperの機能を戻すことができる
- キャプチャしたpayloadとMAC AddressはFlipperZeroアプリに入力する
-
Option B: AirTag鍵生成
- AirTag鍵生成は、AppleデバイスやAirTagなしでAirTagをエミュレートする方式
- この方式は鍵生成によって動作し、位置データをダウンロードするにはコンピューターが必要
- 必要な構成要素は次のとおり
- Docker Desktop
- Python
- Git
- リポジトリをクローンした後、
AirTagGenerationフォルダーで作業する
git clone https://github.com/MatthewKuKanich/FindMyFlipper.git cd AirTagGeneration- Docker Desktopを起動した後、次のコマンドでサーバーを設定する
docker run -d --restart always --name anisette-v3 -p 6969:6969 dadoum/anisette-v3-server:latest- このサーバーはApple認証サーバーを欺く環境をエミュレートする
- Python仮想環境を作成して有効化した後、依存関係をインストールする
python3 -m venv venv pip3 install -r requirements.txtgenerate_keys.pyはAirTagに必要な鍵を生成し、新しいkeysフォルダーに保存する- 生成された
.keysファイルはFlipperZeroへ移し、アプリでインポートできる - アプリのconfigメニューで「register tag」を選択
- タグの種類を選択
.keysまたは.txtをインポートするか、手動入力- 手動入力の場合はMACとpayloadを順に入力
- 保存を押して登録
request_reports.pyはApple IDとパスワード認証でリアルタイムの位置データを要求する- Appleのログイン情報はauthファイルに保存され、以後は再入力しなくてよい
RequestReport&Map.pyは過去24時間の位置データをインタラクティブな地図に表示するkeysフォルダーのハッシュ化された広告鍵で位置レポートを要求- 同じ
.keysファイルの秘密鍵でデータを復号 - 復号されたデータをターミナルに表示
- 座標を地図に表示し、移動経路を接続
- 位置メタデータを表示し、レポート日付名のHTMLファイルとして保存
FlipperZeroアプリの設定と調整
- アプリ実行後、configメニューで
Import Tag From FileまたはRegister Tag Manuallyを使用できる .keysファイルはFlipperZero SDカードのapps_data->findmyまたはAppsData/FindMyFlipperフォルダーに置いてインポートする流れが含まれている- nrfConnectで保存した
.txtファイルも同じフォルダーに入れてインポートできる - 調整可能な項目は次のとおり
- Beacon Interval: FlipperZeroが存在をブロードキャストする頻度を調整
- Transmit Power: 追跡範囲とバッテリー寿命のバランスを取るための信号強度を調整
互換性、代替手段、責任
- 対応対象は次のとおり
- FindMyネットワーク経由のAirTag追跡用Appleデバイス
- Samsung SmartTag追跡をサポートするデバイスとWebブラウザー
- Tile App経由のTile Tracker
- OpenHaystackで追跡するにはmacOS 14未満が必要
- macOS 14以降ではMailプラグインの互換性問題がある
- 代替手段としてmacless-haystackが提示されている
- この方式を使う場合でも、
AirTagGenerationフォルダーのgenerate_keys.pyだけを使用する必要がある - 同リポジトリの鍵生成スクリプトは鍵ファイル形式が異なり、FindMy Flipper側のファイルにはFlipperZeroで正常にインポートするために必要なデータが含まれている
- この方式を使う場合でも、
- このアプリは個人および教育用途を意図している
- ユーザーは追跡デバイスに関する現地のプライバシー法規と規制を遵守する必要がある
- 追跡タグの複製とエミュレーションは、元のデバイスの所有権を尊重し、責任を持って使用する必要がある
- このプロジェクトはApple Inc.またはSamsungとは関係がない
1件のコメント
Hacker Newsのコメント
興味深いプロジェクトだが、ここで使われている下位依存関係の一つがデフォルトでは安全ではなさそう:
https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
iCloud向けの認証ライブラリに見え、生成したキーをデバイスに紐づけるために MacBook device agent をハードコードしているようだ
中央集権型サービスがそうであるように、複数のサービスやデジタル資産が多く結びついているアカウントでは使わない。Appleがこのような利用アカウントをブロックしても驚かない
ログインに必要な固有の
adsidコードがあるので、見つけ出すのも難しくなさそうそれなのにAppleがなぜこれを公式サポートしないのか分からない。iOSデバイスの販売を後押ししたいからなのかと思ってしまう
Appleのデスクトップ/モバイル機器を5,000ドル分くらい持っているのに、AirTagをいくつか登録するために中古のiPhoneをもう1台買った身としては腹が立つ
https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
意識的には、サードパーティライブラリを統合することは絶対にしない。今でも
VenToyのすべてのリリースをウイルススキャナーにかけていて、NZ系の脆弱性が実際に明らかになる瞬間を待っているAppleの決済フローのせいというより、サブスクリプションモデルのせいだ。Appleが面白いと感じる機能を無料で提供するなら注意すべきだ。Appleはアクセスを遮断し、ユーザーから料金を取り始める可能性がある
ギークたちを怒らせることにも二重に注意すべきだ。金曜の夜に怒ったまま眠り、週末中ずっと製品をブラックボックス解析して実装を取るに足らないものにしてしまう人たちなので、本当に怖い
この概念は、Appleなどが組み込んでいるストーキング防止機能を回避するのに使われる可能性もありそうだ
例えばN個のドナータグを用意して
24/N時間ごとに交互に使えば、Appleやデバイス追跡の観点では、追跡対象者が長時間単一のタグに付きまとわれているようには見えなくなる大きなバッテリーと単純なタイマー回路を取り付け、ビーパーを取り外せば、優秀な追跡デバイスになる
高価な機器が入った貨物を追跡する文脈でこういう話が出ていたと記憶している。輸送には何カ月もかかることがあり、AirTagは電力効率が良く大きなバッテリーで長持ちし、既存のGPSソリューションでは十分ではなかった
あるいはAirTag「ネットワーク」をそもそも使わないGPSタグを使えばよく、ローテーションさせる必要もない
いまだに Flipper を週に何度か使っている。Wi-Fiと別の周波数に対応する次のバージョンが楽しみだ
「Find My」アプリが同じタグを2カ所以上で見た場合、どう反応するのか試した人はいる?
これを使っているが素晴らしい。電力も実質ほとんど食わない
Googleの Find My Device ネットワークとも通信できればいいが、すでにAppleのネットワークではとてもよく動作している
これをESP32-C3のような安価な BLEデバイス に移植できるといい。FlipperをAirTagとして使うには少し高い
残念ながら、なりすますためのドナータグが必要で、そのタグはこれを使っている間は使えない。もしくはOpenHaystackを使う必要があるが、データを取得するにはMacが必要だ
README.mdには、これが何を指しているのか分かるようにリンクが一つあるとよい: https://flipperzero.one/これを使うにはどんな Androidアプリ が必要? できればGoogle Servicesが不要なアプリがいい
でも実際にこれを「見つける」には、どのAndroidアプリを使えるのか? iPhoneやSamsungデバイスは持っていない