LINUX.ORG.RU

Как вырезать прошивку из mtd ?

 , ,


0

1

Ситуация такая есть mtd блоки слитые с роутера через uart. Есть прошивка к нему но она другой страны. Можно ли вырезать из этих mtd такую же прошивку

MTD - https://mega.nz/#!klcXnAqR!VP7SpOxJXSuJ1YtCc3Jb4Nq_8viT9nogeWEo7uZINbY Прошивка - https://mega.nz/#!U4NkjCRD!9XF9rrwcPiWAVLmjY2l8iUmjyiUhtPM8xqiVQndx5lg

Если можно разжуйте как это сделать

binwalk разобрал твой mtd0.bin. В нём похоже дублируются все разделы системы, и при загрузке как-то происходит выбор нужной половины.

F670F668A_V1.0.10P6T5_UPGRADE_BOOTLDR.bin видимо обрезан, чтобы нулями лишнее пространство файла не забивать. binwalk нашел в нём кусок со Squashfs (rootfs видимо), ядро и загрузчик. По известным смещением с помощью HEX-редактора или dd можно извлечь нужное.

Меня смущает кусок «Certificate in DER format (x509 v3), header length: 4, sequence length: 5396» и «CRC32 polynomial table, little endian»

Возможно, что при загрузке разделы как-то проверяются на целостность и правильность. Как минимум контрольную сумму надо будет пересчитывать самостоятельно при прошивке.

unsquashfs разобрал на файлы mtd9.bin и mtd10.bin. Если я правильно понял то файлы с номерами 1 и далее - это отдельные разделы.

Radjah ★★★★★
()
Последнее исправление: Radjah (всего исправлений: 1)
Ответ на: комментарий от Radjah

По известным смещением

Это ? mtd0: 08000000 00020000 «whole flash» mtd1: 00200000 00020000 «u-boot» mtd2: 00400000 00020000 «parameter tags» mtd3: 00400000 00020000 «kernel0» mtd4: 00400000 00020000 «middleware» mtd5: 00800000 00020000 «usercfg» mtd6: 00400000 00020000 «kernel1» mtd7: 00600000 00020000 «others» mtd8: 00400000 00020000 «wlan» mtd9: 01000000 00020000 «rootfs0» mtd10: 01000000 00020000 «rootfs1»

Vircurus
() автор топика
Ответ на: комментарий от Radjah

Тоесть можно вырезать dd из mtd и склеить в таком порядке?

  • 2097408 0x200100 uImage header, header size: 64 bytes
  • 2097472 0x200140 gzip compressed data, maximum compression, has original file name: «Image»
  • 6291456 0x600000 Squashfs filesystem, little endian
  • 1689 0x699 Certificate in DER format (x509 v3)
  • 161192 0x275A8 CRC32 polynomial table, little endian
Vircurus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.