Любознательный хакер по имени Йерун Домбург (Jeroen Domburg) заинтересовался, как устроен жёсткий диск и можно ли его хакнуть, перезаписать флэш-память, да и вообще, что с ним можно сделать. Результаты экспериментов над диском Western Digital он опубликовал в блоге.
Автор объясняет, что самая большая проблема — найти документацию для контроллера на электронной плате жёсткого диска. Производители не только не публикуют документацию на своих сайтах, они не упоминают даже о самом факте выпуска этих микросхем.
Например, на фотографии показана флэш-память от 64 КБ до 256 КБ: отсюда контроллер HDD загружает программу. Эта микросхема в отдельном виде присутствует не в каждом винчестере. Документацию вы нигде не найдёте.
Домбургу повезло: он наткнулся на форум HDDGuru, где неизвестный инженер описал распиновку для интерфейса JTAG к контроллеру 88i6745. Имея эту информацию, с контроллером можно делать что угодно.
Йерун Домбург немедленно взялся за дело. К контактам JTAG и последовательному порту HDD он подключил плату FT2232H (красная плата на фотографии). Для работы на основном компьютере использовалась программа OpenOCD.
К счастью, в контроллере 88i9146 распиновка оказалась такой же, как в вышеупомянутом 88i6745. Программа OpenOCD распознала трёхъядерный ARM-процессор, где каждое ядро отвечало за свои функции: первое — за физическое чтение/запись с поверхности диска, второе — обработку данных с интерфейса SATA, работу с кэшем, LBA и CHS. Что делает третье ядро, выяснить не удалось.
Методом проб и ошибок Домбург смог осуществить несколько трюков напрямую через контроллер: записать файл с заданным содержанием на жёсткий диск, прочитать и дизассемблировать прошивку контроллера, запустить произвольный код на контроллере с помощью модификации содержимого кэша, внедрить посторонний код в ROM и заменить прошивку (установить буткит).
По словам хакера, в самодельной прошивке можно предусмотреть несколько полезных функций. Например, поставить защиту от клонирования диска. Скажем, если доступ к секторам диска осуществляется в обычном случайном порядке, то прошивка работает нормально, а если начинается клонирование (последовательное считывание секторов), то она может вывести HDD из строя.
Контроллеры HDD мало изучены, любая информация о них на вес золота, так что работа Домбурга достойна продолжения.