Прошивка внешнего диска. Перепрошивка биос винчестера hdd

Диеты 15.10.2020
Диеты

Как правильно прошить или HDD WD — простая инструкция

Как прошить HDD WD?

HDD не является таким простым устройством, каким кажется. С момента создания, они непрерывно эволюционировали – если раньше это были простейшие устройства, то теперь это весьма сложные девайсы с непростым алгоритмом работы, на который можно, так или иначе, повлиять. В данном руководстве мы рассмотрим методы, благодаря которым можно расширить функционал винчестера. Перед нами стоит задача – настроить накопитель для нестандартных задач, поэтому есть смысл задуматься о перепрошивке.

Так как прошить HDD WD?

С целью получить доступ к ядру, мы можем задействовать режим, когда обмен данными между устройством и основной памятью происходит без участия ЦПУ (Direct Memory Access) – это будет необходимо для того, чтобы перепрошить HDD WD. Местом, где хранятся служебные данные, в данном случае будет кэш жёсткого диска из-за возможности скоростного доступа – прочитанная с HDD информации будет там, поэтому к ней возможно будет получить незамедлительный доступ, а потом скопировать её.

Но метод непростой – не особо комфортно постоянно “коннектиться” с помощью JTAG и что-то искать в кэше. Для упрощения процесса без использования дополнительных устройств существует возможность изменить прошивку в микросхеме флэш-памяти путём пайки и подключения программатора. К счастью, есть более простой способ.

С помощью утилиты fwtol можно редактировать файл прошивки, а потом загрузить во флэш-память. Набор команд можно посмотреть в руководстве, которым сопровождается данная программа.

Меняем прошивку HDD WD?

Вышеописанные методы не являются простыми и требуют произвести множество телодвижений. По этой причине хочется найти более доступный способ перепрошивки жёсткого диска WD, без механического вмешательства. Для HDD от Western Digital имеются программные пакеты для решения подобных задач – они работают из командной строки и с помощью них можно перепрошить контроллер или редактировать ячейки во флэш-памяти. Ещё есть комплект утилит, который называется idle3-tools, с помощью которого модифицируется flash HDD, весь этот функционал доступен теперь и в fwtool, благодаря нему есть возможность переписывать данные на микросхеме флэш- памяти.

Воспользовавшись утилитой fwtool, можно редактировать флэш-память винчестера, а вовремя считав информацию оттуда – есть шанс получить данные учётных записей, если к примеру машина находится под управлением Linux/Unix. Описанный способ можно использовать и в целях защиты от подобного варианта взлома – для этого нужно будет создать не клонируемый раздел HDD c случайным шаблоном доступа секторов. В случае исключительно последовательной работы при попытке доступа данные будут повреждены. Для взаимодействия с накопителем с помощью команд диагностики, необходимо переключиться в режим терминала. Данный режим создан с целью предупреждения неисправностей и их исправления в винчестерах разных производителей, а вот в WD подобного режима нет.

Работа с сервисным разделом HDD

Во всех винчестерах имеются сервисные разделы. Там хранятся служебные программы (например, утилита SMART и другие диагностические утилиты), они занимают далеко не всё пространство, в нашем распоряжении остаётся некоторая часть.

Сервисный раздел – самое надёжное место для хранения конфиденциальной информации, к ней едва ли смогут получить доступ сотрудники правоохранительных органов, так что здесь можно хранить текстовые документы с логинами и паролями от всего. Для получения доступа к этому потайному хранилищу в HDD Western Digital можно использовать утилиту wdidle3.exe или альтернативную свободно распространяемую idle3-tool.exe. Также есть программный пакет HDDHackr для редактирования записей в таких разделах. ПРЕДУПРЕЖДЕНИЕ! Информация, которая присутствует на сервисном разделе, необходима для нормального функционирования жёсткого диска. Уничтожив или повредив важные данные, вы рискуете вывести ваш накопитель из строя, а процесс восстановления получается не из простых – в нём задействуется утилита Ace Laboratory PC3000. Размер сервисного раздела у различных моделей HDD отличается, нужно иметь это в виду.

