Как распаковать прошивку BIN: пошаговая инструкция

Файл .bin попадается в руки по-разному: скачан с официального сайта роутера, вычитан программатором из чипа памяти или извлечён из обновления навигатора — и в каждом случае двойной клик по нему ничего не даст, потому что BIN не является архивом в привычном понимании. Это бинарный контейнер, внутри которого могут лежать загрузчик, ядро, файловая система и служебные блоки, склеенные в один поток байт.

Распаковка такого файла — задача решаемая, но требующая понимания структуры конкретной прошивки. В этой статье разберём, как определить тип BIN-файла, какими инструментами его вскрыть на Windows и Linux, и что делать, если стандартные программы бессильны.

Что находится внутри BIN-прошивки

Прежде чем запускать инструменты, полезно понимать, с чем вы имеете дело. Типичная прошивка устройства на базе Linux (роутер, IP-камера, ТВ-приставка) состоит из нескольких областей: заголовок с сигнатурой и контрольной суммой, загрузчик (например, U-Boot), ядро и корневая файловая система в формате SquashFS, JFFS2 или UBIFS.

У прошивок, вычитанных программатором из флеш-памяти, структура может быть сырой — без заголовков, просто дамп памяти от нулевого адреса до конца чипа. Такие файлы распаковываются иначе, чем упакованные производителем обновления.

  • 🔧 Заголовок — служебный блок с сигнатурой, версией и контрольной суммой
  • ⚙️ Загрузчик — код, стартующий первым при включении устройства
  • 💾 Ядро — сжатый образ операционной системы (часто lzma или gzip)
  • 📁 Файловая система — раздел с программами и настройками устройства

Определяем тип BIN-файла

Первый шаг — идентификация. Откройте файл в любом HEX-редакторе, например HxD для Windows, и посмотрите первые байты. Сигнатуры в начале файла часто указывают на формат: строки вроде uImage, hdr, магические числа 27 05 19 56 (образ U-Boot) или 1F 8B (gzip) дают подсказку о структуре.

Быстрый способ — команда file в Linux или в терминале WSL на Windows:

file firmware.bin

Утилита попытается распознать тип содержимого. Если ответ — просто «data», значит, файл либо зашифрован, либо имеет нестандартную структуру, и потребуется более глубокий анализ.

Распаковка с помощью binwalk

Binwalk — главный инструмент для анализа и извлечения прошивок. Он сканирует файл на предмет известных сигнатур и показывает, где какие блоки расположены. Программа работает в Linux и доступна через WSL в Windows.

Сначала выполните сканирование без извлечения, чтобы оценить структуру:

binwalk firmware.bin

Если в выводе видны строки вроде SquashFS filesystem, gzip compressed data или uImage header — файл поддаётся автоматической распаковке. Команда извлечения всех найденных блоков:

binwalk -e firmware.bin

Результат появится в папке вида _firmware.bin.extracted рядом с исходным файлом. Для рекурсивной распаковки вложенных архивов добавьте флаг -M, а для извлечения с правами root (нужно для корректных атрибутов файлов) запускайте через sudo.

☑️ Подготовка к распаковке BIN

Выполнено: 0 / 5

Альтернативные инструменты для Windows

Не все готовы работать в терминале Linux. На Windows есть варианты попроще, хотя и с ограничениями. 7-Zip иногда открывает BIN-файлы напрямую — попробуйте пункт контекстного меню 7-Zip → Открыть архив. Это сработает, если производитель упаковал прошивку в ZIP-совместимый контейнер, что встречается у обновлений навигаторов и некоторых планшетов.

Для прошивок Android-устройств, распространяемых в виде BIN, существуют специализированные утилиты вроде MTK extractor и подобных — но их выбор зависит от конкретного чипа и производителя, поэтому ищите инструмент под свою модель на профильных форумах.

ИнструментПлатформаКогда применять
BinwalkLinux, WSLУниверсальный анализ и извлечение
7-ZipWindowsПрошивки в ZIP-совместимой оболочке
HxDWindowsРучной анализ сигнатур и структуры
Firmware Mod KitLinuxИзвлечение и пересборка SquashFS
unsquashfsLinuxРаспаковка отдельного раздела SquashFS
📊 С какой целью вы распаковываете прошивку BIN?
Изучить содержимое и настройки
Извлечь драйверы или файлы
Модифицировать и собрать обратно
Восстановить устройство после сбоя

