前回、USBキャプチャーの仕組みがイマイチ分からなかったので、リベンジします。

【関連記事】
【色々な通信プロトコルを調べたい】①(WiresharkでEthernet、USB、無線LANのパケット をキャプチャーしたい)
  • 宿題たち。
宿題は4つ。今回は②USBキャプチャーをもっと調べる。にトライしてみます。

①inSSIDerを試してみる。
②USBキャプチャーをもっと調べる。
③Monitorモード対応の無線LANデバイスをAcrylicProに認識させIEEE802.11パケットを観測する。
④OmniPeek(Ver10)のインストール。
  • ②USBキャプチャーをもっと調べる
とりあえず、前回と同じところまで行きます。

WiresharkでUSBデータをキャプチャする方法というブログ記事を参考に進めます。

「C:\Program Files\USBPcap」を開き「USBPcapCmd.exe」をダブルクリック。
無題
DOS窓が立ち上がります。「Select filter to monitor(q to quit):」と聞かれているので「1」と入力してEnter入力。
1

Following filter control devices are available:
1 \\.\USBPcap1
  \??\USB#ROOT_HUB30#4&19c8e1a6&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
    [Port 1] USB Composite Device
      HP HD Camera
    [Port 5] インテル(R) ワイヤレス Bluetooth(R)
      Microsoft Bluetooth LE Enumerator
      Bluetooth Device (RFCOMM Protocol TDI)
        Bluetooth リンク経由の標準シリアル (COM4)
        Bluetooth リンク経由の標準シリアル (COM3)
      Microsoft Bluetooth Enumerator
        JBL GO Stereo
        JBL GO Avrcp トランスポート
        JBL GO Avrcp トランスポート
        JBL GO Hands-Free AG
          JBL GO Hands-Free AG Audio
        Bluetooth HID デバイス
          HID キーボード デバイス
          HID 準拠コンシューマー制御デバイス
          HID 準拠コンシューマー制御デバイス
          HID 準拠システム コントローラー
          HID 準拠コンシューマー制御デバイス
          HID 準拠コンシューマー制御デバイス
        デバイス識別サービス
        HHKB-BT
        JBL GO
      Bluetooth Device (Personal Area Network)
2 \\.\USBPcap2
  \??\USB#ROOT_HUB30#7&193128b9&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
    [Port 1] 汎用 USB ハブ
      [Port 1] USB Composite Device
        USB 入力デバイス
          HID キーボード デバイス
        USB 入力デバイス
          HID 準拠マウス
          HID 準拠コンシューマー制御デバイス
          HID 準拠システム コントローラー
          HID 準拠デバイス
      [Port 2] USB Composite Device
        USB 入力デバイス
          HID 準拠マウス
        USB 入力デバイス
          HID 準拠コンシューマー制御デバイス
          HID 準拠ベンダー定義デバイス
          HID 準拠ベンダー定義デバイス
      [Port 4] USB Composite Device
        HUAWEI nova lite 2
        USB 大容量記憶装置
          Linux File-CD Gadget USB Device
    [Port 3] 汎用 SuperSpeed USB ハブ
Select filter to monitor (q to quit):

次に「Output file name(.pcap)」と聞かれるので「test」と入力してEnter入力。USBPcapCMD.exeのあるフォルダにtestというファイルができました。
無題
Wiresharkに戻ります。前回と同様USBPcap1を選択しても何も表示されなかったので、USBPcap2を選択。ウチのPCだとUSBPcap1は表示されないのかね。
1

するとUSBパケットがキャプチャーされました(ようやく前回のところまで来ました)。
1

  • USBキャプチャーデータを観察
さて、USBキャプチャーとは何なんだ。WiresharkでUSBメモリのパケットキャプチャしてみた!を読んだ。なんとなく色々真似してみる。

まずメニューから「統計」→「プロトコル階層」をクリック。
1

するとプロトコル毎の通信量が見れる。今回はUSBが100%。USBが100%としてUSB Mass Storageが7.9%。SCSIが3.9%。

