大破雑記帳

個人用メモな雑記ブログ いろんなことをざっくりと。

DIR-X1860 ファームウェア復号メモ

Forumにあるtopicを手元で紐解いたメモ

  1. key (9I92bgRMPu+0fgFzo/ZwCyuBTNrtpeQ7) と iv (tTc4XS3LiRBq+Muv) をそれぞれkey.txt, iv.txtなどとしてテキストファイルに保存 この時末尾で改行せずそれぞれ32バイトと16バイトで収めること
  2. firmware-wintoolsでkeyとivのテキストファイルをそれぞれxor "-x" オプションが必要なので注意すること "-Q" オプションはメッセージ抑制なのであっても無くても
    PS > firmware-wintools xorimage -i key.txt -o key.xor_1 -p 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 -x -Q
    PS > firmware-wintools xorimage -i iv.txt -o iv.xor_1 -p 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 -x -Q
  3. xorしたkeyとivを再度機種固有文字列でxor 1つ前の手順と異なり "-x" オプションは付けない
    PS > firmware-wintools xorimage -i key.xor_1 -o key.xor -p wrgax10_dlink_dirx1860 -Q
    PS > firmware-wintools xorimage -i iv.xor_1 -o iv.xor -p wrgax10_dlink_dirx1860 -Q
  4. keyとivをそれぞれ16進数値で取り出す WSLなどを使うか、busybox-w32のhexdumpを使うなどする
    $ hexdump -v -e '1/1 "%02x"' key.xor
    4f395d571f50651a3d13495200362d030c45785b605f15282a3511595d242a7b
    $ hexdump -v -e '1/1 "%02x"' iv.xor
    022407512564041b043420134d1c1e0f
  5. 取り出したkeyとivを用いてAESで復号する 復号なので "-d" オプションが必要 "-K" オプションと "-V" オプションは大文字の方を使う
    PS > firmware-wintools aes -i DIRX1860A1_FW101B07.bin -o .\DIRX1860A1_FW101B07.dec -K 4f395d571f50651a3d13495200362d030c45785b605f15282a3511595d242a7b -V 022407512564041b043420134d1c1e0f -d -Q

以上で完了。
Linux環境でやる場合は、たぶんForumのtopicにリンクされているPRのalpha_encimg.cを使わなくても、OpenWrtのxorimage.cとopensslの使用で代替できるはず。alpha_encimg.cをよく見ると、使い方のメッセージにおける引数の順番と実際に実行時に取得する順番が異なっているのが少々罠。