- go-haystackは、AppleのFind Myネットワークを通じて個人のBluetoothデバイスを追跡できるようにするGo/TinyGoベースのツール群
- OpenHaystackとMacless-Haystackを併用してカスタムFind Myネットワークを構成し、Appleハードウェアなしで設定できる
- TinyGoとTinyGo Bluetoothパッケージで書かれたビーコンファームウェアを提供し、nRF SoftDeviceボード、BBC Microbit、Seeed Studio XIAO nRF52840、ESP32補助プロセッサボード、RP2040 Pico-Wなどのハードウェアを対象とする
- Bluetoothハードウェアを備えたLinuxでも同じビーコンコードを実行でき、Raspberry Piや組み込みシステムも対象に含まれる
- ユーザーはApple IDとSMSベースの2FA、anisette-v3-server、Macless-Haystackサーバー、
haystack CLIを用意したうえで、キー生成・ファームウェア書き込み・JSONアップロードの流れでデバイスを登録する
go-haystackの役割
自作ビーコンを作る
LinuxビーコンとTinyScan
- Bluetoothハードウェアを備えたLinuxでもビーコンコードを実行できる
- Raspberry Piやほかの組み込みシステムが例として示されている
- 組み込みLinux向けコードはマイクロコントローラ向けビーコンコードと同じで、リポジトリの
firmwareディレクトリにある
- go-haystackにはローカルデバイス向けのハードウェアスキャナーであるTinyScanも含まれる
- TinyScanはBluetoothと小型ディスプレイを備えた複数のマイクロコントローラボードで動作する
- AdafruitとPimoroni製のボードが例として示されている
- コードはtinyscanディレクトリにある
インストールに必要な構成要素
- Apple IDが必要で、2FAが有効になっている必要がある
- 2つ目の認証要素はSMS/テキストメッセージのみ対応
anisette-v3-serverをDockerで実行する
- 例のコマンドでは
mh-network Dockerネットワークを作成し、dadoum/anisette-v3-serverコンテナを6969ポートで実行する
macless-haystackエンドポイントを対話モードで実行して設定する
- 設定過程でApple ID、パスワード、2FAを入力する
serving at port 6176 over HTTPが表示されれば設定完了の状態
- 設定後にプロセスを終了し、
docker restart macless-haystackでサーバーを再起動する
- go-haystack CLIは次のコマンドでインストールする
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest
利用の流れ
- ローカル範囲内のデバイスは
haystack scanでスキャンする
- 出力にはBluetoothアドレス、信号値、識別子形式のデータ、バッテリー状態が含まれる
- 新しいデバイスを追加するには、まずデバイス用のキーを生成する
haystack keys DEVICENAME
- キー生成の結果として、
DEVICENAME.keysファイルとHaystack設定用のDEVICENAME.jsonファイルが保存される
DEVICENAMEは実際のデバイス名に置き換えて使用する
- ハードウェアにはTinyGoターゲットとデバイス名を指定して書き込む
haystack flash DEVICENAME nano-rp2040
- このコマンドはTinyGoを使ってキーを含むファームウェアをコンパイルし、デバイスに書き込む
- 最後に、そのデバイスのJSONファイルを実行中の
macless-haystackインスタンスにWeb UIからアップロードする
- WebブラウザでMacless-Haystack Webアプリを開き、“Accessories”リンクと“+”ボタンから
DEVICENAME.jsonファイルを選択する
- このWebアプリはローカルデータのみを読み書きするシングルページアプリケーション
位置データの表示
- デバイスがいずれかのiPhoneの範囲内に入ると、時間が経ってからMacless-HaystackデータがWeb UIに表示される
- 最初のデータが表示されるまで時間がかかる場合がある
1件のコメント
Hacker News のコメント
本当にすばらしい。こうした試みや Find My ネットワークには見るたびに驚かされるが、この方法を自分で使わない理由は、いつか Apple がこうしたネットワークへの相乗りを正式に受け入れるか、逆に関連する履歴のある Apple ID を禁止する可能性もあると思っているため。
現時点で Apple はこれを認識していながら、どちらの立場も示していない。今後 Apple がより正式にサポートするか、自分の Apple ID/アカウントと直接結び付かない方法が出てくるまでは、見ているだけにするつもり。
とくに Apple が自ら作業する必要がないので、今この採用を押さえ込むよりも、最終的にはメッシュ密度をもっと活用しようとする気がする。
去年の夏、妻とポルトガルで休暇中だったのだが、空港へ向かう Uber の車に妻が財布を置き忘れた。運転手は財布を見つけたあと、20ドルといくつかのアクセサリーを抜き取り、財布を捨てた。その日の遅くに AirTag で廃駐車場まで追跡し、Location アプリで見つけた。
それ以来、すべてのバッグに AirTag を入れ、電池もスケジュールどおり交換している。
そのとき別の男性も自分の荷物がそこにあると言っていた。1か月前、ニュージーランドで飛行機から避難する際に座席ポケットに iPad を置いて降りてしまい、Find My でシドニーまで追跡したのだという。彼は月に何度も国際線に乗るが、AirTag は自分が持っている物の中で最高だと言っていた。それ以来、すべての車とバッグ、そして盗まれそうな高価な物の中におとり用タグもいくつか隠して入れている。
これを読んでもよく分からない。Apple AirTag と一緒に使えるものなのか、それとも独自の追跡デバイスを作る必要があるのか?
https://github.com/hybridgroup/go-haystack?tab=readme-ov-fil...
https://media.ccc.de/v/38c3-find-my-101
将来的には、ビーコンの位置を1立方メートル以下の精度で分かるようになるといい。
妻は ADD があり、物をよくなくす。Tile は音が大きくなく不安定で、私たちは iPhone を持っていないので AirTag も使えない。Bluetooth ビーコンの位置を見つけるのに必要な数学を身につけるには疲れすぎているが、できるものならやりたい。「小さな Bluetooth ボードを4つ追加するだけ」のようなソフトウェアプロジェクトがあればいいのだが、ほとんどのオープンソース開発者にとっては、そういう痒いところに手が届くテーマではないようだ。
Bluetooth の接続強度ではなく、**超広帯域(UWB)**で精密な位置を特定する。GPS のように光速の遅延を利用した飛行時間方式で動作する。Find My アプリを開くと AirTag までの正確な距離がすぐに分かり、歩き回りながら観測された位置変化から AirTag がどの方向にあるかも計算する。かなりすごい技術だ。Find My アプリでは「Play Sound」ではなく「Find」機能を使う必要があり、H1 超広帯域チップを搭載した iPhone 11+ が必要。家の中に複数の Bluetooth ボードを設置する費用と同じくらいかもしれず、はるかに正確だが、ハックする楽しさは少ない。
https://en.wikipedia.org/wiki/Ultra-wideband#Real-time_locat...
少なくとも、超広帯域の精密位置測位、入手しやすさ、適正な価格、安定性をすべて備えた同等の代替案はなさそうだ。一方で、一部の Android には Tile の UWB と連携できるかもしれない UWB 対応があるようだ: https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
以前ビーコンをいじったことがあるが、動かすこと自体はかなり簡単だった。ノートPCがビーコンのように動作する小さなプログラムを書き、スマホの適当な「Bluetooth tracker」アプリでそのビーコンまでのおおよその距離を見た。あとは距離を見ながら歩き回るだけでいい。
これでMacなしでも使えるようになったっぽい? だとしたらすごい。Appleのトラッカーは数ユーロしかしないし、もちろんサードパーティ製品の場合だけど
自分だけかもしれないけど、この「探す」ネットワーク機能全体がセキュリティ上の悪夢に見える。有用性は理解できるが、特定の機関がAppleに要請して、セルラー圏外でもこの人がどこにいるか教えてほしい、と言えるのではないか?
いずれにせよ、そのせいでAppleエコシステムから離れることにしたし、監視という観点では悪夢のように見える
タグは自分の位置を知らず、自分のローテーション公開鍵だけをブロードキャストする。鍵はランダムに変わるため、正当な所有者であるあなたは予測できるが、第三者がタグを簡単に追跡するのは難しい。他のデバイスはその鍵を見て、自分の位置をタグの公開鍵で暗号化して共有する。そのためデータを取得するのはかなり難しく、Appleがシステムを再設計して悪意あるアップデートを配布するよう強制されない限り、事実上不可能だ。通常、そのレベルは一般的な召喚状で可能な範囲を超えていると見られる
SamsungとGoogleが自社トラッカーでここまでやっているかは疑わしい
「探す」アプリはこの2つを組み合わせて最新の位置を表示する。私の見る限り、このプロジェクトが使っているのは前者だけのようで、こちらは設計上、明示的なバックドアが必要になる。ただし政府機関に対して防御したいのであれば、後者のネットワークのほうがより注意すべき部分である可能性が高い
これをオフにしても本当に無効化されるのか信じられないなら、所有しているあらゆる電子機器について深く考えるべきだ。Androidスマートフォンのファームウェアは信頼できるのか? オープンソースではないモデムチップは? Javaを実行するSIMカードは? テレビのリモコンに、気づいていないマイクが入っていないと言い切れるか? 実際、多くのリモコンには入っている。トースターにさえ、ネットワークにつながったDOS時代のコンピュータより強力なチップが入っている可能性が高い。うちのものもそうだ。それが近くのWi-Fiに接続して情報を送っていないと、どうやって分かるのか? China/iCloudの件以降、Appleを完全には信頼していないが、大手テック企業の中ではそれでも私が最も信頼している部類だ