先ほどのサイトを参考に調べたところ、USB Mass StorageクラスはSCSIコマンドを使うようなので定期的にSCSIコマンドが差し込まれるのは正しい動作。
1



SCSI の進化
もっとも古くからのインターフェースでありながら、現在でも進化し続けている SCSI は調べるに値する興味深いインターフェースです。最初の SCSI 標準、SCSI-1 は、1979年頃に Shugart Associates により作成されました。SCSI-1 では 5MHz のデータ・クロックで動作する 8 ビットのパラレル・インターフェースを定義し、毎秒 5 メガバイト (MB/s) の最大データ転送速度を達成しました。

1985年には SCSI-2 標準が開始され、データ速度とバスの幅がそれぞれ 10MHz、16 ビットに改善されました。Fast Wide SCSI と呼ばれる SCSI-2 の最大データ転送速度は 20MB/s です。また、SCSI-1 のデータ速度にはなりますが SCSI-1 とも後方互換性を持ちます。

SCSI-3 の開発は 1993年に着手されました。SCSI-3 は、実際にはプロトコル、コマンド・セット、信号方式を定義する標準の集合です。Ultra という名前が付いた一連のパラレル SCSI 標準、そして IEEE 1394 (FireWire)、Fibre Channel、iSCSI (Internet SCSI)、新たに加わった SAS などの最近のシリアル SCSI ベースのプロトコルはいずれも SCSI-3 と俗称されています。これらの標準はストレージ・ネットワーク技術 (FC-AL、iSCSI など) の導入によってストレージの全体像を変えただけでなく、最大データ速度を毎秒 1 ギガビット (Gbit/s) を超えるまでに拡張し、アドレス可能な最大デバイス数を 100 以上に増やし、さらに 25 メートルを上回る最大ケーブル長を達成しています。図 1 に、1986年から 2007年にかけて進化した SCSI のデータ速度を示します。
このサイトから一般的なSCSIコマンド一覧が出てきました。なんかカンタンな予感だが、私はビギナーなので素直に読む。

1


SCSIサブシステムの位置づけが書いてあった。要はカーネルで動作する最下層のドライバ。
1


今回の調査対象ではないが、SCSIサブシステム内の構成も書いてあったので載せてみた。現時点でそれほど興味はソソラレないものの、15年ぐらい前に担当したWindowsアプリで、DVDなどのリムーバブルメディアの種別を判別してファイナライズしてないDVD-R、CD-Rだけ書き込みを許可する処理を実装したときに、DDK(Device Driver Kit)のSPTI(SCSI Pass Through Interface)というDeviceIoControl(UNIXで言うところのioctl)を使ったような気がする。Advanced SCSI Programming Interfaceという記事が関連情報。HDDとかDVDとか各種ストレージを扱おうとすると、このあたりの知識は避けられないのかもしれない。

2

  • USBの通信プロトコル
さて、なんとなくWiresharkでUSBのパケットを見てみたが、基本のプロトコルを理解していないのでチンプンカンプン。取り急ぎUSBの通信プロトコルを読んだ。

なるほど、SOFパケット、トークンパケット、データパケット、ハンドシェイクパケットの4種があるのか。更に論理プロトコルとしては、コントロール転送、バルク転送、インタラプト転送、アイソクロナス転送の4種がある。ここが基本なんでしょうね。

適当にUSB INTERRUPT inというパケットを開いてみた。通常Ethernet系のパケットを見なれてる私としては畑違いではあるものの、アドレス、ID、ステータス、ファンクション、インフォメーション、などのパラメタ名を見るとなんとなく推測が付くものではある。

1

USBについてもう少し詳しくなりたいところだが、今回はUSBキャプチャーのがなんとなくできたので、このぐらいでやめておくことにした。中途半端ではあるが、これが私個人が好きなペースである。仕事だとそうも言ってられず、もうちょっと素早く、細かく、調べるのだが、あくまでこれはプライベートなのだ。

続く

スポンサードリンク