Извлечение файловой системы вручную

Автоматика не всегда справляется. Если binwalk показал смещение раздела SquashFS, но не смог его извлечь, вырежьте блок вручную командой dd, указав смещение из отчёта:

dd if=firmware.bin of=rootfs.squashfs bs=1 skip=1048576

Затем распакуйте полученный файл:

unsquashfs rootfs.squashfs

Содержимое окажется в каталоге squashfs-root. Если unsquashfs выдаёт ошибку о несовместимой версии — возможная причина в том, что производитель использовал модифицированный вариант SquashFS с нестандартным сжатием. В этом случае помогает Firmware Mod Kit, содержащий набор версий распаковщиков под разные реализации.

⚠️ Внимание: команда dd при неверно указанных параметрах способна затереть данные на диске. Всегда дважды проверяйте имена входного (if) и выходного (of) файлов перед нажатием Enter.

Что делать, если прошивка зашифрована

Если binwalk не находит ни одной сигнатуры, а энтропия файла равномерно высокая по всей длине — скорее всего, прошивка зашифрована. Производители всё чаще применяют шифрование обновлений, и без ключа такой файл распаковать нельзя.

Возможные обходные пути: поискать расшифрованную версию прошивки для той же модели (старые версии часто не шифровались), изучить, как устройство само расшифровывает обновление, или вычитать содержимое напрямую из флеш-памяти устройства программатором. Последний вариант требует разборки устройства и навыков работы с паяльным оборудованием, поэтому подходит не всем.

Как проверить энтропию файла

Запустите binwalk с флагом -E: binwalk -E firmware.bin. Программа построит график энтропии. Равномерно высокие значения по всему файлу указывают на шифрование или сильное сжатие. Участки с низкой энтропией — это обычно незашифрованный код или пустые области.

⚠️ Внимание: модифицированная и неправильно пересобранная прошивка может вывести устройство из строя («окирпичить»). Перед прошивкой изменённого образа убедитесь, что у вас есть способ восстановления — работающий загрузчик, UART-доступ или полный дамп оригинальной памяти.

Проверка результата распаковки

Как понять, что извлечение прошло успешно? В распакованной файловой системе должны быть характерные каталоги: /bin, /etc, /lib, /usr. Проверьте несколько исполняемых файлов командой file — они должны определяться как ELF-бинарники под архитектуру устройства (ARM, MIPS).

Если вместо осмысленной структуры вы видите набор файлов с случайным содержимым — извлечение прошло с ошибкой: неверное смещение, неподходящий распаковщик или шифрование. Вернитесь к анализу сигнатур и попробуйте другой инструмент.

Часто задаваемые вопросы

Чем открыть файл BIN прошивки на Windows без Linux?

Начните с 7-Zip — некоторые прошивки открываются как архивы. Для анализа структуры подойдёт HEX-редактор HxD. Полноценная распаковка встраиваемых прошивок обычно требует binwalk, который на Windows запускается через подсистему WSL.

Binwalk ничего не нашёл в файле. Что это значит?

Возможные причины: прошивка зашифрована производителем, файл имеет нестандартный формат или это сырой дамп памяти без сигнатур. Проверьте энтропию командой binwalk -E — равномерно высокие значения указывают на шифрование.

Можно ли после распаковки собрать прошивку обратно?

Да, но это сложнее распаковки. Потребуется пересобрать файловую систему (например, через mksquashfs), склеить блоки в исходном порядке и пересчитать контрольные суммы в заголовке. Инструменты вроде Firmware Mod Kit частично автоматизируют этот процесс, но корректность сборки зависит от конкретного формата прошивки.

Чем отличается BIN от IMG в прошивках?

Оба расширения обозначают бинарные образы, и разница чаще в договорённостях производителя, чем в формате. IMG нередко является образом раздела диска, который можно смонтировать, а BIN — произвольным бинарным контейнером. Определять реальный формат нужно по содержимому, а не по расширению.

Безопасно ли распаковывать прошивку, скачанную из интернета?

Сама распаковка безопасна, если вы не запускаете извлечённые исполняемые файлы на своей системе. Файлы из прошивки собраны под процессор устройства (ARM, MIPS) и на ПК не запустятся, но из соображений осторожности анализ лучше проводить в виртуальной машине.