Linuxデバイス管理を達成するために他のデバイスIDを偽造する方法は?

Linuxデバイス管理を達成するために他のデバイスIDを偽造する方法は?

ベンダーと製品ID(VIDとPID)を無視するために、ATコマンドを使用して愚かにブロックされたWWANデバイスがあります。私は、カードが挿入されたときにラップトップが起動しないようにするノートブックのホワイトリスト機能をバイパスするためにこれを行いました。

この時点で、デバイスは起動し、他のUSBデバイスであるかのように正しく動作しますが、Linuxはそのデバイスの正しいドライバをロードせず、すべての目的にアクセスできなくなります。 VID / PID値を復元するためにシリアルポートを取得できなくなりました。

質問:Linuxがデバイス2cb7:0007を発見した場合、内部的にそのIDを1199:9079に置き換えるように指示するか、少なくとも回復できるようにシリアルインタフェースを取得するようにいくつかのドライバを強制的にロードするように指示する方法はありますか?アイデンティティ?別のオペレーティングシステムを使用してこれを実行できますか?

ベストアンサー1

次のコマンドを使用すると、ベンダー製品ID 1199:9079のUSBデバイスにロードされるモジュールを表示できます。

sudo modprobe -c | grep usb:v1199p9079

結果は次のようになります。

alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in* qcserial
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in08* qmi_wwan
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in0A* qmi_wwan

インターフェイス番号8と10(0xA 16進数)の場合、モジュールはデバイスの他のすべてのインターフェイスを制御することをqmi_wwan示します。qcserial

ほとんどのLinux USBシリアルドライバには、ドライバに不明なデバイスを許可するように指示する方法があります。

この場合、rmmod通常、デバイス2cb7:0007にロードされたドライバ(該当するドライバがある場合)をブラックリストに追加する必要があります。次に、モジュールの手動ローディングを使用し、次のようにsudo modprobe qcserialデバイスの現在のIDを作成します。/sys/bus/usb-serial/drivers/qcserial/new_id

echo "2cb7 0007" | sudo tee /sys/bus/usb-serial/drivers/qcserial/new_id >/dev/null

デバイスの実際の動作を変更せずにID値のみを変更したため、ドライバは通常どおりデバイスを制御できる必要があります。

これは、カスタムベンダー/製品IDを持つ組み込みOEM USBシリアルコンバータチップを備えたデバイスを処理する方法でもあります。使用されている実際のチップを処理できるドライバを識別したら、このメカニズムを使用して Linux シリアル コンバータ チップ。行ドライバー開発者はまだ特定のカスタムベンダー/製品IDペアを知らず、ドライバーはそのベンダー/製品IDペアを使用してデバイスを請求することを許可します。もちろん、この場合、新しいIDを説明する電子メールをそのシリアルドライバの管理者に送信して、将来のカーネルバージョンがこれらのカスタムOEM USBシリアルチップを自動的に認識できるようにすることが役に立ちます。

おすすめ記事