現在、ルータファームウェア(Swisscom Centro Grande - 別名Pirelli Vx226N1、ファームウェアバージョン:60200)を修正しようとしています。
正常にデコンパイルしましたFMK v0.99そしてheader.img
、rootfs.img
およびfooter.img
画像部分を得ました。
これはrootfs.imgのbinwalkです:
Squashfsファイルシステム、リトルエンディアン、非標準署名、バージョン4.0、圧縮:gzip、サイズ:2764423バイト、1145 inode、ブロックサイズ:65536バイト、2013年3月15日金曜日00:33:08で作成されました
unsquashfsを使用してrootfs.imgを正常にデコンパイルし、システムフォルダをインポートしました。いくつか変更し(Telnetでシェルを有効にする)、付属の./build-firmware.sh
ツール(コマンド)を使用してすべてを再パッケージ化しました。
最終ファームウェアのサイズは元のファームウェアより大きいです。フラッシュしようとしましたが、何も起こりませんでした。ファームウェア、特にアップグレード方法を分析して正しく構築する方法を理解しました。
update.sh
アップグレードプロセスを処理するファイルが見つかりました(ユーザーが提供したファイルを分析し、レンガを防ぐためにすべてが正しい場合にのみ点滅します)。
元のファームウェアファイルがその機能で解析されると確信しているので、parse_yaps_image()
ファイルを確認するために直接調整してみましたが、次のバイナリの外部チェックがあることがわかりました。sig_verify
ファイルがない場合は別の関数を呼び出しますが、問題は提供された関数が正しくないことです(元のwrong validation token
ファームウェアでもエラーが発生します!)
私の目標は、ファイルを分析し、sig_verify
アルゴリズムを見つけて設定方法を理解し、ルーターを正しい方法でフラッシュし、最後にルートシェルを取得することです(そしてあなたが望むすべてを修正します)。
ファイルをすべてアップロードしました。巨大なフォルダしたがって、私を助けたい興味のある人は、必要なすべてのファイルにアクセスできます。
フォルダ60208のファイルを確認するための2つのスクリプトが含まれています。
私が書いたスクリプトの結果(ルーターでスクリプトを適用したもの)は次のとおりです。
denys@denys-pc:~/Documents/router/Vx226N1/images/modified/60208$ ./check_upgrade_yaps.sh
Parsing YAPS format...
16+0 records in
16+0 records out
16 bytes (16 B) copied, 0.000843843 s, 19.0 kB/s
Error: wrong validation token (5b445d3b251d59753031c9d7a94ba4ab, 7d98668859855f1b9459256257fc3262)
これはファイルのbinwalkですsig_verify
。
denys@denys-pc:~/Documents/router/Vx226N1/images/modified/60208$ binwalk sig_verify
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
0 0x0 ELF 32-bit MSB executable, MIPS, version 1
1921 0x781 LZMA compressed data, properties: 0x01, dictionary size: 16777216 bytes, uncompressed size: 16777472 bytes
気づいたように、これはMeaps実行可能。 MIPS環境(仮想マシン)で実行してみましたが、qemu-system-mips
成功しませんでした。
qemu-system-mips -M mips -kernel ./vmlinux-2.6.18-6-qemu -initrd ./initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic
カーネルとinitrdは以下からダウンロードされます。http://archive.debian.org/debian/dists/etch/main/installer-mips/current/images/qemu/netboot/
どんな助けでも大変感謝します。不明な点があれば教えてください :)
ベストアンサー1
まず、デコンパイルではなく抽出または解凍を意味します。しかし、もっと重要なのは、qemuシステムではなく、qemuユーザープログラムが必要なことです。たとえば、Debian GNU/Linux では、単に qemu-user-binfmt パッケージをインストールし、tghese バイナリをネイティブバイナリのように実行できます。
唯一の問題は、これらのバイナリにはハードコードされた場所(/ libのuClibcなど)にファイルが必要であることです。この問題を解決する簡単な方法は、関連するqemuユーザー(「qemu-mips」など)を抽出されたルートディレクトリ内の同じパスにコピーすることです。
cp /usr/bin/qemu-mips router-root/usr/bin
その後、Busyboxをシェルとして使用して内部でchrootを実行できます。
chroot router-root bin/sh
chroot router-root bin/sig_verify ...
しかし、sig_verifyが十分に良い署名アルゴリズム(rsaなど)を使用している場合、自分のファイルに署名する可能性は薄くなります。