Чем или как вскрыть прошивку роутера .bin
День бодрый. Имеется китайский фафля роутер Tenda N4. трабл в том, что интерфейс на китайском и русского или хотя бы английского не предвидится. если с русским понятно, то с английской прошивкой интересная история — она как бы есть, но её версия v.5, а китайская v.9. и скормить английскую не получается. Собственно вопрос — как и чем вскрыть прошивку и заменить китайские иероглифы на русские слова в существующей прошивке. Прошивка в формате .bin, пользуюсь ОС Debian testing.
grey_wolf
19.04.17 09:49:44 MSK
Hex редактор. Вручную значения менять придется.
karton1 ★★★★★
( 19.04.17 10:06:29 MSK )
А что говорит команда
file
Ygor ★★★★★
( 19.04.17 10:17:08 MSK )
Сдается мне после редактирования не сойдутся контрольные суммы и такую прошивку роутер откажется в себя заливать. Можно режить с помощью программатора, но тогда и редактировать не имеет смысла, ибо можно сразу залить английскую v5.
dexitry
( 19.04.17 10:28:16 MSK )
Ответ на: комментарий от dexitry 19.04.17 10:28:16 MSK
а разве роутеры проверяют прошивку на контрольную сумму? мне кажется он просто проверяет по размеру.
grey_wolf
( 19.04.17 11:24:28 MSK ) автор топика
Вопрос не тривиальный и, скорее всего, после редактирования роутер откажется съесть прошивку.
Как уже говорили — любой hex редактор.Можно пойти дальше и, посмотрев в hex обнаружить области, разделенные большим количеством нулей. Скорее всего это различные разделы, можно dd с заданым смещением отдельно скопировать эти разделы и попытаться примонтировать и редактировать уже в более привычном формате. Но тут миллион всяких «если»
Nicholass ★★★
( 19.04.17 11:35:15 MSK )
Попробуй распаковать binwalk’ом.
dnb ★★★★
( 19.04.17 11:36:23 MSK )
Проще по моему обратиться в lede для обеспечения поддержки этой Тенды
sniper21 ★★★★★
( 19.04.17 11:37:42 MSK )
Ответ на: комментарий от grey_wolf 19.04.17 11:24:28 MSK
Еще как проверяют. В файле же обычно не fullflash, а только некоторые разделы (ядро, rootfs, etc), да и те могут быть порезаны, чтобы пустое место в файл не пихать.
Radjah ★★★★★
( 19.04.17 11:38:20 MSK )
Ответ на: комментарий от dnb 19.04.17 11:36:23 MSK
binwalk при установки тянет qt4. с таким же успехом можно и okteta установить. а на gtk есть чо?
grey_wolf
( 19.04.17 11:43:07 MSK ) автор топика
Ответ на: комментарий от Radjah 19.04.17 11:38:20 MSK
понял. я ж не знал. впервые с этим столкнулся.
grey_wolf
( 19.04.17 11:44:42 MSK ) автор топика
вроде начали про прошивки, а закончили как всегда срачем про гуйки)
Bruce_Lee ★★
( 19.04.17 11:45:21 MSK )
Ответ на: комментарий от sniper21 19.04.17 11:37:42 MSK
этого роутера нет у них в списке поддерживаемых устройств. видать там памяти мало для таких вещей.
grey_wolf
( 19.04.17 11:49:35 MSK ) автор топика
Ответ на: комментарий от grey_wolf 19.04.17 11:43:07 MSK
Эмм, он вообще-то cli. У меня в арче зависимости только питон. Попробуй взять с гитхаба или через pip.
dnb ★★★★
( 19.04.17 11:58:26 MSK )
Ответ на: комментарий от Ygor 19.04.17 10:17:08 MSK
u-boot legacy uImage, linkn_16MB2MB_311rv2, Linux/MIPS, Standalone Program (Not compressed), 709912 bytes, Tue Sep 11 01:07:41 2012, Load Address: 0x80300000, Entry Point: 0x80300000, Header CRC: 0x91C8B528, Data CRC: 0xFEC17FE1
grey_wolf
( 19.04.17 13:02:26 MSK ) автор топика
А включить функцию перевода в браузере не?
Infra_HDC ★★★★★
( 19.04.17 13:07:03 MSK )
Разбери и напиши что написано на микросхемах.
Или фото платы с нормальным разрешением.
hbars ★★★★★
( 19.04.17 13:08:43 MSK )
Ответ на: комментарий от Infra_HDC 19.04.17 13:07:03 MSK
то так и настраивал)))но очень хочется русификацию. да и стандартный пароль на вход в веб морду хочу изменить.
grey_wolf
( 19.04.17 13:11:39 MSK ) автор топика
Ответ на: комментарий от grey_wolf 19.04.17 11:49:35 MSK
Нету, но если вы читали внимательно я и предложил им написать чтобы добавили поддержку.
sniper21 ★★★★★
( 19.04.17 13:12:33 MSK )
Ответ на: комментарий от hbars 19.04.17 13:08:43 MSK
фото будет попозже — приеду домой и сделаю. сам хочу узнать что за проц там используется
grey_wolf
( 19.04.17 13:13:04 MSK ) автор топика
там скорее всего uImage+squashfs будут
Dark_SavanT ★★★★★
( 19.04.17 13:13:21 MSK )
Ответ на: комментарий от grey_wolf 19.04.17 13:02:26 MSK
Ygor ★★★★★
( 19.04.17 13:25:26 MSK )
Ответ на: комментарий от Ygor 19.04.17 13:25:26 MSK
О спасибо великий просветитель. на гугл каждый может послать, а вот рассказать как его распаковать — не каждый.
grey_wolf
( 19.04.17 13:45:48 MSK ) автор топика
Ответ на: комментарий от grey_wolf 19.04.17 13:45:48 MSK
У тебя что-то из этого не получилось?
Ygor ★★★★★
( 19.04.17 13:47:59 MSK )
Ответ на: комментарий от Ygor 19.04.17 13:47:59 MSK
да — оно не распаковывается. пробовал unzip, p7zip. стандартный xarchiver его вообще не видит.
grey_wolf
( 19.04.17 13:59:41 MSK ) автор топика
Ответ на: комментарий от grey_wolf 19.04.17 13:59:41 MSK
едрить колотить, очевидно же что у тебя уже имейдж, а в статье у автора был архив с имейджами
Deleted
( 19.04.17 14:33:51 MSK )
Ответ на: комментарий от Deleted 19.04.17 14:33:51 MSK
а чем открыть или как открыть сей имейдж?
anonymous
( 19.04.17 22:21:46 MSK )
Ответ на: комментарий от anonymous 19.04.17 22:21:46 MSK
Тип по ссылке пишет:
Теперь небольшое пояснение: образ .img из данной прошивки является несколько изменённым образом файловой системы cramfs. Вот тут можно почитать поподробнее. Чтобы привести образ к нормальному виду, нужно отрезать 64 байта заголовка.
дальше идет команда dd
Deleted
( 19.04.17 22:55:01 MSK )
Ответ на: комментарий от hbars 19.04.17 13:08:43 MSK
я так и не понял сколько там памяти и взлетит ли lede или ddwrt.
grey_wolf
( 20.04.17 20:11:05 MSK ) автор топика
anonymous
( 20.04.17 20:18:19 MSK )
Ответ на: комментарий от grey_wolf 20.04.17 20:11:05 MSK
Нечто очень похожее на dir-300nru b7 на rt5350f.
А вот с память (ram) не понятки. Не нашел.
openwrt по идее может и нормально взлетит, а если перепаять рам на M12L2561616A-6T, или аналогичные и spi по больше — так точно. Будет тот же dir-300nru b7.
hbars ★★★★★
( 20.04.17 22:07:33 MSK )
Ответ на: комментарий от grey_wolf 20.04.17 20:11:05 MSK
кабель к антенне не экранирован шоле? может проще выкинуть сие чудо
Deleted
( 20.04.17 22:16:33 MSK )
Ответ на: комментарий от grey_wolf 20.04.17 20:11:05 MSK
А теперь фото другой стороны платы, память скорее всего там распаяна.
А вообще лучше не париться, а купить у китайцев нормальный роутер уже с предустановленным OpenWRT, двухдиапазонным вайфаем, скорее всего аппаратным натом и прочими ништяками.
Мой любимый роутер вообще — Nexx wt3020h(f). Недорого, функционально, ничего лишнего. С собой легко таскать в рюкзаке как времянку если что. И питать в дороге от павербанка, например
darkduke ★
( 20.04.17 23:08:05 MSK )
Ответ на: комментарий от darkduke 20.04.17 23:08:05 MSK
двухдиапазонным вайфаем, скорее всего аппаратным натом и прочими ништяками.
и где тут двухдиапазонный вайфай? да и порты на 100 мегабит за такие деньги не смешно даже
WindowsXP ★★
( 21.04.17 00:31:17 MSK )
Ответ на: комментарий от darkduke 20.04.17 23:08:05 MSK
на обратной стороне никаких микросхем нет. да сей роутер нормально работает. единственное что не нравится это китайские иероглифы в вебморде. там даже правила имеются для обеспечения безопасности.
grey_wolf
( 21.04.17 00:35:05 MSK ) автор топика
Ответ на: комментарий от hbars 20.04.17 22:07:33 MSK
говорится что 4M x 16 bit Synchronous DRAM (SDRAM). что-то мне не верится что 4метра влезет что-то типа ddwpt.
grey_wolf
( 21.04.17 01:05:13 MSK ) автор топика
Ответ на: комментарий от WindowsXP 21.04.17 00:31:17 MSK
вот и дешевле — https://ru.aliexpress.com/item/D-LINK-DIR-615-DD-WRT-WiFi-Wireless-Router-2-A. но как уже писал — мне не нужен пока новый роутер. мне нужно всковырнуть прошивку.
grey_wolf
( 21.04.17 01:53:47 MSK ) автор топика
Ответ на: комментарий от grey_wolf 21.04.17 01:53:47 MSK
это не я тебе роутер купить предлагал, я просто удивился что такое Г человек предлагает
WindowsXP ★★
( 21.04.17 08:32:28 MSK )
Ответ на: комментарий от grey_wolf 21.04.17 01:05:13 MSK
Ну не знаю взлетит, или нет. 36-я нога действительно не используется. Значит не 4 банка и не 32 метра.
Только перепай ram. Если конечно эта нога от rt5350f разведена.
hbars ★★★★★
( 21.04.17 11:31:53 MSK )
Ответ на: комментарий от grey_wolf 20.04.17 20:11:05 MSK
1MiB spi flash (25q80), 8MiB ram (em638165)
v.9 не могу найти, чтобы повнимательнее рассмотреть. Нашёл v.5, но она в другом (trx) формате. Размер bin-а 709912+64? Если откусить первые 64 байта и натравить file на остаток — что пишет?
NightSpamer ★
( 26.04.17 18:53:46 MSK )
Ответ на: комментарий от NightSpamer 26.04.17 18:53:46 MSK
сылка на прошивку — drive.google.com/file/d/0B6xq0TJZeF_IQy1VcXphaklqNkE/view
установил u-boot-tools… заголовок uImage занимает 64 байт. отрезал его,выполнил: $ dd if=US_N4v1Ra_V9.2.4.16_CN.bin of=US_N4v1Ra_V9.2.4.16_CN.bin_kernel iflag=skip_bytes skip=64 bs=1M
всё делал по совету человека с хабра. вот что он сказал по этому поводу
Это распаковщик LZMA и загрузчик. Внутри LZMA — образ ядра ОС реального времени eCos. Загружается по адресу 0x80000000. Все HTML-страницы прямо в образе ОС.
но вот чем ковырять дальше? у меня в отличии него нет IDA Pro. а очень хочется поменять китайские иероглифы на русские слова.
grey_wolf
( 02.05.17 16:04:46 MSK ) автор топика
Ответ на: комментарий от grey_wolf 02.05.17 16:04:46 MSK
Подпаяйся к uart и вкатай openwrt/lede.
Тебе не надо разбирать прошивку, ты в этой говнине ковыряться не хочешь.
Dark_SavanT ★★★★★
( 02.05.17 16:33:34 MSK )
Ответ на: комментарий от Dark_SavanT 02.05.17 16:33:34 MSK
да не влезет в него openwrt/lede/ddwpt. памяти маловато.
grey_wolf
( 02.05.17 16:57:47 MSK ) автор топика
awesomebuntu
( 02.05.17 17:03:27 MSK )
Ответ на: комментарий от awesomebuntu 02.05.17 17:03:27 MSK
Дизассемблер, тьфу ты.
awesomebuntu
( 02.05.17 17:05:17 MSK )
Ответ на: комментарий от grey_wolf 02.05.17 16:57:47 MSK
10.05 влезал обрезаный.
А вообще выкинь это говно и найди в заначке две тысячи рублей на дешманский асус
Dark_SavanT ★★★★★
( 02.05.17 18:23:00 MSK )
Ответ на: комментарий от grey_wolf 02.05.17 16:04:46 MSK
Так тебе уже всё нужное (для окирпичивания роутера, гы-гы) дали. Вспоминаешь про binwalk, смотришь им на полученный файл, видишь, где начинается блок lzma. Делишь файл на 2 части, первые 10144 байт в одну сторону, остаток — в другую. Первая часть — распаковщик, вторая — данные. Соответственно, её можно
xz -d --single-stream -c < US_N4v1Ra_V9.2.4.16_CN.bin_kernel.part2 >unpacked.image
Внутри уже видны html странички вебморды. В более доступный для редактирования вид это, боюсь, распаковать уже не получится. А после редактирования, пожатия, склеивания с распаковщиком и навешивания uImage заголовка, скорее всего, получится образ-убийца роутеров.
NightSpamer ★
( 04.05.17 09:13:21 MSK )
Последнее исправление: NightSpamer 04.05.17 09:15:36 MSK (всего исправлений: 1)
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Анализ и разбивка составных файлов (прошивки, образы дисков)
Файлы контейнеры (матрёшки)
Многие файлы представляют собой объединения нескольких файлов. К примеру, файлы офисных документов .docx и .odt. Вы можете заменить расширение таких файлов на .zip, открыть любым архиватором и убедиться, что на самом деле это просто контейнеры, содержащие в себе множество файлов. Например, если вы вставили картинку в документ Word, то чтобы извлечь эту картинку, необязательно открывать файл в офисном редакторе — можно поменять расширение, распаковать архив и из него забрать свою картинку обратно. Практически все прошивки (для роутеров, IP камер, телефонов) это контейнеры. ISO образы и образы файловых систем тоже контейнеры. Архивы, как можно догадаться, также содержат в себе сразу несколько файлов.
2 способа объединения файлов
С практической точки зрения, с точки зрения поиска файлов можно выделить 2 способа объединить файлы:
1. Файлы хранятся без изменения, в своём начальном виде.
Пример такого объединения файлов это файловые системы без шифрования и без сжатия. Например, EXT4, NTFS — в них файлы помещены в своём первоначальном виде. Соответственно, образы таких файловых систем также относятся к этой группе. Сюда же можно отнести некоторые прошивки, например, для роутеров и IP камер.
Понятно, что в таких больших файлах (образах) можно найти хранимые файлы. Более того, хранимые файлы можно извлечь и сохранить в виде самостоятельного файла, который будет идентичен исходному.
2. Файлы обрабатываются по определённому алгоритму.
Примеры такого способа объединения файлов это файловые системы с шифрованием или сжатием (например, Squashfs), архивы со сжатием.
Для поиска отдельных файлов по их сигнатурам необходимо выполнить обратное действие, то есть если файл был сжат, необходимо его разархивировать. Если это файловая система со сжатием, то необходимо её смонтировать.
С практической точки зрения это означает, что бесполезно искать файлы по сигнатурам в архивах, пока эти архивы не распакованы (НО: некоторые программы по анализу сырых данных поддерживают работу с архивами!). Бесполезно искать файлы по сигнатурам в файловой системе Squashfs до её монтирования. При этом можно применять поиск по сигнатурам в EXT4 и NTFS и их монтирование не требуется!
Монтирование, например, образа NTFS даст нам следующее: мы сможем получать доступ к файлам этой файловой системы тем способом, каким это предусмотрели разработчики, то есть мы увидим список файлов и сможем получить доступ к любому из них без необходимости искать файлы по сигнатурам. Но при этом мы не сможем получить или даже узнать об уже удалённых файлах.
Без монтирования образа NTFS мы сможем работать с хранящимися на нём файлами напрямую, то есть с одной стороны нам придётся искать файлы по сигнатурам, но с другой стороны мы получим доступ даже к удалённым файлам. Удалённые файлы доступны в результате того, что обычно удаление на HDD заключается в том, что информация о файле просто удаляется из «журнала» файловой системы, но сам файл остаётся там же, где и был (если его впоследствии случайно не перезаписали другим файлом). Что касается с SSD, то там обычно данные всё-таки удаляются.
Ничего не мешает комбинировать эти способы, причём криминалистические инструменты позволяют сделать поиск удалённых данных более эффективным, например, поиск удалённых файлов выполняется только на тех частях диска, которые считаются пустыми.
Как распаковать прошивку камеры
Рассмотрим пример распаковки прошивки камеры Network Surveillance DVR r80x20-pq (эту камеру я использовал в тестах, например, в статье «Аудит безопасности IP камер».
Скачиваем и распаковываем архив. Он называется General_IPC_XM530_R80X20-PQ_WIFIXM711.711.Nat.dss.OnvifS_V5.00.R02.20210818_all.bin, для краткости последующих команд я переименую его в firmware.bin.
Проверим, что это за файл:
file firmware.bin
firmware.bin: Zip archive data, at least v2.0 to extract, compression method=deflate
То есть это Zip архив.
Проверим с помощью Detect It Easy:
diec firmware.bin
Также воспользуемся утилитой Binwalk, которая специально предназначена для анализа прошивок:
binwalk firmware.bin
Поскольку это просто архив, распакуем его:
unzip firmware.bin
Видимо, следующие образы являются составными частями файловой системы:
Поинтересуемся файлом user-x.cramfs.img:
file user-x.cramfs.img
user-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, OS Kernel Image (gzip), 4652992 bytes, Wed Aug 18 07:04:49 2021, Load Address: 0x00300000, Entry Point: 0x00770000, Header CRC: 0xE5365952, Data CRC: 0x274BFB0E
U-Boot — это загрузчик для встроенных плат на базе PowerPC, ARM, MIPS и нескольких других процессоров, который можно установить в загрузочное ПЗУ и использовать для инициализации и тестирования оборудования или для загрузки и запуска кода приложения. В вашем Linux вы можете найти пакеты uboot-tools (Arch Linux и производные) и u-boot-tools (Debian и производные) — это инструменты и утилиты для сборки прошивок и выполнения с ними других действий.
Попробуем смонтировать образ user-x.cramfs.img:
mkdir /tmp/firmware sudo mount user-x.cramfs.img /tmp/firmware
mount: /tmp/firmware: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
Обратимся за помощью к утилите Binwalk, которая умеет находить файлы и файловые системы даже если они находятся не в начале:
binwalk -t user-x.cramfs.img
DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 uImage header, header size: 64 bytes, header CRC: 0xE5365952, created: 2021-08-18 07:04:49, image size: 4652992 bytes, Data Address: 0x300000, Entry Point: 0x770000, data CRC: 0x274BFB0E, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: gzip, image name: "linux" 64 0x40 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 3771362 bytes, 339 inodes, blocksize: 65536 bytes, created: 2021-08-18 07:04:49
Теперь всё стало ясно — данный образ состоит из двух разделов. Первые 64 байта занимает заголовок uImage. А сама файловая система Squashfs идёт начиная с 64 байта.
Мы можем извлечь файловую систему — как это сделать сразу несколькими способами будет показано ниже, — но также по-прежнему можем её просто смонтировать, указав смещение:
sudo mount -o offset=64 user-x.cramfs.img /tmp/firmware
Посмотрим на файлы, размещённые в образе user-x.cramfs.img:
ls -l /tmp/firmware
В этом образе я не нашёл ничего интересного, размонтируем его:
sudo umount /tmp/firmware
Посмотрим, где начинается файловая система в romfs-x.cramfs.img:
binwalk romfs-x.cramfs.img
sudo mount -o offset=64 romfs-x.cramfs.img /tmp/firmware
Здесь можно найти хеш дефолтного пользователя root:
cat /tmp/firmware/etc/passwd
Аналогичным образом, сканируя с помощью Binwalk и монтируя разделы файловой системы, можно искать интересные файлы.
Как вырезать файловую систему из образа
1. Монтировать без извлечения
Как было показано выше, с помощью опции offset можно указать смещение и монтировать файловую систему которая является частью образа и расположена не в самом его начале:
sudo mount -o offset=СМЕЩЕНИЕ_ОБРАЗА /ТОЧКА/МОНТИРОВАНИЯ
Если образ содержит несколько файловых систем, вам может понадобиться указать ещё и опцию sizelimit — размер файловой системы:
sudo mount -o offset=СМЕЩЕНИЕ,sizelimit=РАЗМЕР_ОБРАЗА /ТОЧКА/МОНТИРОВАНИЯ
sudo mount -o offset=64,sizelimit=3771362 romfs-x.cramfs.img /tmp/firmware
2. Извлечение с помощью dd
Найдём разделы в прошивке:
binwalk 'Keenetic-II-V2.06(AAFG.0)C3.bin'
DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 uImage header, header size: 64 bytes, header CRC: 0x8F18AEF5, created: 2017-10-19 13:25:49, image size: 1175311 bytes, Data Address: 0x80020000, Entry Point: 0x80020414, data CRC: 0x87BAAA6D, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "ZyXEL Keenetic II" 64 0x40 LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 3466800 bytes 1376256 0x150000 Squashfs filesystem, little endian, version 3.0, size: 6205991 bytes, 593 inodes, blocksize: 65536 bytes, created: 2017-10-19 13:25:45
Всего имеется три области:
- с 0 по 64 байты — заголовок uImage.
- с 64 начинаются сжатые данные LZMA
- С 1376256 начинается файловая система Squashfs, её размер 6205991 байт, это следует из строки «size: 6205991 bytes».
Для извлечения каждого из этих разделов можно использовать команду вида:
dd if=ВХОД of=ВЫХОД bs=БЛОК count=ЗАПИСАТЬ skip=ПРОПУСТИТЬ
- ВХОД — начальный образ
- ВЫХОД — извлекаемый раздел
- БЛОК — размер блока, больший размер блока ускоряет запись, но последующие значения ЗАПИСАТЬ и ПРОПУСТИТЬ указывают на количество блоков, то есть если размер блока взять за единицу, то будет проще считать
- ЗАПИСАТЬ — сколько блоков записать
- ПРОПУСТИТЬ — сколько блоков от начала файла пропустить
К примеру, из файла Keenetic-II-V2.06(AAFG.0)C3.bin я хочу извлечь первые 64 байт, тогда команда следующая:
dd if='Keenetic-II-V2.06(AAFG.0)C3.bin' of=uImage-header.bin bs=1 count=64 skip=0
Теперь я хочу извлечь второй раздел, начинающийся с 64 байта. Этот раздел заканчивается на байте 1376256, но опция count команды dd указывает сколько байт нужно прочитать (а не границу извлечения данных), поэтому значение count рассчитывается по формуле:
конец области - количество пропущенных байт
В нашем случае это 1376256 — 64 = 1376192, получаем команду:
dd if='Keenetic-II-V2.06(AAFG.0)C3.bin' of=data.lzma bs=1 count=1376192 skip=64
Файл LZMA можно распаковать, например, с помощью 7z:
7z e data.lzma
В принципе команда извлекла данные, хотя и сообщила об ошибке:
7-Zip [64] 17.04 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28 p7zip Version 17.04 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,12 CPUs x64) Scanning the drive for archives: 1 file, 1376192 bytes (1344 KiB) Extracting archive: data.lzma -- Path = data.lzma Type = lzma Method = LZMA:23:lc1:lp2 ERROR: There are some data after the end of the payload data : data Sub items Errors: 1 Archives with Errors: 1 Sub items Errors: 1
Суть ошибки в том, что после конца полезной нагрузки были обнаружены данные. Можно сказать, что это нормально (неизбежно) в данном случае, поскольку мы не знали точный размер блока и указали в качестве его конца байт, где начинается другой раздел. Другой раздел начинается с байта (в шестнадцатеричном виде) 0x150000, поэтому можно предположить, что для паддинга (padding, выравнивания) между разделами просто «набиты» нули. В этом можно убедиться, открыв файл data.lzma в шестнадцатеричном редакторе, например в Bless:
Да, в конце этого файла нули — если точный размер неизвестен, то лучше записать лишнего, чем потерять данные.
Третий блок начинается с 1376256 байта и имеет размер 6205991 об этом нам говорит строка «size: 6205991 bytes». Команда по его извлечению следующая:
dd if='Keenetic-II-V2.06(AAFG.0)C3.bin' of=filesystem.squashfs bs=1 count=6205991 skip=1376256
Но производители прошивки всё равно меня перехитрили использовав Squashfs version 3.0 из 2006 года и я не смог её открыть по техническим причинам:
sudo squashfuse -d filesystem.squashfs /tmp/firmware/ Squashfs version 3.0 detected, only version 4.0 supported.
3. Извлечение с помощью Binwalk
У программы Binwalk имеются следующие опции для извлечения:
-e, --extract Автоматически извлекать известные типы файлов -z, --carve Вырезать данные из файлов, но не запускать утилиты извлечения -D, --dd=ТИП[:РАСШИРЕНИЕ[:КОМАНДА]] Извлекать ТИПЫ сигнатур (регулярное выражение), дать фалу РАСШИРЕНИЕ и выполнить КОМАНДУ
Более подробное их описание вы можете прочитать в карточке программы https://kali.tools/?p=6771. Это кажется удобным — извлекать данные автоматически, но на практике результат будет не совсем тем, который вы ожидаете. Поскольку даже в ручном режиме мы не всегда точно знаем границы разделов, то это же самое относится и к указанным опциям, которые плохо работают с разделами, для которых не указан конкретный размер.
4. Извлечение с помощью dc3dd и dcfldd
У программы dd есть улучшенные версии dc3dd и dcfldd. При желании для извлечения разделов файловой системы из образа диска вы можете использовать их.
Поиск последовательности байтов в бинарном файле
Программы file, Binwalk и Detect It Easy в поиске данных используют сигнатуры. Эти сигнатуры предопределены в их базах данных (так называемые магические файлы).
Если вам нужно выполнить поиск по вашим собственным сигнатурам, то есть по строке бинарных данных, то вы можете использовать Binwalk со следующими опциями:
-R, --raw=СТРОКА Сканировать целевой файл(ы) в поисках указанной последовательности байтов -m, --magic=ФАЙЛ Указать файл для использования в качестве источника сигнатур
Например, поиск шестнадцатеричных байтов 53EF в файле /mnt/disk_d/fs.ext4:
binwalk -R '\x53\xEF' /mnt/disk_d/fs.ext4
Программа sigfind из пакета Sleuth также позволяет искать по сигнатурам, при этом программа позволяет указать отступ от начала блока (НЕ файла). В программе прописаны несколько сигнатур для поиска файловых систем, например:
sigfind -t ext4 /mnt/disk_d/fs.ext4
В следующем примере ищется последовательность байтов 53EF (обратный порядок записи байтов) со смещением 56 от любого блока (если не указать смещение, то будут выведены только блоки, где данная последовательность байтов имеет смещение 0):
sigfind -o 56 -l EF53 /mnt/disk_d/fs.ext4
Заключение
Итак, показанные методы позволяют найти разделы файловых систем даже если они находятся не в начале образа. К примеру, попробуйте найти начало файловых систем в образах fs.ext4.xz, fs.ntfs.xz (из forensics-samples) без перечисленных здесь инструментов и вы лишний раз убедитесь, насколько облегчает анализ прошивок и составных файлов программа Binwalk и другие перечисленные в этой статье.
Связанные статьи:
- Как узнать тип файла без расширения (в Windows и Linux) (84.9%)
- Обратная инженерия сетевого трафика (54%)
- Обратный инжиниринг с использованием Radare2 (Reverse Engineering) (50%)
- Обратный инжиниринг с использованием Radare2 (Reverse Engineering) (часть 2) (50%)
- Анализ трояна Snojan (50%)
- Как защитить загрузчик GRUB паролем (RANDOM — 0.2%)
факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!
Рекомендуется Вам:
4 комментария to Анализ и разбивка составных файлов (прошивки, образы дисков)
U-Boot — это инструменты и утилиты для сборки прошивок и выполнения с ними других действий
Здравствуйте, Алексей. А с чего это uboot стал утилитой для сборки? Насколько мне известно, uboot является загрузчиком. Используется в router’ах, устройствах, которые используют os android и т.д. Принцип загрузки: код в rom > uboot > linux kernel > os android. Даже снимал его лог через uart у планшета. Часть лога: U-Boot 2014.01 (Nov 17 2017 — 19:22:58) DRAM: 512 MiB
efuse type 20020140
adie efuse read 0
wait 2
otp read blk 15 — 16
adie efuse read 15
wait 2
otp read bits 120 ++ 7 0x0000003c
Alexey :
Приветствую! Я говорил о пакете, который в репозитории Arch Linux называется «uboot-tools». В описании сказано «U-Boot bootloader utility tools». Туда включены следующие инструменты: 1. mkimage, который собирает (генерирует) образ для U-Boot. Как сказано в описании mkimage: «Команда mkimage используется для создания образов для использования с загрузчиком U-Boot. Эти образы могут содержать ядро Linux, blob-объект дерева устройств, образ корневой файловой системы, образы прошивки и так далее, как по отдельности, так и вместе». 2. Инструмент mkenvimage — справки нет, но по названию можно догадаться, что генерирует раздел environment. 3. Утилита dumpimage с командами «list image header information», «extract component». На мой взгляд, вполне себе утилиты для сборки и выполнения других действий с прошивками (с загрузчиком U-Boot), но дальше чтения справки этих команд я с ними не работал, поэтому, на самом деле, видимо, я просто не в курсе.
В статье вообще нет упоминания, что речь именно о пакете uboot-tools. Изначально я подумал, что загрузчик, поэтому и написал. Может, стоит уточнить?
Alexey :
Как распаковать .bin файл?
Имеется .bin файл прошивки, из которого я хочу извлечь аудио файлы. пробовал разные программы и ни в одной он не читается.
вот этот самый файл (изначально он в зипе) https://radioaktiv.ru/engine/download.php?id=308
Дополнен 2 года назад
Лучший ответ
винрар вроде умеет
Иван КомаровЗнаток (260) 2 года назад
хз, меня он шлёт на 3 буквы
Иван КомаровЗнаток (260) 2 года назад
другие проги тоже
Остальные ответы
Никак, это бинарный файл, который не является архивом, он не предназначен для работы с ним, он нужен для непосредственной прошивки микросхем
Иван КомаровЗнаток (260) 2 года назад
а в бинарнике могут быть закодировани какие-нибудь файлы по типу аудио?
Иван Комаров, Там может быть что угодно.
Никак. На то он и бинарник.
Иван КомаровЗнаток (260) 2 года назад
#rootМыслитель (8533) 2 года назад
с какого перепуга это бинарник?
Повелитель Скелетов Просветленный (33582) Наверное потому что называется файл прошивки попугая. Нет, его конечно возможно декодировать, но скорей всего найти прогу, которая это делала изначально — вряд ли возможно.
они обычно в freearc запакованы — архиватор так и называется.
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Можно ли разобрать файл уже скомпелированной прошивки типа : firmware-512K RUS.bin, для ЭНДЕР 3
скачал полностью рабочую русскую прошивку для ENDER 3 плата 4.2.2 Вопрос :- можно ли разобрать это bin файл уже скомпилированной прошивки , что б вытащить из него конфиг файл для редактирования его в VS ? или как «залезть» в нее , VS напрямую бин. файл не открывает..
Популярные вопросы
Выбор 3D-принтера в подарок для новичка
Добрый деньХочу подарить девушке проектировщику 3д принтер. Выбор пал на двух претендентов:creality3d ender 3 v3 se и ulti steel 2. С одной стороны хо.
Easy three K9 перестаёт печатать
Доброго времени суток.Прошу не кидать палками если что ) . Новичок в 3D печати. Подарил сыну на ДР Easy three K9. И себе тоже )))