Как проверить прошивку приставки на Secure Boot


     ADB         Linux   


Примечания.

  • 1. Ниже по тексту жирно выделены тексты команд, которые необходимо вводить (с клавиатуры или копипастом)
  • 2. В примерах D:\adb - это текущая папка на ПК, в которой находится утилита adb.exe
  • 3. После входа в командную оболочку (adb shell) папки и файлы - в файловой системе приставки
  • 4. Все команды должны быть введены одной строкой и заканчиваться нажатием ENTER (при чтении этой инструкции на телефоне команды в примерах могут отображаться с разрывами строки).
  • 5. Первое знакомство с ADB: Как пользоваться ADB в локальной сети


    1. Проверка загрузочной SD-карты

    1. Записанную загрузочную SD-карту вставить в USB-кардридер и подключить его к USB-порту приставки


    2. Подключиться с ПК к приставке по ADB через локальную сеть (IP-адрес заменить на реальный):
    D:\adb>adb connect 192.168.0.102
    * daemon not running; starting now at tcp:5037
    * daemon started successfully connected to 192.168.0.102:5555


    3. Проверить правильность подключения:
    D:\adb>adb devices
    List of devices attached
    192.168.0.102:5555 device


    4. Перейти в командную оболочку ADB-демона:
    D:\adb>adb shell


    5. Получить права суперпользователя:
    raven:/ $ su


    6. Сделать текущей папку download:
    raven:/ # cd /sdcard/download


    7. Сохранить первые 32 блока (начало карты) в файл с именем usb32.img:
    raven:/sdcard/download# dd if=/dev/block/sda of=usb32.img count=32
    32+0 records in
    32+0 records out
    16384 bytes (16 K) copied, 0.004065 s, 3.8 M/s


    8. Сохранить первые 73728 блока (начало карты) в файл с именем usb73728.img:
    raven:/sdcard/download# dd if=/dev/block/sda of=usb73728.img count=73728
    73728+0 records in
    73728+0 records out
    37748736 bytes (36 M) copied, 0.772753 s, 47 M/s


    9. Проверить наличие файлов в папке download
    raven:/sdcard/download # ls
    usb32.img usb73728.img


    10. Выйти из командной оболочки:
    raven:/sdcard/download # exit
    raven:/ $ exit


    11. Скопировать оба файла в текущую папку ADB на ПК:


    D:\adb>adb pull /sdcard/download/usb32.img
    /sdcard/start/usb32.img: 1 file pulled, 0 skipped. 1.6 MB/s (16384 bytes in 0.010s)


    D:\adb>adb pull /sdcard/download/usb73728.img
    /sdcard/start/usb73728.img: 1 file pulled, 0 skipped. -0.0 MB/s (37748736 bytes in -1787.228s)


    2. Проверка стоковой прошивки, хранящейся во внутренней eMMC-памяти приставки

    ВНИМАНИЕ !!! При вводе на выполнение команд dd для eMMC (в п.7 и п.8) нужно быть предельно аккуратным. Ошибки при вводе могут привести к порче хранимой в eMMC прошивки. Получите кирпич с необходимостью её восстановления.


    1. В USB-порт приставки ничего вставлять не нужно


    2. Выполнить пп.2-6 предыдущего раздела, т.е. войти в командную оболочку ADB и перейти в папку download на приставке.


    7. Сохранить первые 32 блока (начало eMMC) в файл с именем mmc32.img:
    raven:/sdcard/download# dd if=/dev/block/mmcblk0 of=mmc32.img count=32
    32+0 records in
    32+0 records out
    16384 bytes (16 K) copied, 0.004065 s, 3.8 M/s


    8. Сохранить первые 73728 блока (начало eMMC) в файл с именем mmc73728.img:
    raven:/sdcard/download# dd if=/dev/block/mmcblk0 of=mmc73728.img count=73728
    73728+0 records in
    73728+0 records out
    37748736 bytes (36 M) copied, 0.772753 s, 47 M/s


    9. Проверить наличие файлов в папке download
    raven:/sdcard/download # ls
    mmc32.img mmc73728.img


    10. Выйти из командной оболочки:
    raven:/sdcard/download # exit
    raven:/ $ exit


    11. Скопировать оба файла в текущую папку ADB на ПК:


    D:\adb>adb pull /sdcard/download/mmc32.img
    /sdcard/start/mmc32.img: 1 file pulled, 0 skipped. 1.6 MB/s (16384 bytes in 0.010s)


    D:\adb>adb pull /sdcard/download/mmc73728.img
    /sdcard/start/mmc73728.img: 1 file pulled, 0 skipped. -0.0 MB/s (37748736 bytes in -1787.228s)


    3. Как интерпретировать сохраненные файлы

    1. Сохраненные на ПК файлы содержат информацию о неразмеченной области загрузочного носителя (eMMC или SD-карты). Её невозможно (или сложно) получить стандартными системными средствами (в Windows или Linux), которые работают только с реальными физическими разделами, присутствующими в таблице разделов GPT. Поэтому потребовались такие способы их сохранения, описанные в данной инструкции.

    2. Файлы usb32.img и mmc32.img нужно открыть любым HEX-редактором (или вьюером).

    Начиная с адрес 0x200 должна лежать таблица GPT, содержащая записи о физических разделах, которая начинается с заголовка EFI PART




    По адресу 0x2000 должно лежать магическое слово eGON.BT0, которое означает, что образ, хранящийся на данном носителе, является нормальным загрузочным.




    Однако, если по адресу 0x2000 вместо eGON.BT0 лежит заголовок TOC0.GLH, то это означает, что образ, хранящийся на данном носителе, является безопасным загрузочным (Secure Boot).




    ВНИМАНИЕ !!!

    Если такой образ c TOC0 обнаружен на загрузочной SD-карте, то её ни в коем случае нельзя вставлять в приставку и загружаться с такой карточки. Самое правильное - это её немедленно отформатировать (разбивать молотком и развеивать по ветру - необязательно)

    Если же такой образ c TOC0 обнаружен в файле mmc32.img, т.е. это образ из внутренней приставки, то вам крупно не повезло: никакие другие версии нормальных прошивок установить на эту конкретную приставку будет невозможно. Из-за того, что в процессоре однократно и безвозвратно установлен режим Secure Boot. Поэтому, если по какой-либо причине прошивка в приставке испортится, то при отсутствии (а это всегда так) файла с родным образом безопасно загружаемой прошивки вы будете держать в руках красивенький кирпич. Что делать с такой приставкой - решайте сами...

    Примечание. В народе такие прошивки могут называть "заблокированными" или "залоченными" и пр.


    3. Файлы usb73728.img и mmc73728.img содержат вторичный загрузчик U-Boot, а также другую необходимую для его работы информацию. Для анализа корректности этих файлов рекомендуется отправить их автору данной инструкции (т.е. мне) любым способом, например, через ЛС в форуме 4PDA. Естественно, это не относится к пользователям, изучившим имеющуюся на нашем сайте информацию о тонкостях прошивок Android... :-)


    4. Как сохранить резервные копии разделов eMMC

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


    • mmcblk0p1 bootloader_a
    • mmcblk0p3 env_a
    • mmcblk0p5 boot_a
    • mmcblk0p7 vendor_boot_a
    • mmcblk0p9 super
    • mmcblk0p10 misc
    • mmcblk0p11 vbmeta_a
    • mmcblk0p13 vbmeta_system_a
    • mmcblk0p15 vbmeta_vendor_a
    • mmcblk0p17 frp
    • mmcblk0p19 metadata
    • mmcblk0p20 private
    • mmcblk0p21 dtbo_a
    • mmcblk0p23 media_data
    • mmcblk0p25 UDISK

    2. Команды, с помощью которых можно сохранить бекап этих разделов:


  • dd if=/dev/block/mmcblk0 of=start.img count=73728 (неразмеченная область eMMC)

  • dd if=/dev/block/mmcblk0p1 of=bootloader.img

  • dd if=/dev/block/mmcblk0p3 of=env.img

  • dd if=/dev/block/mmcblk0p5 of=boot.img

  • dd if=/dev/block/mmcblk0p7 of=vendor_boot.img

  • dd if=/dev/block/mmcblk0p9 of=super.img

  • dd if=/dev/block/mmcblk0p10 of=misc.img

  • dd if=/dev/block/mmcblk0p11 of=vbmeta.img

  • dd if=/dev/block/mmcblk0p13 of=vbmeta_system.img

  • dd if=/dev/block/mmcblk0p15 of=vbmeta_vendor.img

  • dd if=/dev/block/mmcblk0p17 of=frp.img

  • dd if=/dev/block/mmcblk0p19 of=metadata.img

  • dd if=/dev/block/mmcblk0p20 of=private.img

  • dd if=/dev/block/mmcblk0p21 of=dtbo.img

  • dd if=/dev/block/mmcblk0p23 of=media_data.img

  • dd if=/dev/block/mmcblk0p25 of=data.img

    Примечания.

  • 1. Некоторые из сохраненных файлов могут оказаться пустыми, т.е нулевой длины - это нормально
  • 2. Файлы больших разделов (особенно, раздел super !) будут сохраняться достаточно долго, поэтому наберитесь терпения и ждите завершения копирования.
  • 3. Раздел пользовательских данных (под номером 25) может оказаться о-о-очень большим, поэтому сохранять его в таком виде большого смысла нет. Проще смонтировать и извлечь из него нужные файлы простым копированием в файловом менеджере (подробности - позже).
  • 4. Файл start.img - это повторение файла mmc73728.img, полученного ранее. Т.е. они идентичны по содержимому.