Кто-нибудь знает, в каком типе файла или файловой системе обычно сохраняется Rom-файл маршрутизатора (загружаемый из интерфейса маршрутизатора)? Есть ли инструмент (мы не говорим об инструменте архивирования, например, zip/7z/rar), который я мог бы использовать для распаковки /правильной перепаковки файла прошивки? Причина, по которой я спрашиваю, заключается в том, что я хочу поиграться, возможно, добавлю в них некоторые изменения, и мой маршрутизатор будет сброшен с измененной прошивкой. Маршрутизатор не поддерживает нестандартные и модные прошивки сторонних производителей, поэтому мне нужно модифицировать стоковую прошивку производителя.
1 ответ
Инструмент с именем binwalk может быть хорошей отправной точкой для анализа встроенного программного обеспечения. Он выдаст список, который точно содержит файл прошивки. Он также способен извлекать идентифицированные блоки, но вместо этого я использую dd .
Несмотря на то, что binwalk очень полезен, он не совсем точен. Я на самом деле борюсь с прошивкой ZynOS, и binwalk говорит, что это сжатый архив LZMA, но ни один из инструментов LZMA не может его распаковать. Это выглядит как большой пакет данных без какой-либо известной файловой структуры.
Это может быть плохой информацией для вас, но иногда невозможно просто распаковать его, что-то изменить и снова упаковать (например, мой Linksys, где прошивка представляет собой просто раздел SquashFS с типичной файловой системой Linux). Я буду заниматься дальнейшими исследованиями, и если мне удастся найти что-то интересное, я обновлю свой пост.
Вы должны получить аналогичный вывод из binwalk.
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------------------
65790 0x100FE LZMA compressed data, properties: 0x7E, dictionary size: 4194304 bytes, uncompressed size: 65536 bytes
84992 0x14C00 ZynOS header, header size: 48 bytes, rom image type: ROMBIN, uncompressed size: 66696, compressed size: 16847, uncompressed checksum: 0xCB32, compressed checksum: 0xD5A5, flags: 0xE0, uncompressed checksum is valid, the binary is compressed, compressed checksum is valid, memory map table address: 0x0
85043 0x14C33 LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 66696 bytes
128002 0x1F402 GIF image data, version "89a", 200 x 50
136194 0x21402 GIF image data, version "89a", 560 x 50
328486 0x50326 Copyright string: " (c) 2001 - 2012 TP-LINK TECHNOLOGIES CO., LTD.LOGIES CO., LTD."
350208 0x55800 ZynOS header, header size: 48 bytes, rom image type: ROMBIN, uncompressed size: 5077932, compressed size: 1121804, uncompressed checksum: 0xB4F9, compressed checksum: 0x84CA, flags: 0xE0, uncompressed checksum is valid, the binary is compressed, compressed checksum is valid, memory map table address: 0x0
350259 0x55833 LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 5077932 bytes
Колонки:
- Позиция в целевом файле (десятичное число)
- Положение в целевом файле (шестнадцатеричное)
- Краткое описание блока