Ottawa Linux Symposium3日目:NFS、USB、AppArmor、LSBの話題Linuxの最新動向が一目で分かる(3/5 ページ)

» 2006年07月31日 08時00分 公開
[David-'cdlu'-Graham,Open Tech Press]
SourceForge.JP Magazine

USBデバイスのリバースエンジニアリングに関する基本事項

 FOSSコンサルタントのエリック・プレストン氏によるチュートリアルセッション「USBドライバのリバースエンジニアリングによる互換性の確保」にも出席した。

 冒頭に「このチュートリアルは教育目的に限った内容」だという、よく耳にする断りがあった。

 このチュートリアルが行われることになった背景はいたってシンプルで、USBデバイスに対するベンダーのサポートが不十分なことが多い、というものだ。ベンダーはLinuxにあまり関心がない。彼らの言い分は、誰もLinuxを使わない、というものから、USB-IDはUSBを重視する者の知的財産権だというものまで多岐にわたるが、いずれにしてもベンダーはLinuxに目を向けていない。

 ではわれわれは何をすべきか、とプレストン氏は問いかける。デバイスのベンダーや広くコミュニティーからのサポートを待つこともできるし、自分たちの手でサポートすることもできる。

 従って、われわれの使命は自分たちでドライバを書くために既存のドライバの働きを理解することだ、とプレストン氏は述べている。その目的は、優れたハードウェアをサポートし、ユーザー空間のドライバ作成により多くの人々を巻き込んで、経験の乏しい開発者のために障壁を取り除くことにある。つまり、ドライバ開発のつまらなさを軽減して楽しいものにすることだ。

 USBデバイスのリバースエンジニアリングに必要になるのは、基本的にusbsnoopyとWindowsだ、とプレストン氏は説明する。大半のドライバが揃っているWindowsとusbsnoopyを使うと、USBデバイスとデバイスドライバとのパケットのやり取りをWindowsで確認できる。また、usbsnoopyは各機能の解読を可能にするログを作成してくれる。

 何がどうなっているのかを理解するために、WindowsでUSBデバイスに対する簡単なタスクを実行し、そのやり取りを監視してログを取ることができる。これでデバイスのUSB仕様を調査してログを手動で解読できるようになり、何カ月か取り組みを続けると最終的には、何が起こっているのかをある程度突き止めることができるはずである。

 VMWareやそのほかの仮想化プログラムを利用すれば、こうした調査の過程で痛ましいほどに頻発するリブートを回避できるほか、Etherealアナライザと呼ばれるEtherealインタフェースによってUSBデバイスのトラフィックを監視するLinuxネットワークアナライザEtherealと、usbmonを呼ばれるLinuxプログラムとを組み合わせて用いるものなど、usbsnoopyに代わるツールを使うこともできる。プレストン 氏はこうした代替ツールを開発中だが、そのコードは非常に煩雑で、まだ共有できる状態にはなっていない、と述べている。

 USBドライバ自体は、libusbを使えば完全にユーザー空間に作成できる。また、libusbの登場により、もはやUSBデバイスを動作させるためにカーネルドライバを書く必要はなくなっている。このチュートリアルでは、実際にドライバを作成することはなかったものの、プレストン氏は会場の定員を上回る数の出席者にその指針を示したのだった。

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