Жесткий диск, он же винчестер, не такое уж и простое устройство, каким может показаться на первый взгляд. За всю историю своего существования, начиная с 1956 года, накопители претерпели огромное количество изменений. Теперь это не просто пластина и считывающие головки, а целая система со своей логикой и программным обеспечением, а следовательно, со своими фичами и секретами. В этой статье мы попробуем разобраться, что собой представляет современный жесткий диск, а также попытаемся расширить его стандартные возможности для своих хакерских целей.

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

Электроника HDD

Конструкция винчестера в какой-то степени наверняка известна каждому. По сути, это несколько пластин, которые вращаются со скоростью 15 000 об/мин, устройство позиционирования и блок управляющей электроники. Добавим к этому систему самоконтроля S.M.A.R.T. и другие интеллектуальные атрибуты. Короче, без пол-литра не разберешься, тем более технология отдельных элементов составляет коммерческую тайну.

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

INFO

В старых моделях жестких дисков часть функций управляющей электроники брал на себя MFM- или RLL-контроллер компьютера. Но со временем из-за высокой скорости передачи данных потребовалось сократить тракт передачи данных, и разработчики отказались от этой идеи.

Пациент

Итак, перед нами плата типичного жесткого диска Western Digital WD5000AAKX объемом в 500 Гб (рис. 1). Что мы имеем:

  1. Микросхема DRAM. Интереса как такового не представляет, мануал легко можно найти в Сети. Память этих чипов колеблется от 8 до 64 Мб и соответствуют размеру кеша жесткого диска.
  2. Контроллер двигателя шпинделя. Отвечает за управление механикой, регулирует мощность и имеет некоторые аналоговые/цифровые каналы. На чип Smooth L7251 3.1 мануалы отсутствуют, но можно попробовать поискать похожие микросхемы.
  3. Флеш-память. На некоторых винчестерах микросхема отсутствует, но флеш-память бывает встроена в чип контроллера диска. Обычно имеет размер в пределах от 64 до 256 Кб. Используется для хранения программы, от которой загружается контроллер жесткого диска.
  4. И самая любопытная для нас вещь - контроллер жесткого диска. Их производят компании Marvell, ST, LSI и другие. Некоторые компании, производящие винчестеры, делают свои собственные контроллеры, как, например, Samsung и Western Digital.

Контроллер жесткого диска предназначен для управления операциями преобразования и обмена данными от головок чтения/записи к интерфейсу накопителя. К сожалению, компания Marvell не хочет выкладывать документацию на свою продукцию в открытый доступ. Ну что ж, попробуем разобраться сами.

Копнем глубже

Наш зарубежный коллега Джероен «Sprite_tm» Домбург нашел интересный выход из данной ситуации - для исследования контроллера он использовал интерфейс JTAG (от англ. Joint Test Action Group). Этот интерфейс предназначен для тестирования и отладки печатных плат. То есть с помощью JTAG мы можем спокойно подключиться к интересующему нас устройству, поддерживающему стандарт IEEE 1149. В микросхему интегрируется порт тестирования (TAP - Test Access Port), состоящий из четырех или пяти выводов: TDI, TDO, TMS, TCK и, возможно, TRST. Расположение этих выводов для контроллера Marvell нашел некий dex , любезно поделившийся результатами на форуме HDDGURU .

Джероен выяснил, что у контроллеров Western Digital есть ARM-ядро, доступное через JTAG-порт. А также последовательный порт, который обычно не используется, но может быть полезен для наших целей.

Для исследования контроллера жесткого диска использовалась плата FT2232H, которую можно заказать в интернете за 30 евро. Она поддерживает JTAG, связь через последовательный порт, а также SPI. Для работы с ней использовалась программа OpenOCD .

В результате оказалось, что у микросхемы есть целых три ядра. Два Feroceon, которые являются довольно сильными ARM9-подобными ядрами, и Cortex-M3, которое немного слабее. У всех ядер разное предназначение:

  • Feroceon 1 обрабатывает физические чтение/запись на жесткий диск;
  • Feroceon 2 -обрабатывает SATA-интерфейс, кеш и преобразует LBA в CHS;
  • Cortex-M3 - предназначение неизвестно. Можно просто остановить его, но жесткий диск будет продолжать работать.

