デバイスファームウェアから抽出したimgファイルをどのように再パッケージ化しますか?

デバイスファームウェアから抽出したimgファイルをどのように再パッケージ化しますか?

DVRがありますが、パスワードを忘れました。リモートでログインし、インターネットから資格情報を取得します(メーカーが同じである可能性があるため、多くのディーラーにとって同じようです)、JTRパスワード。ところで、これが好奇心を呼び起こし、今は楽しくしてファームウェアに触れるようにしたいと思います。私はかなり愚かなのでカスタムロゴを追加してみましたが、おそらく私たちの家の他の人がそれを操作できるようにメニュー言語を変更してみました。

ファームウェアはバイナリファイルとして提供されます。 4つの.imgファイルに抽出します。

  • カスタム-x.cramfs.img
  • フラグ-x.cramfs.img
  • romfs-x.cramfs.img
  • ユーザー-x.cramfs.img

このイメージにいくつかのヘッダーバイトが追加されているためインストールできません。MK画像、いくつかのブログの投稿からわかるように。

文書次の画像(ロゴ)のいずれかのコマンド出力:

logo-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 40960 bytes, Fri Jul  4 06:04:30 2014, Load Address: 0x00770000, Entry Point: 0x00780000, Header CRC: 0xBC5511F0, Data CRC: 0xC6BFF7D1

64バイトのデータを削除した後DDインストールしてファイルにアクセスできます。別の画像ファイルを生成するためにいくつかのジャンクファイルを追加してみました。ファイルを変更/追加した後にインストールされたimgをどのように再パッケージ化しますか?削除した64バイトのデータを再追加するにはどうすればよいですか?

役に立つアイデアをいただきありがとうございます。

答え1

SPIフラッシュを画像化したいとしますsquashfs。まず、squashfs目的のディレクトリからイメージを作成します。

mksquashfs yourdir romfs.squashfs -b 64K -comp xz

次に、正しい開始点とエントリポイントを使用してヘッダーを追加します。

mkimage -A arm -O linux -C gzip -T kernel -a 0x50000 -e 0x430000 -n 'linux' -d romfs.squashfs romfs.squashfs.img 

関連情報