第3章 – 「Master PC」と「Target デバイス」間のシリアルリンクをスニッフィング/監視する
ハードウェアデバイスと PC 間のシリアル通信のイメージ図
Master PC(右)は Target デバイスと
シリアル通信デバイス(一般的には USB↔シリアル コンバータ:
UART/TTL、RS-232、RS-485 など)を介して通信します。
Sniffing PC(左)は 2 つのポート(COM5 と COM6)を開き、
2 台の USB–シリアルアダプタでラインに パッシブに接続 します:
COM5 の RX を デバイス側 TX に、
COM6 の RX を PC 側 TX に接続します。GND(共通グラウンド)も接続します。
3.1 目的と基本コンセプト
ここでの目的は、Master PC 上のソフトウェアと Target デバイスの間でやり取りされるバイト列を、
通信を邪魔することなく 監視・スニッフィング することです。
これは典型的な パッシブな物理的 Man-in-the-Middle であり、
2 台の USB–シリアルアダプタをそれぞれ RX のみで接続し、双方向を監視します。
この手法は デバッグ、プロトコル解析、さらには ロガー としての利用
(監査やリバースエンジニアリング用途)に非常に有用です。
3.2 接続手順(ステップごと)
- COM5(Sniffing PC) → アダプタの RX を デバイス側 TX に接続(Target が送信するものを傍受)。
- COM6(Sniffing PC) → アダプタの RX を PC 側 TX に接続(Master PC が送信するコマンドを傍受)。
- 2 台のアダプタと 2 つのデバイスの GND を共通 に接続(基準電位を共有)。
- Sniffing PC 側アダプタの TX は接続しない:リッスン専用(高インピーダンス)とし、ラインに影響を与えないようにします。
SerialTool では COM5 と COM6 の 2 つのセッションを開き、
双方のセッションで Master/Device と同じ ボーレートとフォーマット(例:115200-8N1)を設定します。
ボーレートが不明な場合は、一般的な値を試すか、ビット長をオシロスコープ/ロジックアナライザで測定します。
3.3 同じプロトコル・異なるレベル:UART/TTL・RS-232・RS-485
非同期シリアルプロトコル(スタートビット、LSB ファーストの 7/8 データビット、任意のパリティ、1 以上のストップビット)は同じです。
違うのは、ビットが乗る 物理レベル だけです。
- UART/TTL(3.3V/5V): シングルエンド信号で、“1” が High、“0” が Low。
- RS-232: 信号レベルが反転し、±電圧(一般に ±3〜±12V)のシングルエンド信号。
- RS-485: A/B ペアを用いた 差動 信号で、しばしば 半二重・マルチドロップ構成。共通 GND を取ることが推奨されます。
したがって、使用する アダプタを正しく選ぶ ことが重要です。
UART なら USB↔TTL、RS-232 なら USB↔RS-232、RS-485 なら USB↔RS-485 を利用します。
フレーム構造は同じでも、電気的レベルやトポロジ(差動/終端など)は異なります。
3.4 利用分野(CNC・産業機器など)
この構成は、CNC、産業機械、PLC/HMI、ロボット、
はかり、POS、各種センサー、計測器、ビルオートメーションなど、
PC や PLC がシリアル経由でデバイスを制御するあらゆるシステムでよく使われます。
ここで説明したスニッフ手法により、機能解析、障害診断、コマンドのトレース、検証などの目的で
通信を 監視/スニッフィング/デバッグ/ロギング できます。
3.5 シリアル上の Modbus
シリアルポートでは、産業分野で広く使用されているマスタ/スレーブ(現在はクライアント/サーバ)型プロトコルである
Modbus RTU/ASCII が使われることも多くあります。
Master は コイル や レジスタ の読み書き要求を送り、デバイスが応答します。
SerialTool には Modbus クライアント が統合されており、
レジスタのクイック読み出し(診断やテスト)に加えて、
生のフレーム(アドレス、ファンクションコード、データ、CRC)を確認するためのモニタ/HEX ビューも利用できます。
3.6 ファームウェア更新とパラメータ設定
組み込み の世界では、シリアルは ファームウェア更新 や
パラメータ書き込み に頻繁に使われます。
例としては、自作ボード用ブートローダ、Arduino を始めとする各種マイコン向けエコシステムなどがあります。
ここで開発者には次の 2 つのニーズが生じます。
- Target と通信するアプリケーションを デバッグ したい
(どのコマンドが、どのタイミングで、どのようなエラーとともに送受信されているか確認)。
- 既存プロトコルを リバースエンジニアリング したい
(「ブラックボックス」な Master ソフトとボードがあり、
まずはスニッフしてメッセージ形式を理解し、その後自作ソフトで 再現 したい)。
3.7 実践的な注意点とツール
- この構成では通常、2 台の PC(Master PC と Sniffing PC)と、
双方向スニッフィング用に 少なくとも 2 台の USB–シリアルコンバータ が必要です。
- RS-232 の場合は RS-232 タップ/コンバータを使用し、
RS-485 の場合は A/B 端子に受信専用インタフェースを接続します
(終端抵抗や極性に注意)。半二重 RS-485 では、タイミングや文脈から送信方向を判断することになります。
- RTS/CTS、DTR/DSR、DCD、RI などの制御線はここでは扱っていません。
システムが ハードウェアフロー制御 を使う場合は、専用プローブでこれらも観測することを検討してください。
- SerialTool では、HEX 表示 やタイムスタンプ、テキスト/CSV/pcap 形式での
ロギング を有効にし、後から詳細解析することができます。
まとめると、シリアルプロトコル(非同期フレーム)は同じでも、
物理レベル(TTL/RS-232/RS-485)は異なります。
2 本の RX によるパッシブタッピングと SerialTool のようなソフトウェアを組み合わせることで、
Master PC と Target デバイス間の通信を、信頼性高く 監視・スニッフィング・
デバッグ・ログ取得 できます。