PAV-HMS220のファームウェア用パッチ

概要

PAV-HMS220 (Thecus N2810のOEM) のファームウェアイメージに対して,以下の修正を行うスクリプトを作成した.

  • ダウングレードを可能にする
    • ファームウェアイメージのバージョン情報を v3.99.99.9 に書き換え,アップグレードに見せかける
    • ダウングレード後は正しいバージョン情報が表示される
  • 他機種用FWの流用を可能にする
    • ファームウェアイメージの機種情報を書き換える
    • 更新後は他機種の情報に書き換わってしまうが,元に戻すことも可能

誤ったFWを書き込むと動作しなくなる場合があるので注意.必ず/dev/mmcblk0のダンプを取得してから行うこと.

ファームウェアイメージのダウンロード用リンク

patch.sh

このファイルはNAS上で実行する.詳細な手順は次のセクションに示す.

#!/bin/bash

if [ ! -f "$1" ]; then
  echo No input file.
  exit 1
fi

set -e

INPUT="$(cd $(dirname $1) && pwd)/$(basename $1)"
OUTPUT="${INPUT}-patched"
FWCONFIG="/img/fwconfig"

. ${FWCONFIG}

cd /tmp

echo decrypt.
/usr/bin/des -k ${DESKEY} -D ${INPUT} upgrade.tar.gz

echo unpack.
tar zxf upgrade.tar.gz
rm upgrade.tar.gz

echo patch.
cp /etc/manifest.txt upgrade/manifest.txt
echo "3.99.99.9.k401" > upgrade/version

echo repack.
tar zcf upgrade.tar.gz upgrade/
rm -rf upgrade/

echo encrypt.
/usr/bin/des -k ${DESKEY} -E upgrade.tar.gz ${OUTPUT}
rm upgrade.tar.gz

echo complete.

使い方

  • patch.shファームウェアイメージをNASNAS_Publicフォルダに保存する.
    • 説明ではファームウェアイメージは Princeton_x86_64_FW.3.01.04.4.k401 とする.別のものを使用する場合は適宜読み替えること.
      f:id:v2n:20210124010110p:plain
  • rootでシェルを起動する (パスワードはWebGUIのadminと同一)
    • SSHサービスを有効にしておきSSHでアクセスするか,Ctrl+Alt+F2でテキストコンソールを開く
  • cd /raid/NAS_Public/
  • cp /etc/manifest.txt .
  • ./patch.sh Princeton_x86_64_FW.3.01.04.4.k401
    • 処理には1分ほど時間がかかる
  • 完了すると,NAS_PublicフォルダにPrinceton_x86_64_FW.3.01.04.4.k401-patchedが保存されている.このファイルをアップデートに使用する.
    • 更新画面ではバージョン番号が3.99.99.9となるが,アップデート後は正しいバージョン番号が表示される.
      f:id:v2n:20210124010308p:plain

メモ

  • ファームウェアの展開
    • DESで暗号化されており,暗号化/復号にはdesコマンドを用いる
      • バージョンを確認するとdes(1) built with libdes v 3.24 - 20-Apr-1996 - eayと表示される.Eric Andrew Youngが作ったlibdesのdesコマンドだと思われる.
      • 鍵は/img/fwconfigに記載されている.
    • 復号されたファイルはgzipで圧縮されたtarballなので,tarで展開できる