Добро пожаловать, или Посторонним вход воспрещен

Так как мы ставили перед собой цель использовать жесткий диск для своих коварных целей, то самое время подумать о модернизации его прошивки. Самый простой и, вероятно, сложный в обнаружении способ - изменять данные на лету. Чтобы сделать это, нужно найти подходящее ядро - ядро, которое имеет доступ к данным, путешествующим между диском и SATA-кабелем.

Для доступа к ядру можно использовать режим DMA (Direct Memory Access). Это такой режим, когда обмен данных происходит непосредственно с головки считывания в память, без активного участия процессора. То же самое относится и к SATA-порту: процессору нужно только указать, где данные, и логика DMA позаботится о чтении информации непосредственно из памяти.

Источником информации в этом случае послужит кеш-память винчестера из-за ее хорошего расположения: данные, считанные с диска, будут в кеше, так что их можно будет сразу оттуда скопировать.

Способ довольно сложный - неудобно каждый раз подключаться через JTAG и ковыряться в кеше во время работы жесткого диска. Вместо этого для сохранения доступа без подключения дополнительной платы можно перепрошить микросхему флеш-памяти, выпаяв и подключив к программатору.

Однако было бы сложно модернизировать код из-за неизвестного алгоритма сжатия, вместо этого можно просто изменить адрес выполнения и добавить специальный блок, который будет прочитан раньше остальных. Это делает положение дел немного проще.

В результате своего исследования Джероен создал инструмент fwtool, который может сбрасывать различные блоки во флеше и переводить код в текстовый файл. Затем можно изменить, удалить или добавить блок и вновь собрать все в одном файле прошивки, который потом спокойно загрузить во флеш.

Меняем прошивку

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

У компании Western Digital есть специальные программные утилиты для работы с жестким диском - это инструменты, работающие под DOS, которые могут загрузить новую прошивку контроллера, микросхемы флеш-памяти или сервисного раздела. Инструменты используют так называемые Vendor Specific Commands (VSC), впрочем, об этом чуть позже.

Также есть набор инструментов под названием idle3-tools , которые можно взять на вооружение для модификации прошивки жесткого диска. Он также использует VSC, применяя Linux SCSI PassThrough IOCTLs. Джероен взял этот код, изменил его и интегрировал в fwtool. После этой модификации fwtool научился читать и писать на микросхему флеш-памяти.

Теперь если хакер каким-то образом сможет воспользоваться fwtool на удаленной машине, то получит возможность сбросить флеш-память диска, изменить ее и «зашить» обратно. Правда, в конце концов владелец узнает о взломе и, вероятно, переустановит систему, но злоумышленник может внедрить что-нибудь, что проявит себя и после переустановки. Например, подождать, пока машина зачитывает из файла /etc/shadow/ , где хранятся все пароли в системах UNIX/Linux, и изменить содержимое. После чего можно будет просто войти под своим паролем.

Кстати говоря, описанная методика может служить не только для подпольных экспериментов, но и для целей защиты. Например, можно создать неклонируемый жесткий диск, который будет работать нормально, если шаблон доступа секторов, как обычно, окажется случайным. Если же винчестер будет доступен только последовательно, то данные будут испорчены, что сделает клон отличным от оригинала.

INFO

Терминальный режим жесткого диска

При работе в терминальном режиме пользователь может взаимодействовать с жестким диском посредством диагностических команд. Этот метод применяется для диагностики и ремонта накопителей Seagate и Toshiba, в Western Digital такая возможность отсутствует из-за сложности подключения. Терминальный режим фактически предоставляет полный root - управление механикой и логикой устройства. С его помощью можно также обновить или перезагрузить прошивку винчестера. Список команд для большинства накопителей можно посмотреть в интернете. А на плате жесткого диска имеется специальный разъем для подключения через последовательный порт.


