基板の中の会話を翻訳する
Bus Pirate 6は、電子部品やセンサー、記憶装置、制御チップが基板の中で交わしている通信を、コンピュータから観察し、試すためのオープンソース・ハードウェアデバッグ機器である。
無線を扱うHackRF Oneや、RFIDを深く調べるProxmark3とは違い、Bus Pirateが見るのは、機器の内部を配線で流れる信号である。
- I²C
- SPI
- UART
- 1-Wire
- 各種LED制御
- MIDIなどのシリアル通信
こうした通信方式は、完成した製品の利用者にはほとんど見えない。
画面、ボタン、センサー、メモリ、マイクロコントローラは、一つの機械として動いているように見える。しかし基板の上では、それぞれの部品が決められた線とタイミングを使って会話している。
Bus Pirateは、その会話の途中へ測定用の席を作る。
busとは何か
コンピュータや電子回路でいうbusは、人や車を運ぶ乗り物ではない。
複数の部品が、データ、アドレス、制御信号、クロックなどをやり取りするための共通経路を指す。
センサー
│
├── データ線
├── クロック線
└── 電源・接地
│
マイクロコントローラ
同じ基板上でも、部品ごとに話し方は違う。
ある方式では一本の線を順番に使い、別の方式では送信用と受信用を分ける。クロックを共有するものもあれば、送信速度をあらかじめ合わせるものもある。複数の部品をアドレスで区別する方式もある。
Bus Pirateは、これらの違いを端末上のコマンドへ翻訳する。
コードを書く前に、部品と話す
電子部品を使うとき、問題がどこにあるのか分からなくなることがある。
- 配線が間違っている
- 電圧が合っていない
- 部品が壊れている
- データシートの読み方を間違えている
- プログラムに不具合がある
- 通信速度やタイミングが違う
通常は、マイクロコントローラへプログラムを書き込み、動かなければコードと回路を行き来して原因を探す。
Bus Pirateは、その前段階を作る。
コンピュータのターミナルから簡単な命令を送り、部品が返す応答を確認できる。専用の試験プログラムを最初から書かなくても、センサーやメモリがどのように反応するかを試せる。
完成したシステムを作る前に、部品一個と会話する。
この小さな段階分けが、複雑な機械を理解する助けになる。
翻訳器であり、仲介者である
Bus Pirateは、単なるケーブルでも、完全な開発ボードでもない。
コンピュータから入力された人間向けの命令を、基板上の通信方式へ変換し、返ってきた電気信号を再び読みやすい形へ戻す。
人間がターミナルへ入力する
↓
Bus Pirateが通信手順へ変換する
↓
電子部品が応答する
↓
Bus Pirateが結果を表示する
この間に立つことで、普段は直接見えない機械同士の会話へ、人間が参加できる。
ただし、Bus Pirateが意味をすべて理解しているわけではない。
返された数値が温度なのか、設定値なのか、エラーなのかを判断するには、部品のデータシートと回路の文脈が必要になる。
Bus Pirateは翻訳器だが、通訳ではない。
信号を言葉へ近づけるが、その意味を最後まで説明するのは利用者である。
Follow Along Logic Analyzer
Bus Pirate 6の特徴の一つが、通信を行いながら、そのときピン上で実際に起きた信号をlogic analyzerとして記録できる機能である。
端末上では命令が成功したように見えても、実際の配線では信号の立ち上がり、電圧、タイミング、応答の有無が想定と異なる場合がある。
Bus Pirate 6では、命令を送った結果を、SigrokやPulseViewなどの画面上で波形として追いかけられる。
送ったつもりの命令
↓
基板上で実際に流れた波形
↓
解析された通信内容
これは、「ソフトウェアがそう言っている」ことと、「物理的にそう起きた」ことを分けて確認する仕組みである。
電源も信号の一部である
電子回路を調べるとき、通信方式だけでなく電圧が重要になる。
正しいデータを送っていても、部品が想定する電圧と合っていなければ動かない。誤った接続は、通信に失敗するだけでなく、部品や機器を壊すこともある。
Bus Pirate 6は、複数の入出力ピン、プログラム可能な電源、電圧測定、保護された入出力などを一つの機器へまとめている。
ここでは、電源は単なる背景ではない。
何ボルトで話すかも、通信の文法の一部である。
機械の会話には、言葉だけでなく声の大きさがある。
Flipper Zeroから基板の内側へ
Flipper Zeroは、日常空間に現れる赤外線、RFID、NFC、Sub-GHzなどを、完成した道具の外側から観察する。
Bus Pirateは、機械を開き、その基板上にある端子へ接続する。
Flipper Zero
= 機械と機械の間を飛ぶ信号を見る
Bus Pirate 6
= 一台の機械の中で部品同士が交わす信号を見る
Flipper Zeroが周囲の不可視通信へ入口を作るなら、Bus Pirateは筐体の内側へ降りる階段になる。
この二つをつなぐと、信号の移動範囲が広がる。
空間を飛ぶ信号
↓
機器が受け取る
↓
内部のマイクロコントローラが処理する
↓
基板上の別部品へ命令する
通信は、空中で終わらない。機械の内部へ入り、別の通信へ変換され続ける。
pirateという名前
Bus Pirateという名前には、正式な開発環境や専用機器を用意する前に、通信線へ入り込み、部品の応答を直接確かめる態度が表れている。
ただし、その対象は無断で接続した他人の設備である必要はない。
自分の回路、故障した機器、試験用のセンサー、開発中の基板でも、内部の通信は十分に未知である。
ここでのpirateは、所有権を奪う者というより、決められた利用画面を離れ、機械の裏側から仕組みを読む者である。
この標本が示す穴
Bus Pirateが見せるのは、基板内部の通信が安全だという前提である。
- 製品の筐体内部は利用者から見えない
- 基板上の通信は外部から観察されない
- 内部バスを流れる値は正しい
- 部品から来た応答は信頼できる
- ソフトウェアの表示は、物理信号を正しく表している
- 電源や電圧は、通信内容とは別の問題である
- 専用開発環境がなければ部品とは話せない
完成品では隠れているこれらの前提が、テスト端子へ数本の線をつなぐことで表面へ出てくる。
機械は一枚岩ではない。
内部には、互いに信号を送り合う小さな機械が何個も住んでいる。
Bus Pirateは、その内部社会の会話を聞く道具である。
安全上の線引き
基板へ直接接続する行為は、対象を破損させる可能性がある。
電圧、接地、ピン方向、電源供給の重複、静電気、通電状態を誤ると、Bus Pirate側と対象機器側の双方に影響が出る。
研究は、自分が所有・管理する機器、試験用部品、または明示的な許可がある設備で行う。
この標本では、製品の保護解除、秘密情報の抽出、ファームウェア改変、現行設備への侵入へ直結する配線やコマンドは扱わない。
関連標本
- Flipper Zero
- HackRF One
- Proxmark3 RDV4
- I²C
- SPI
- UART
- 1-Wire
- Logic Analyzer
- Sigrok
- PulseView
- GPIO
- データシート
- デバッグ端子
- 基板の中の通信