
Автоматически экспортировано из code.google.com/p/firmware-mod-kit
Автоматически экспортировано с google.com/p/firmware-mod-kit
Firmware Modification Kit
Этот набор представляет собой коллекцию скриптов и утилит для извлечения и пересборки образов встроенного ПО на базе Linux.
Извлечение образа прошивки на составные части
Пользователь вносит желаемые изменения в файловую систему прошивки или веб-интерфейс (webif)
Пересборка прошивки
Загрузка модифицированной прошивки на устройство и превращение его в «кирпич» (ха)
ПРЕДУПРЕЖДЕНИЕ: Используя этот набор, вы превратите ваше устройство в «кирпич» (возможно, нет, но лучше сказать, что превратите). «Кирпич» означает, что устройство фактически становится неработоспособным. Иногда восстановление возможно без аппаратных модификаций. Иногда требуются аппаратные доработки (например, припайка разъёмов последовательного порта или JTAG на печатную плату). Иногда это просто нецелесообразно или затраты на восстановление превышают стоимость самого устройства.
НЕ используйте этот набор, если вы не готовы к тому, что ваш роутер превратится в «кирпич»!
Лицензионное соглашение (EULA): Загружая или используя этот набор, вы соглашаетесь принять на себя ответственность за последствия использования или неправильного использования Firmware Mod Kit. Эти последствия включают превращение вашего устройства в «кирпич». Авторы набора вас предупредили. Данный набор предназначен только для инженеров-программистов встраиваемых систем.
Firmware Mod Kit позволяет легко разбирать и собирать образы прошивок для различных встраиваемых устройств. Хотя он в первую очередь ориентирован на роутеры на базе Linux, он должен быть совместим с большинством прошивок, использующих распространённые форматы прошивок и файловые системы, такие как TRX/uImage и SquashFS/CramFS.
Для использования Firmware Mod Kit вам понадобится клиент Subversion, стандартные инструменты разработки Linux (gcc, make и т.д.), модуль python-magic и пакеты разработки zlib и lzma. Если вы используете дистрибутив Linux с apt-get, например Ubuntu или Debian, выполните:
Для Ubuntu 18.04 и старше:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic autoconf
Для Ubuntu 20.04 и новее:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic autoconf python-is-python3
Для RedHat:
yum groupinstall "Development Tools"
yum install git zlib1g-dev xz-devel python-magic zlib-devel util-linux
Для Arch Linux:
Существует пакет AUR для https://aur.archlinux.org/packages/firmware-mod-kit/
Для других дистрибутивов установите эквивалентные пакеты с помощью менеджера пакетов вашего дистрибутива.
git clone https://github.com/rampageX/firmware-mod-kit.git
cd firmware-mod-kit/src
make
Binwalk 2.1.1
[Back in firmware-mod-kit directory]
cd src/binwalk-2.1.1
sudo python2 setup.py install
Firmware Mod Kit поддерживается только на платформе Linux. С небольшими изменениями он должен работать на других POSIX-платформах.
Клонируйте репозиторий Firmware Modification Kit с помощью Git.
Firmware Mod Kit представляет собой набор утилит и скриптов оболочки. Утилиты можно использовать напрямую, а скрипты оболочки — для автоматизации и объединения типовых операций с прошивкой (например, извлечение и пересборка). Основные скрипты для работы с прошивкой перечислены ниже.
Основные скрипты:
| Скрипт | Описание |
|---|---|
| extract-firmware.sh | Скрипт извлечения прошивки |
| build-firmware.sh | Скрипт пересборки прошивки |
Вспомогательные скрипты:
| ddwrt-gui-extract.sh | Извлекает файлы веб-интерфейса из извлечённой прошивки DD-WRT. |
|---|---|
| ddwrt-gui-rebuild.sh | Восстанавливает изменённые файлы веб-интерфейса в извлечённой прошивке DD-WRT. |
Firmware Mod Kit использует «жёстко заданный» рабочий каталог с именем «fmk». Скрипт извлечения извлекает данные в эту папку, а скрипт пересборки собирает из неё. Возможность использования альтернативных рабочих каталогов поддерживается для некоторых операций, но не для всех. В будущем мы расширим эту возможность. Пока же, если у вас несколько рабочих каталогов, рекомендуем переименовывать те, с которыми вы сейчас не работаете.
Автоматизированное извлечение прошивки обычно работает с большинством образов прошивок, использующих заголовки uImage/TRX и файловые системы SquashFS или CramFS. В настоящее время extract-firmware.sh является предпочтительным методом извлечения, так как поддерживает больше типов прошивок, чем старый скрипт old-extract.sh. Однако old-extract.sh всё ещё включён в состав и работает со многими форматами прошивок.
Использование как extract-firmware.sh, так и build-firmware.sh просто:
./extract-firmware.sh firmware.bin
По умолчанию выходные данные extract-firmware.sh будут расположены в каталоге «fmk», в то время как old-extract.sh помещает извлечённые данные в указанный рабочий каталог.
Какой скрипт сборки использовать, зависит от того, какой скрипт извлечения применялся. Если вы извлекли образ прошивки с помощью extract-firmware.sh, то для пересборки необходимо использовать build-firmware.sh. Аналогично, если использовался old-extract.sh, то для пересборки образа следует вызывать old-build.sh:
./build-firmware.sh [-nopad] [-min]
Новая прошивка, созданная build-firmware.sh, будет находиться по пути «fmk/new-firmware.bin», в то время как old-build.sh создаёт образы прошивок в нескольких различных форматах и сохраняет их в указанном выходном каталоге.
Необязательный параметр -nopad указывает build-firmware.sh НЕ дополнять прошивку до исходного размера.
Необязательный параметр -min использует максимальный размер блока squashfs в 1 МБ. Это уменьшит размер образа прошивки ценой увеличения загрузки ЦП и оперативной памяти на целевом устройстве. Не используйте этот параметр без необходимости. Это очень большой размер блока для встраиваемых систем. Исходный размер блока squashfs прошивки сохраняется при пересборке, и следует использовать исходный размер блока, если вы не уверены в том, что делаете. Слишком большой размер блока может работать нормально, но производительность прошивки во время выполнения может снизиться как при всех, так и при некоторых нагрузках.
Одной из уникальных особенностей Firmware Mod Kit является возможность извлекать и пересобирать файлы из веб-интерфейса DD-WRT. Это автоматизируется скриптами ddwrt-gui-extract.sh и ddwrt-gui-restore.sh.
После того как вы извлекли образ прошивки DD-WRT с помощью extract-firmware.sh, вы можете извлечь веб-файлы, выполнив:
./ddwrt-gui-extract.sh
Это создаст каталог с именем «www» и извлечёт туда веб-файлы. Вы можете изменять файлы любым способом, но не можете добавлять или удалять файлы.
Когда вы закончите редактирование, вы можете пересобрать веб-файлы, выполнив:
./ddwrt-gui-rebuild.sh
Иногда вы с энтузиазмом прошиваете стороннюю прошивку, например Gargoyle или DD-WRT, только чтобы обнаружить, что в ней отсутствуют необходимые функции, она работает хуже заводской прошивки или имеет функциональные проблемы. В такой ситуации вы можете захотеть вернуться к заводской прошивке, но не иметь возможности это сделать!
Вот как Firmware Mod Kit может помочь вам вернуться к заводской прошивке. Процесс выглядит следующим образом:
Как только вы вернулись к заводской прошивке, она снова принимает образы заводских прошивок.
В этом примере показано, как извлечь образ прошивки, заменить существующий демон telnet на собранный вручную, а затем собрать новый образ прошивки:
./extract-firmware.sh firmware.bin
cp new-telnetd fmk/rootfs/usr/sbin/telnetd
./build-firmware.sh
Ниже приведён пример команд, необходимых для извлечения образа прошивки DD-WRT, изменения веб-страницы индекса и сборки нового образа прошивки:
./extract-firmware.sh firmware.bin
./ddwrt-gui-extract.sh
echo "HELLO WORLD" > www/index.asp
./ddwrt-gui-rebuild.sh
./build-firmware.sh
Linksys использует пользовательские футеры с проверкой контрольной суммы, поэтому был написан этот скрипт для автоматизации процесса расчёта контрольной суммы образа и соответствующего изменения футера. Новый образ будет записан в modified_checksum.img. Запускайте этот скрипт после модификации и build-firmware.sh.
./linksys_footer.sh modified_firmware.img
Firmware Mod Kit состоит из набора инструментов, полезных при работе с образами встраиваемого ПО. Сюда входят перечисленные ниже, но есть МНОГО ДРУГИХ, которые здесь не указаны.
| Инструмент | Описание |
|---|
| AsusTRX | Расширенная версия ASUSTRX, которая может собирать как «обычные» файлы TRX, так и, опционально, файлы с добавленным заголовком в стиле ASUS addver. Он также может (уникально) принудительно задавать смещения сегментов в TRX (с помощью ключа -b) для совместимости с устройствами Marvell ASUS, такими как WL-530g. Этот инструмент заменяет как «обычную» утилиту trx, так и addver. Включённые текущие версии: 0.90 beta. |
| AddPattern | Утилита для добавления заголовка Linksys HDR0 перед TRX. |
| AddVer | Утилита ASUS для добавления заголовка с информацией о версии к образу TRX. ASUSTRX включает эту возможность. Текущая версия: без версии. |
| Binwalk | Сканирует образы прошивок на наличие известных типов файлов (заголовки прошивок, сжатые ядра, файловые системы и т.д.) |
| CramFSCK | Инструмент проверки и извлечения образов файловой системы CRAMFS. Включённые текущие версии: 2.4x. |
| CramFSSwap | Утилита для изменения порядка байт (endianness) образа CramFS |
| CRCalc | Утилита для исправления всех заголовков uImage и TRX внутри заданного образа прошивки. |
| MkSquashFS | Собирает образ файловой системы squashfs. Включённые текущие версии: 2.1-r2, 3.0. |
| MkCramFS | Собирает образ файловой системы cramfs. Появится в следующей версии. Включённые текущие версии: 2.4x. |
| MotorolaBin | Утилита, добавляющая 8-байтовые заголовки к образам TRX для устройств Motorola WR850G, WA840G, WE800G. Текущая версия: без версии. |
| Splitter3 | Утилита для сканирования и извлечения составных частей образа прошивки. |
| Tpl-tool | Утилита для манипуляции образами в формате TP-Link. |
| UnCramFS | Альтернативный инструмент для извлечения образа файловой системы cramfs. По возможности используйте cramfsck, так как он кажется более надёжным. Включённые текущие версии: 0.7 (для cramfs v2.x). |
| UnCramFS-LZMA | Альтернативный инструмент для извлечения сжатых LZMA образов cramfs, таких как используемые OpenRG. |
| UnSquashFS | Извлекает образ файловой системы squashfs, сжатый zlib. Включённые текущие версии: 1.0 для образов 3.0 и 1.0 для образов 2.x (собственная смесь). |
| UnSquashFS-LZMA | Извлекает образ файловой системы squashfs, сжатый lzma. Включённые текущие версии: 1.0 для образов 3.0 и 1.0 для образов 2.x (собственная смесь). Примечание: Не все патчи squashfs-lzma совместимы друг с другом. Я работаю над добавлением поддержки всех распространённых вариантов squashfs-lzma. |
| UnTRX | Разделяет прошивки в стиле TRX на составные части. Также поддерживает предварительно добавленные заголовки в стиле addpattern HDR0. Разработан исключительно для этого набора. Включённые текущие версии: 0.45. |
| WebDecomp | Извлекает и восстанавливает файлы веб-интерфейса из образов прошивок DD-WRT, позволяя вносить изменения в веб-страницы. |
| WRTVxImgTool | Утилита для генерации образов прошивок, совместимых с VxWorks, для серии WRT54G(S) v5. |