Для доступа в терминальный режим понадобится устройство-адаптер, необходимое для преобразования уровней сигналов RS-232 в уровни TTL (такие адаптеры имеются в продаже, но можно собрать и самому - все необходимые схемы находятся в свободном доступе, а в качестве основы можно взять некоторые модели Arduino). Мы же возьмем готовый чип FTDI, который преобразует USB в последовательный интерфейс для микроконтроллера Atmega. Нужно соединить GND и RESET, а для подключения использовать контакты RX и TX.


Для работы с COM-портом используем любую понравившуюся программу - например, PuTTY или Hiperterminal. Выбираем тип подключения, вводим номер COM-порта и другие настройки:

Speed: 9600 Data Bits: 8 Stop Bits: 1 Parity: None Flow Control: None

Для проверки работоспособности схемы нужно замкнуть RX и TX между собой. В результате все набираемые символы отобразятся в двойном количестве. Это происходит из-за того, что введенные данные будут передаваться по линии TX, а затем они же вернутся по линии RX. Делается это так: отключив SATA-кабель, соединяем выход TX диска с входом RX адаптера, и наоборот - RX адаптера с TX диска. Подключаем питание. После нажатия клавиш , получаем приглашение Т> (или F> для неисправных HDD) и вводим команды. Для получения списка команд вводим /C , а затем Q.

Из-за большого количества команд инженеры Seagate разделили их структуру на уровни. Такие команды, как чтение, запись, поиск, лог ошибок, доступны сразу на нескольких различных уровнях. Чтобы переключить жесткий диск для работы на другом уровне, надо воспользоваться командой /x .

Уровень Т - сертификационные испытания. Уровень 1 - команды управления памятью. Уровень 2 - команды настройки механики привода. Уровень 3 - поисковые команды. Уровень 4 - команды слежения серводвигателя. Уровень 5 - используется только в заводских условиях. Уровень 6 - адаптивные команды управления. Уровень 8 - специальные команды настройки записи. Уровень 9 - команды режима системы контроля дефектов.

Кроме этих девяти уровней, есть еще два дополнительных набора команд: сетевые и общие. Основной целью сетевых команд является отображение изменения текущего состояния системы. Общие команды используются для доступа к регистрам, буферной памяти и данным.

Вообще, терминальный режим предоставляет много интересных возможностей. Например, команда низкоуровневого форматирования может не только снести данные подчистую без возможности восстановления, также, если во время форматирования кто-нибудь отключит питание, винчестер сможет сам «доформатироваться» при первом же его включении. В общем, это тема, достойная отдельной статьи. Мы же движемся дальше.

Запись информации в сервисные разделы HDD

В любом жестком диске присутствуют сервисные разделы. Они предназначены для хранения служебных программ винчестера, таких как S.M.A.R.T., модули раннего обнаружения ошибок, модули самодиагностики и так далее. К счастью, все эти данные не занимают выделенное место полностью, а значит, при правильном подходе мы можем использовать это бонусное пространство. Сервисные разделы не следует путать с DCO или HPA, которые могут быть легко обнаружены и доступны через стандартные ATA-команды.

В отличие от остальных методов скрытия информации запись в сервисный раздел не оставляет за собой никаких следов и незаметна для специальных программ поиска, которыми пользуются правоохранительные органы. Одним словом, это место идеально подойдет для хранения текстовых файлов с адресами, паролями, явками и прочего.

Для доступа к информации из сервисных разделов не подойдут стандартные ATA-команды, вместо этого для записи и чтения используются специальные команды VSC (Vendor Specific Commands). Как правило, производители держат в секрете эти команды, но порой выпускают утилиты для работы с сервисными разделами - например, программа wdidle3.exe от компании Western Digital и ее опенсорсный аналог idle3-tools. Еще один пример для WD - программа HDDHackr, меняющая записи в системных разделах HD.

WARNING

Данные в сервисных разделах очень важны для правильной работы винчестера. Повреждение записанной информации ведет к потере работоспособности диска. Восстановить ее будет не так уж и просто - для перезаписи данных в сервисных разделах понадобятся специализированные программы (например, Ace Laboratory PC3000).

