Web、サーバ、ソフトウェア、バグ・脆弱性 などの情報を何人かで集まって書いていく IT/Web情報系ブログ

【完全版】PS2251-07(2307)用Psychson(BadUSB)パッチの適用方法

投稿日:   最終更新日:2017/05/05  投稿者:xx2zz

PS2251-07(2307)でPsychsonを動かすパッチを公開しましたが、手順が複雑かつ不完全だったため、改めて簡略化したパッチファイルと手順を公開します。

スポンサーリンク

差分ファイル

このファイルには以下の変更が含まれています。

注意: このファイルはPS2251-07(2307)でPsychsonのカスタムファームウェアを動かす実験を目的とした研究資料です。動作の保証をするものではありません。差分適用後のプログラムを動作させたりカスタムファームウェアを書き込むことでデバイスやPCが使えなくなったり壊れても責任を負えません。自己責任で利用してください。

“Psychson2307_diff” をダウンロード Psychson2307_diff_20170401.zip – 342 回のダウンロード – 5 KB

動作確認デバイス

以下のUSBメモリで動作を確認しています。

TOSHIBA TransMemory-MX V3SZK-016G

Action specified: GetInfo
Gathering information...
Reported chip type: 2307
Reported chip ID: 98-3A-98-A3-76-51
Reported firmware version: 2.15.55
Mode: Firmware

TOSHIBA TransMemory-MX TNU-B008GK

Action specified: GetInfo
Gathering information...
Reported chip type: 2307
Reported chip ID: 98-DE-98-92-72-50
Reported firmware version: 2.03.53
Mode: Firmware

その他必要なもの

2307用CFWのビルド手順

  1. brandonlw/Psychsonからソースコードをダウンロードして展開する
  2. 「Psychson2307_diff_20170401.zip」の中身を1.で展開したPsychsonのフォルダに上書き・追加する
  3. patchコマンドで差分を適用する (動画)
  4. patch -p0 < firmware-firmware2307.diff
    patch -p0 < DriveCom-DriveCom2307.diff
    
  5. 「firmware_ps225107.rar」の中から「FW07FF01V10153M_20140116.bin」と「BN07V106M.BIN」を取り出して「firmware」フォルダの中に置く
  6. 「firmware」フォルダの中に置いた「fire2db.pl」を実行する (要Perl 5)
  7. build.batを実行する

ペイロードの埋め込み

上で作成したファームウェアファイル(bin/fw.bin)に必要に応じてペイロードファイルを埋め込みます。
参照: https://github.com/brandonlw/Psychson/wiki/Embed-HID-Payload-into-Custom-Firmware

2307用CFWの書き込み手順

  1. VS2012で差分適用後のDriveComをビルドする
  2. 「firmware_ps225107.rar」の中から「BN07V502TAW.BIN」を取り出す
  3. 「BN07V502TAW.BIN」をバイナリエディタで開きオフセット0x4D85, 0x4D86の値を00に書き換える
  4. DriveCom.exeでファームウェアを書き込む
  5. DriveCom.exe /drive=E /action=SendFirmware /burner=BN07V502TAW.BIN /firmware=fw.bin
    

- BadUSB , , ,

Comment

  1. uduki0424 より:

    3.0で動かないバグはどこで修正されているのでしょうか?
    またそれは2303のチップでも3.0で動かすことができますか?

    • xx2zz より:

      >3.0で動かないバグはどこで修正されているのでしょうか?
      firmware-firmware2307.diffの以下の部分になります。

      - USBCTL = bmAttach | bmSuperSpeed;
      + USBCTL = bmAttach | bmHighSpeed;

      >またそれは2303のチップでも3.0で動かすことができますか?
      おそらく動くと思いますが、2303のデバイスが手元にないため動作は確認できていません。

      • uduki0424 より:

        教えていただきありがとうございます
        試しにusb.cのUSBCTL = bmAttach | bmSuperSpeed;を
        USBCTL = bmAttach | bmHighSpeed;に書き換えて試してみましたが
        実行されずメモリのプロパティを見ると
        デバイス USB\VID_13FE&PID_5201\5&cc190b6&0&2 を移行できませんでした。

        最後のデバイス インスタンス ID: USB\VID_0FCE&PID_5198\CB5A1VC2HC
        クラス GUID: {36FC9E60-C465-11CF-8056-444553540000}
        場所のパス:
        移行ランク: 0xF000FFFF0000F130
        存在: false
        状態: 0xC0000719
        となっていました
        自分ではどうにかできそうにないので2307のチップを探そうと思っています
        いまさら質問に答えていただきありがとうございました

  2. Ryo より:

    当サイトで使われているTOSHIBA TransMemory-MX TNU-B008GKを使用しているのですが、
    ファームウェアの書き込みの際に
    FATAL: System.InvalidOperationException: DeviceIoControl failed: 048F
    というエラーが吐き出されて、ファームウェアの書き込みを行うことができません。

    何か解決法がありましたら、ご教授いただけたら幸いです。

    • xx2zz より:

      DriveCom.exe /drive=ドライブ /action=GetInfo
      で得られる、chip type、chip ID、firmware versionは記事に記載しているものと同じでしょうか?
      値が違うか、そもそもGetInfoでデータが取得できない場合はコントローラ、バージョンが変わっていてこのパッチが使えない可能性が高いです。

      • Ryo より:

        このページに書かれてある通り
        Action specified: GetInfo
        Gathering information…
        Reported chip type: 2307
        Reported chip ID: 98-DE-98-92-72-50
        Reported firmware version: 2.03.53
        Mode: Firmware
        と表示されます

        • xx2zz より:

          GetInfoの値が同じで中身だけが変わっているという可能性もなくはないですが、
          初期状態でファームウェアを書き込もうとすると似たようなエラーが出た記憶があります。
          この場合、カバーを外してコントローラのピンをショートさせることで強制的にBootModeで起動させた後、
          DriveCom.exe /drive=E /action=SendExecutable /burner=BN07V502TAW.BIN
          DriveCom.exe /drive=E /action=SendFirmware /firmware=fw.bin
          の順にコマンドを実行することで正常に書き込めたはずです。

          ピンショートの方法は以下のページを参考にしてください。
          http://kikuzou.hateblo.jp/entry/2014/11/21/143115
          この記事のコントローラは2303ですが、2307も同様に「TOSHIBA」のロゴを基準に右から2番目と3番目のピンの間です。

          • Ryo より:

            教えていただきありがとうございます!
            無事書き込みには成功しましたが、埋め込んだPayloadが実行されませんでした。
            デバイスドライバーのインストールが始まって、失敗という状況になるので、何かUSB自体に問題があるのかもしれません。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事