Файл .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
Альтернативные инструменты для Windows
Не все готовы работать в терминале Linux. На Windows есть варианты попроще, хотя и с ограничениями. 7-Zip иногда открывает BIN-файлы напрямую — попробуйте пункт контекстного меню 7-Zip → Открыть архив. Это сработает, если производитель упаковал прошивку в ZIP-совместимый контейнер, что встречается у обновлений навигаторов и некоторых планшетов.
Для прошивок Android-устройств, распространяемых в виде BIN, существуют специализированные утилиты вроде MTK extractor и подобных — но их выбор зависит от конкретного чипа и производителя, поэтому ищите инструмент под свою модель на профильных форумах.
| Инструмент | Платформа | Когда применять |
|---|---|---|
| Binwalk | Linux, WSL | Универсальный анализ и извлечение |
| 7-Zip | Windows | Прошивки в ZIP-совместимой оболочке |
| HxD | Windows | Ручной анализ сигнатур и структуры |
| Firmware Mod Kit | Linux | Извлечение и пересборка SquashFS |
| unsquashfs | Linux | Распаковка отдельного раздела SquashFS |
Извлечение файловой системы вручную
Автоматика не всегда справляется. Если 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) и на ПК не запустятся, но из соображений осторожности анализ лучше проводить в виртуальной машине.