Объем сервисного раздела зависит от модели винчестера. Например, в диске WD2500KS-00MJB0 семейства Hawk объемом 250 Гб (прошивка 02AEC) в сервисный раздел записывается две копии файлов, около 6 Мб каждая. Размер зоны на каждой поверхности составляет около 23 Mб (64 трека по 720 секторов на каждом). Поскольку этот диск имеет шесть поверхностей (головки от 0 до 5), модули сервисных разделов располагаются на месте, сопоставленном с головками 0 и 1, а место, закрепленное за головками со 2 по 5, зарезервировано, но не используется. Таким образом, зарезервированный раздел занимает около 141 Мб, из которых 12 Мб находится в использовании.

Для сравнения: модель WD10EACS-00ZJB0, емкостью в терабайт и с восемью поверхностями, имеет зарезервированное пространство 450 Мб, из которых занято 52 Мб. Ариэль Беркман (Ariel Berkman) из компании Recover Information Technologies LTD написал статью о работе с сервисными отделами HDD, а также выложил PoC-код для записи 94 Мб информации в сервисный отдел диска Western Digital 250GB Hawk. Делается это следующим образом:

  • Узнаем свой SATA IO адрес, используя lspci -v .
  • Для компиляции используем команду gcc -Wall -O -g -o SA-cover-poc SA-cover-poc.c .
  • Создаем рандомный файл (94 Мб в размере) и вычисляем его MD5-хеш.
  • Записываем файл в сервисный раздел.
  • Очищаем винчестер с помощью команды dd-ing /dev/zero , которую следует распространить на весь жесткий диск (или на отдельную часть, предварительно заблокировав доступ к остальному). Достаточно один раз прогнать этот код, чтобы уничтожить данные безвозвратно.
  • Читаем содержимое сервисного раздела, вычисляем его хеш и убеждаемся в целостности данных. root@Shafan1:~/SA# dd if=/dev/urandom count=184320 > random-file ; md5sum random-file root@Shafan1:~/SA# ./SA-cover-poc -p 0x0170 -w ./random-file root@Shafan1:~# dd if=/dev/zero of=/dev/sdb bs=1M root@Shafan1:~/SA# ./SA-cover-poc -p 0x0170 -r after-dding-dev-zero root@Shafan1:~/SA# md5sum after-dding-dev-zero

Программы для восстановления HDD

При низкоуровневых экспериментах возможно столкнуться с такой неприятностью, как поломка винчестера. Не стоит сразу прибегать к драконовским мерам и форматировать диск, можно попробовать восстановить его работоспособность с помощью некоторых программ.

  1. TestDisk - самая простая и эффективная программа для восстановления HDD. Предназначена для поиска и реконструкции потерянных разделов, загрузочного сектора, удаленных файлов; исправляет таблицу разделов. Работает с большим количеством файловых систем. Работает в консольном режиме, чем достигается высокая скорость.
  2. Acronis Disk Director - целый программный пакет, в который включено немалое количество инструментов для работы с HDD. Содержит в себе утилиту Acronis Recovery Expert, которая служит для реконструкции файлов и разделов. В отличие от предыдущей программы имеет графический интерфейс, но работает с меньшим количеством файловых систем.
  3. Paragon Partition Manager - бесплатная программа от отечественных разработчиков, умеет почти все то же самое, что и Acronis, но ужасно медленная.

Заключение

Однако настало время закругляться. В этой статье я попытался показать неизведанные уголки и возможности жесткого диска. Не углубляясь в код, мы рассмотрели способ слива информации с накопителя. Если даже слегка приподнять этот занавес, открывается огромное поле для полета фантазии. Можно, например, перепрошить контроллер, чтобы скрыть от посторонних глаз особо важный раздел. Или портить данные при попытке клонировать жесткий диск, обезопасив себя таким образом от криминалистических утилит. Одним словом, вариантов много, так что каким образом использовать жесткий диск - выбор за тобой.

Сегодня мы рассмотрим:

