Мини-проект: обратный инжиниринг прошивки Initio INIC-1610 (8051) из SPI-флеш (SST25VF010A, 128 КБ) Цель: выяснить, как прошивка работает с «хвостом» HDD

visibility4
schedule1 час назад
sellassembler, reverse engineering, реверс инженирия
categoryПрограммирование и разработка

Бюджет не указан / по договорённости

descriptionОписание

Цель: выяснить, как прошивка работает с «хвостом» HDD (последние десятки секторов), и используется ли этот хвост как: – токен/анти-swap, – либо как контейнер ключа (eDEK) / параметров шифрования, – либо вообще как нечто третье. Входные данные:​ бинарный дамп U4.bin (SST25VF010A, 128 КБ); описание железа (модель 57Y4400, USB диск на INIC-1610 + PIC16F883); экспериментальные наблюдения: хвост 32 КБ с «магическими байтами» 25 C9 9C ...; при смене PIN / admin PIN на новом устройстве содержимое хвоста не меняется (бит-в-бит одинаковые дампы); иногда изменение байтов в хвосте через SATA приводит к появлению или пропаже LUN. Задачи:​ Базовый реверс прошивки: настроить в Ghidra/IDA 8051-проект, указать правильную карту памяти (CODE/XDATA/IDATA, внешние регистры); выявить стартовую точку (reset vector, boot-код); найти обработчики USB/SATA/ATA, таблицы команд. Поиск логики чтения хвоста HDD: найти использование ATA команд 0xEC, 0xC8, 0x25; отследить где прошивка получает MaxLBA (результат IDENTIFY DEVICE); найти арифметику вида LBA_tail = MaxLBA - const (например, 0x3F сектора, 32 КБ и т.п.); найти код, который инициирует чтение именно этого диапазона. Анализ обработки буфера хвоста: определить адрес в XDATA / внутренней RAM, куда читается хвост; проследить дальнейший data-flow: цикл по буферу с подсчётом суммы/CRC/хеша и последующим сравнением с константой или регистром; либо цикл копирования байтов в фиксированный диапазон XDATA (предполагаемые MMIO-регистры криптоблока, например 0xB000–0xBFFF). Поиск связки с AES / криптологикой INIC: найти функции, настраивающие шифрование (режим, ключ, IV); выяснить, откуда берутся байты ключа (из хвоста или от внешнего МК по какому-то интерфейсу); зафиксировать адреса регистров, куда пишется ключ/вектор. Отчёт / выводы: текстовое описание найденных функций (адреса, назначение, псевдокод); схема: «ATA READ → буфер → … → (CRC check / MMIO write)»; однозначный ответ: используются ли данные хвоста как ключ/IV, или только как проверка/токен; если есть, отметить любые проверки, которые при несоответствии приводят к отсутствию LUN / блокировке диска. Что НЕ требуется:​ не нужно писать эксплойты, ломать защиту, подбирать PIN и т.д.; задача — анализ логики прошивки, а не фактический взлом устройства.