Не многие знают этого, однако обычные жесткие диски на 2.5» можно переделать под работу с консолью Xbox 360. Конечно, этот процесс имеет большую кучу нюансов и требует особой внимательности от человека, который этим решил заняться. Однако мы вас уверяем, что взяв на вооружение этот материал, вы со 100% шансом сможете прошить жесткий диск для работы с Xbox 360. Приступим!

Перед тем, как начать

Первым делом, нужно правильно выбрать жесткий диск, так как не все HDD подходят для работы с приставкой Xbox 360.

Во-первых, это обязательно должен быть один из этих носителей марки WD:

С жесткими дисками других разработчиков проделывать этот трюк мы не рекомендуем, так как вы просто можете испортить HDD.

Во-вторых, используйте жесткий диск с объемом памяти до 320 Гб. Эта цифра является ограничением прошивки консоли. Конечно, можете использовать накопитель большого объема, но прошить его на 320 Гб. Вот только это будет не целесообразно в финансовом плане: зачем покупать больше, если будете использовать меньше?

В-третьих, в качестве дополнительных инструментов вам понадобятся: заархивированная прошивка, компьютер с разъемами SATA и флешка.

Шаг 1. Подготовительный этап


Собственно, в конце у вас должен получиться такой набор файлов на флешке:

Шаг 2. Приступаем к прошивке жесткого диска

Шаг 3. Работаем с Xbox 360

Собственно, прошивка жесткого диска выполнена и при правильном проведении выше описанных действий вы можете спокойно пользоваться этим HDD на своем «боксе».

Готово. Прошивка жесткого диска выполнена, а консоль работает. Мы сделали наше дело и теперь можем пользоваться новеньким HDD в Xbox360.

Artem Makarov aka Robin

11.01.2013

Довольно распространенная неисправность современных жестких дисков WD (Western Digital) с которой приходится сталкиваться инженеру по ремонту HDD в своей практике это проблема со служебной информацией вышедшего из строя hdd. По другому говорят - сбой микропрограммы жесткого диска, слетела прошивка на WD, нужно перепрошить жесткий диск и т.п. Суть у этого явления одна - один или несколько модулей, критичных для корректной инициализации винчестера не могут быть прочитаны, в результате чего накопитель не в состоянии корректно выполнить стартовую инициализацию.

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

Жесткий диск WD нуждающийся в коррекции микрокода

На восстановление принесли жесткий диск WD10EADS-00M2B0 относящийся к семейству DragFly2, который при старте раскручивает двигатель, распарковывает головки, на слух рекалибруется, выдает в регистрах состояния сочетание DRDY и DRSC в среде специалистов по восстановлению данных и ремонту жетских дисков именуемое "готовность" но на запрос Get Drive ID отдает пустой паспорт.

Часто такое поведение накопителя WD вызвано нечитаемостью модулей таблиц SMART или пользовательского дефект-листа (G-List). И это в принципе легко объяснимо, ведь именно эти модули микрокода жесткого диска чаще всего подвергаются модификации самим накопителем в процессе его работы. Но в данной ситуации все оказалось необычнее.

Попытка подать команду Get DIR из kernel или safe mode к успеху не приводила - диск выдавал ошибку. При том, что головы чтения\записи были исправны и поверхность по ABA читалась без ошибок. Dir или таблица модулей является ключевым модулем в микропрограмме HDD Western Digital, если диск не читает по той или иной причине таблицу модулей, то он не в состоянии вычитать с service area ничего более.

Углубленный анализ ситуации выявил достаточно интересную поломку, которая на моей практике крайне редко встречается у дисков WD - нарушение контрольной суммы модуля Dir при том, что сам модуль читается без ошибок. Для того чтобы исправить проблему (или, как говорят в простонародье, прошить жесткий диск WD) в такой ситуации требуется прогрузить в ОЗУ платы электроники основной оверлей (id11), после чего считать оригинальный модуль dir, пересчитать контрольную сумму и записать обе копии исправленного модуля на диск назад. После рестарта по питанию диск заработал в штатном режиме и всю необходимую пользователю информацию удалось скопировать в полном объеме.



Рекомендуем почитать

Наверх