Команды контроллера жесткого диска
Заключение
Однако настало время закругляться. В этой статье я попытался показать неизведанные уголки и возможности жесткого диска. Не углубляясь в код, мы рассмотрели способ слива информации с накопителя. Если даже слегка приподнять этот занавес, открывается огромное поле для полета фантазии. Можно, например, перепрошить контроллер, чтобы скрыть от посторонних глаз особо важный раздел. Или портить данные при попытке клонировать жесткий диск, обезопасив себя таким образом от криминалистических утилит. Одним словом, вариантов много, так что каким образом использовать жесткий диск — выбор за тобой.
Копнем глубже
Наш зарубежный коллега Джероен «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, который может сбрасывать различные блоки во флеше и переводить код в текстовый файл. Затем можно изменить, удалить или добавить блок и вновь собрать все в одном файле прошивки, который потом спокойно загрузить во флеш.
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 , которую следует распространить на весь жесткий диск (или на отдельную часть, предварительно заблокировав доступ к остальному). Достаточно один раз прогнать этот код, чтобы уничтожить данные безвозвратно.
- Читаем содержимое сервисного раздела, вычисляем его хеш и убеждаемся в целостности данных.
Автор предупреждает, что его код может привести к потере данных и выходу из строя жесткого диска, так что использовать этот метод можно только на свой страх и риск.
Команды контроллеров жестких дисков предназначенные для поддержки технологий S . M . A . R . T .
У современных контроллеров жестких дисков имеются команды предназначенные для поддержки технологий S . M . A . R . T . Для непакетных устройств имеется команда SMART (пакетные используют для этих целей собственный протокол), подкоманды которой задаются через регистр свойств FR . Перед подачей команд в регистры CL и СН заносятся константы: CL =4 Fh , CH = C 2 h . Из подкоманд SMART стандартизованы следующие:
SMART Read Data ( FR = D 0 h ) - чтение блока данных SMART . Блок данных (512 байт) имеет стандартную структуру, в нем содержатся следующие сведения:
- состояние мониторинга off - line : запускался ли, завершался ли успешно, прерывался ли и почему;
- состояние самотестирования (чем кончился предыдущий тест, тестирование выполняется в данный момент);
- время до завершения тестирования off - line ;
- возможности тестирования off - line , поддержка журнала регистрации ошибок;
- рекомендуемое время, через которое имеет смысл запрашивать результат после запуска коротких и расширенных тестов;
- информация, специфичная для производителя.
SMART Enable / Disable Attribute Autosave ( FR = D 2 h ) - управление автосохранением атрибутов : SC =00 h - запрет, SC = F 1 h - разрешение автосохранения. Подкоманда необязательная. Автосохранение в энергонезависимую память выполняется по наступлению какого-то события (зависит от разработчика).
SMART Save Attribute Values ( FR = D 3 h ) - сохранение значений атрибутов в энергонезависимой памяти устройства.
SMART Execute Off-Line Immediate (FR=D4h) - немедленное выполнение мониторинга off-line в режиме off-line или captive. В режиме off - line устройство, получив команду, сразу выполняет действия, обычные при завершении команд (снять флаг занятости и т. п.). В режиме captive команда выполняется как обычная, то есть устройство устанавливает флаг занятости на время ее выполнения; по окончании в регистрах сообщается результат и снимается флаг занятости. Функции задаются в регистре SN :
0 - выполнение программы SMART off - line в режиме off - line ]
1 - выполнение короткого самотестирования SMART в режиме off - line ;
2 - выполнение расширенного самотестирования SMART в режиме off - line ;
127 - прекращение самотестирования SMART ;
1 - выполнение короткого самотестирования SMART в режиме off - line ;
129 - выполнение короткого самотестирования SMART в режиме captive ;
130 - выполнение расширенного самотестирования SMART в режиме captive .
Для подкоманд, определяющих режим captive , в случае ошибок после их выполнения регистры CL и С H позволяют уточнить ошибку: если CL =4 F , CH = C 2 h t то не прошло самотестирование, если CL =4 Fh , CH =2 Ch , то ошибка иная (неподдерживаемые функции, ошибка задания параметров и т, п.).
SMART Read Log ( FR = D 5 h ) - чтение журнала ошибок (5+). В регистре SC указывается число передаваемых секторов, в регистре SN - адрес журнала. Журналов может быть несколько, имеется и каталог журналов. В спецификации задана структура каталога и некоторых журналов.
SMART Disable Operations ( FR = D 9 h ) - запрет команд и функций SMART , все команды SMART , кроме Smart Enable Operations , будут отвергаться. Состояние (разрешены или нет функции SMART ) сохраняется и после последующих включений питания.
SMART Return Status ( FR = DAh ) - опрос результатов мониторинга . Если какой-либо порог перейден, регистры С H и CL будут иметь значения C 2 h и 4 Fh соответственно, если все в порядке - 2 Ch и F 4 h .
Жесткий диск, он же винчестер, не такое уж и простое устройство, каким может показаться на первый взгляд. За всю историю своего существования, начиная с 1956 года, накопители претерпели огромное количество изменений. Теперь это не просто пластина и считывающие головки, а целая система со своей логикой и программным обеспечением, а следовательно, со своими фичами и секретами. В этой статье мы попробуем разобраться, что собой представляет современный жесткий диск, а также попытаемся расширить его стандартные возможности для своих хакерских целей.
Пациент
Итак, перед нами плата типичного жесткого диска Western Digital WD5000AAKX объемом в 500 Гб (рис. 1). Что мы имеем:
- Микросхема DRAM. Интереса как такового не представляет, мануал легко можно найти в Сети. Память этих чипов колеблется от 8 до 64 Мб и соответствуют размеру кеша жесткого диска.
- Контроллер двигателя шпинделя. Отвечает за управление механикой, регулирует мощность и имеет некоторые аналоговые/цифровые каналы. На чип Smooth L7251 3.1 мануалы отсутствуют, но можно попробовать поискать похожие микросхемы.
- Флеш-память. На некоторых винчестерах микросхема отсутствует, но флеш-память бывает встроена в чип контроллера диска. Обычно имеет размер в пределах от 64 до 256 Кб. Используется для хранения программы, от которой загружается контроллер жесткого диска.
- И самая любопытная для нас вещь — контроллер жесткого диска. Их производят компании Marvell, ST, LSI и другие. Некоторые компании, производящие винчестеры, делают свои собственные контроллеры, как, например, Samsung и Western Digital.
Контроллер жесткого диска предназначен для управления операциями преобразования и обмена данными от головок чтения/записи к интерфейсу накопителя. К сожалению, компания Marvell не хочет выкладывать документацию на свою продукцию в открытый доступ. Ну что ж, попробуем разобраться сами.
Электроника HDD
Конструкция винчестера в какой-то степени наверняка известна каждому. По сути, это несколько пластин, которые вращаются со скоростью 15 000 об/мин, устройство позиционирования и блок управляющей электроники. Добавим к этому систему самоконтроля S.M.A.R.T. и другие интеллектуальные атрибуты. Короче, без пол-литра не разберешься, тем более технология отдельных элементов составляет коммерческую тайну.
Высокой точности позиционирования, плотности записи и прочим тонкостям современных HDD можно посвятить не один десяток статей, но мы, не углубляясь в механику диска и физику процессов, рассмотрим наиболее интересную для нас часть — электронику.
Рис. 1. Плата жесткого диска
Другие статьи в выпуске:
В старых моделях жестких дисков часть функций управляющей электроники брал на себя MFM- или RLL-контроллер компьютера. Но со временем из-за высокой скорости передачи данных потребовалось сократить тракт передачи данных, и разработчики отказались от этой идеи.
Програмный ремонт жёстких дисков HDD (Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung /IBM /Hitachi /HGST /Western Digital)
Терминальный режим жесткого диска
При работе в терминальном режиме пользователь может взаимодействовать с жестким диском посредством диагностических команд. Этот метод применяется для диагностики и ремонта накопителей Seagate и Toshiba, в Western Digital такая возможность отсутствует из-за сложности подключения. Терминальный режим фактически предоставляет полный root — управление механикой и логикой устройства. С его помощью можно также обновить или перезагрузить прошивку винчестера. Список команд для большинства накопителей можно посмотреть в интернете. А на плате жесткого диска имеется специальный разъем для подключения через последовательный порт.
Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше
Для доступа в терминальный режим понадобится устройство-адаптер, необходимое для преобразования уровней сигналов RS-232 в уровни TTL (такие адаптеры имеются в продаже, но можно собрать и самому — все необходимые схемы находятся в свободном доступе, а в качестве основы можно взять некоторые модели Arduino). Мы же возьмем готовый чип FTDI, который преобразует USB в последовательный интерфейс для микроконтроллера Atmega. Нужно соединить GND и RESET, а для подключения использовать контакты RX и TX.
Рис. 3. Arduino Nano в качестве адаптера
Для работы с COM-портом используем любую понравившуюся программу — например, PuTTY или Hiperterminal. Выбираем тип подключения, вводим номер COM-порта и другие настройки:
Рис. 4. Окно настроек PuTTY
Для проверки работоспособности схемы нужно замкнуть RX и TX между собой. В результате все набираемые символы отобразятся в двойном количестве. Это происходит из-за того, что введенные данные будут передаваться по линии TX, а затем они же вернутся по линии RX. Делается это так: отключив SATA-кабель, соединяем выход TX диска с входом RX адаптера, и наоборот — RX адаптера с TX диска. Подключаем питание. После нажатия клавиш , получаем приглашение Т> (или F> для неисправных HDD) и вводим команды. Для получения списка команд вводим /C , а затем Q.
Из-за большого количества команд инженеры Seagate разделили их структуру на уровни. Такие команды, как чтение, запись, поиск, лог ошибок, доступны сразу на нескольких различных уровнях. Чтобы переключить жесткий диск для работы на другом уровне, надо воспользоваться командой /x .
Рис. 5. Обнуление S.M.A.R.T.
Кроме этих девяти уровней, есть еще два дополнительных набора команд: сетевые и общие. Основной целью сетевых команд является отображение изменения текущего состояния системы. Общие команды используются для доступа к регистрам, буферной памяти и данным.
Вообще, терминальный режим предоставляет много интересных возможностей. Например, команда низкоуровневого форматирования может не только снести данные подчистую без возможности восстановления, также, если во время форматирования кто-нибудь отключит питание, винчестер сможет сам «доформатироваться» при первом же его включении. В общем, это тема, достойная отдельной статьи. Мы же движемся дальше.
Команды контроллеров жестких дисков для поддержки технологий S.M.A.R.T.
По технологии S.M.A.R.T осуществляют контроль следующих параметров: время разгона до номинальной скорости, время позиционирования головок, процент ошибок операций позиционирования, «высота полета» головок, производительность обмена с учетом числа повторов, количество использованных резервных секторов и т. п. Слежение может осуществляться в рабочем режиме on-line (одновременно с выполнением команд хоста при возможном некотором замедлении). Слежение в режиме off-line выполняется устройством в паузе между обычными командами без снижения производительности. Если во время выполнения этой процедуры придет внешняя команда, то мониторинг прервется на время исполнения команды (начало исполнения команды может задержаться на время до двух секунд). Значения атрибутов, за которыми ведется наблюдение, сохраняются в служебной области носителя.
Для непакетных устройств имеется команда SMART (пакетные используют для этих целей собственный протокол), подкоманды которой задаются через регистр свойств FR. Перед подачей команд в регистры CL и СН заносятся константы: CL=4Fh, CH=C2h. Из подкоманд SMART стандартизованы следующие:
SMART Read Data (FR=D0h) - чтение блока данных SMART. Блок данных (512 байт) имеет стандартную структуру, в нем содержатся следующие сведения:
- состояние мониторинга off-line: запускался ли, завершался ли успешно, прерывался ли и почему;
- состояние самотестирования (чем кончился предыдущий тест, тестирование выполняется в данный момент);
- время до завершения тестирования off-line;
- возможности тестирования off-line, поддержка журнала регистрации ошибок;
- рекомендуемое время, через которое имеет смысл запрашивать результат после запуска коротких и расширенных тестов;
- информация, специфичная для производителя.
SMART Enable/Disable Attribute Autosave (FR=D2h) - управление автосохранением атрибутов: SC=00h - запрет, SC=F1h - разрешение автосохранения. Подкоманда необязательная. Автосохранение в энергонезависимую память выполняется по наступлению какого-то события (зависит от разработчика).
SMART Save Attribute Values (FR=D3h) - сохранение значений атрибутов в энергонезависимой памяти устройства.
SMART Execute Off-Line Immediate (FR=D4h) - немедленное выполнение мониторинга off-line в режиме off-line или captive. В режиме off-line устройство, получив команду, сразу выполняет действия, обычные при завершении команд (снять флаг занятости и т. п.). В режиме captive команда выполняется как обычная, то есть устройство устанавливает флаг занятости на время ее выполнения; по окончании в регистрах сообщается результат и снимается флаг занятости. Функции задаются в регистре SN:
0 - выполнение программы SMART off-line в режиме off-line;
1 - выполнение короткого самотестирования SMART в режиме off-line;
2 - выполнение расширенного самотестирования SMART в режиме off-line;
127 - прекращение самотестирования SMART;
1 - выполнение короткого самотестирования SMART в режиме off-line;
129 - выполнение короткого самотестирования SMART в режиме captive;
130 - выполнение расширенного самотестирования SMART в режиме captive.
Для подкоманд, определяющих режим captive, в случае ошибок после их выполнения регистры CL и СH позволяют уточнить ошибку: если CL=4F, CH=C2ht то не прошло самотестирование, если CL=4Fh, CH=2Ch, то ошибка иная (неподдерживаемые функции, ошибка задания параметров и т, п.).
SMART Read Log (FR=D5h) - чтение журнала ошибок (5+). В регистре SC указывается число передаваемых секторов, в регистре SN - адрес журнала. Журналов может быть несколько, имеется и каталог журналов. В спецификации задана структура каталога и некоторых журналов.
SMART Write Log (FR=D6h) - запись в журнал ошибок или в каталог журналов (5+).
SMART Enable Operations (FR=D8h) - разрешение команд и внутренних функций SMART,
SMART Disable Operations (FR=D9h) - запрет команд и функций SMART, все команды SMART, кроме Smart Enable Operations, будут отвергаться. Состояние (разрешены или нет функции SMART) сохраняется и после последующих включений питания.
SMART Return Status (FR=DAh) - опрос результатов мониторинга. Если какой-либо порог перейден, регистры СH и CL будут иметь значения C2h и 4Fh соответственно, если все в порядке - 2Ch и F4h.
Основные положения S.MA.R.T. были согласованы с участием всех крупных производителей дисков и компьютеров. Для анализа надежности жесткого диска используются две группы параметров. Первая характеризует параметры естественного старения жесткого диска:
- число циклов включения/выключения диска;
- накопленное число оборотов двигателя за время работы;
- количество перемещений головок
Вторая группа параметров характеризует текущее состояние накопителя:
- высота головки над поверхностью диска;
- скорость обмена данными между дисками и буфером (кэш-памятью);
- количество переназначений плохих секторов (когда вместо испорченного сектора подставляется свободный исправный);
- количество ошибок поиска;
- количество операций перекалибровки;
- скорость поиска данных на диске и др.
Обычно вся информация записывается на служебных дорожках, недоступных аппаратным и программным средствам общего применения.
S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology - технология самотестирования, анализа и отчетности) - это новый промышленный стандарт, описывающий методы предсказания появления ошибок жесткого диска. При активизации системы S.M.A.R.T. жесткий диск начинает отслеживать определенные параметры, чувствительные к неисправностям накопителя или указывающие на них. На основе отслеживаемых параметров можно предсказать сбои в работе накопителя. Если на основе отслеживаемых параметров вероятность появления ошибки возрастает, S.M.A.R.T. генерирует для BIOS или драйвера операционной системы отчет о возникшей неполадке, который указывает пользователю на необходимость немедленного резервного копирования данных до того момента, когда произойдет сбой в накопителе.
На основе отслеживаемых параметров S.M.A.R.T. пытается определить тип ошибки. По данным фирмы Seagate, 60% ошибок представляют собой механические проблемы. Именно этот тип ошибок и предсказывается S.M.A.R.T. Естественно не все ошибки можно предсказать, например появление статического электричества, внезапная встряска или удар, термические перегрузки и т.д.
Для функционирования S.M.A.R.T. необходима поддержка этой технологии на уровне BIOS или драйвера жесткого диска операционной системы (и, естественно, накопитель на жестких дисках, который поддерживает эту технологию). S.M.A.R.T. поддерживается программами, например Norton Smart Doctor фирмы Symantec, EZ фирмы Micro-house International или Data Advisor фирмы Ontrack Data International и др..
Традиционные программы диагностики диска, например Scandisk и Norton Disk Doctor, работают с секторами данных на поверхности диска и не отслеживают всех функций накопителя в целом. В современных накопителях на жестких дисках резервируются секторы, которые в будущем используются вместо дефектных. Как только использован один из резервных секторов, S.M.A.R.T. информирует об этом пользователя, в то время как программы диагностики диска не сообщают о каких-либо проблемах.
Каждый производитель накопителей на жестких дисках по-своему реализует параметры монитора S.M.A.R.T., причем большинство из них реализовали собственный набор параметров. В некоторых накопителях отслеживается высота "полета" головок над поверхностью диска. Если эта величина уменьшается до некоторого критического значения, то накопитель генерирует ошибку. В других накопителях выполняется мониторинг кодов коррекции ошибок, который показывает количество ошибок чтения и записи на диск.
В большинстве дисков реализована регистрация следующих параметров:
- высота "полета" головки на диском;
- скорость передачи данных;
- количество переназначенных секторов;
- производительность времени поиска;.
- количество повторов процесса калибровки накопителя.
Каждый параметр имеет пороговое значение, которое используется для определения того, появилась ли ошибка. Это пороговое значение определяется производителем накопителя и не может быть изменено.
Программы для восстановления HDD
При низкоуровневых экспериментах возможно столкнуться с такой неприятностью, как поломка винчестера. Не стоит сразу прибегать к драконовским мерам и форматировать диск, можно попробовать восстановить его работоспособность с помощью некоторых программ.
- TestDisk — самая простая и эффективная программа для восстановления HDD. Предназначена для поиска и реконструкции потерянных разделов, загрузочного сектора, удаленных файлов; исправляет таблицу разделов. Работает с большим количеством файловых систем. Работает в консольном режиме, чем достигается высокая скорость.
- Acronis Disk Director — целый программный пакет, в который включено немалое количество инструментов для работы с HDD. Содержит в себе утилиту Acronis Recovery Expert, которая служит для реконструкции файлов и разделов. В отличие от предыдущей программы имеет графический интерфейс, но работает с меньшим количеством файловых систем.
- Paragon Partition Manager — бесплатная программа от отечественных разработчиков, умеет почти все то же самое, что и Acronis, но ужасно медленная.
Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk
Запись информации в сервисные разделы HDD
В любом жестком диске присутствуют сервисные разделы. Они предназначены для хранения служебных программ винчестера, таких как S.M.A.R.T., модули раннего обнаружения ошибок, модули самодиагностики и так далее. К счастью, все эти данные не занимают выделенное место полностью, а значит, при правильном подходе мы можем использовать это бонусное пространство. Сервисные разделы не следует путать с DCO или HPA, которые могут быть легко обнаружены и доступны через стандартные ATA-команды.
В отличие от остальных методов скрытия информации запись в сервисный раздел не оставляет за собой никаких следов и незаметна для специальных программ поиска, которыми пользуются правоохранительные органы. Одним словом, это место идеально подойдет для хранения текстовых файлов с адресами, паролями, явками и прочего.
Для доступа к информации из сервисных разделов не подойдут стандартные ATA-команды, вместо этого для записи и чтения используются специальные команды VSC (Vendor Specific Commands). Как правило, производители держат в секрете эти команды, но порой выпускают утилиты для работы с сервисными разделами — например, программа wdidle3.exe от компании Western Digital и ее опенсорсный аналог idle3-tools. Еще один пример для WD — программа HDDHackr, меняющая записи в системных разделах HD.
Команды контроллеров жестких дисков, предназначенные для поддержки технологий S.M.A.R.T.
Технология S . M . A . R . T . позволяет осуществлять мониторинг параметров состояния, сканирование поверхности, сканирование поверхности с автоматической заменой сомнительных секторов на надежные. Жесткие диски сами при помощи этой технологии сообщать о своем состоянии не могут. Для этого существуют специальные программы. Программы, отображающие состояние SMART – атрибутов проверяют наличие поддержки технологии S . M . A . R . T . жестким диском, запрашивают таблицу SMART – атрибутов, получив таблицы в буфер приложений, разбирают табличные структуры, извлекая из них номера атрибутов и их числовые значения, сопоставляют стандартизованные номера атрибутов их названиям, выводят числовые значения в удобном для восприятия виде, извлекают из таблиц флаги атрибутов, на основании всех таблиц, значений и флагов выводят общее состояние устройства.
У современных контроллеров жестких дисков имеются команды, предназначенные для поддержки технологий S . M . A . R . T . Для непакетных устройств имеется команда SMART (пакетные используют для этих целей собственный протокол), подкоманды которой задаются через регистр свойств FR . Перед подачей команд в регистры CL и СН заносятся константы: CL =4 Fh , CH = C 2 h . Из подкоманд SMART стандартизованы следующие:
SMART Read Data ( FR = D 0 h ) - чтение блока данных SMART . Блок данных (512 байт) имеет стандартную структуру, в нем содержатся следующие сведения:
- состояние мониторинга off - line : запускался ли, завершался ли успешно, прерывался ли и почему;
- состояние самотестирования (чем кончился предыдущий тест, тестирование выполняется в данный момент);
- время до завершения тестирования off - line ;
- возможности тестирования off - line , поддержка журнала регистрации ошибок;
- рекомендуемое время, через которое имеет смысл запрашивать результат после запуска коротких и расширенных тестов;
- информация, специфичная для производителя.
SMART Enable / Disable Attribute Autosave ( FR = D 2 h ) - управление автосохранением атрибутов: SC =00 h - запрет, SC = F 1 h - разрешение автосохранения. Подкоманда необязательная. Автосохранение в энергонезависимую память выполняется по наступлению какого-то события (зависит от разработчика).
SMART Save Attribute Values ( FR = D 3 h ) - сохранение значений атрибутов в энергонезависимой памяти устройства.
SMART Execute Off-Line Immediate (FR=D4h) - немедленноевыполнениемониторинга off-line врежиме off-line или captive. В режиме off - line устройство, получив команду, сразу выполняет действия, обычные при завершении команд (снять флаг занятости и т. п.). В режиме captive команда выполняется как обычная, то есть устройство устанавливает флаг занятости на время ее выполнения; по окончании в регистрах сообщается результат и снимается флаг занятости. Функции задаются в регистре SN :
0 - выполнение программы SMART off - line в режиме off - line ;
1 - выполнение короткого самотестирования SMART в режиме off - line ;
2 - выполнение расширенного самотестирования SMART в режиме off - line ;
127 - прекращение самотестирования SMART ;
1 - выполнение короткого самотестирования SMART в режиме off - line ;
129 - выполнение короткого самотестирования SMART в режиме captive ;
130 - выполнение расширенного самотестирования SMART в режиме captive .
Для подкоманд, определяющих режим captive , в случае ошибок после их выполнения регистры CL и С H позволяют уточнить ошибку: если CL =4 F , CH = C 2 ht то не прошло самотестирование, если CL =4 Fh , CH =2 Ch , то ошибка иная (неподдерживаемые функции, ошибка задания параметров и т, п.).
SMART Read Log ( FR = D 5 h ) - чтение журнала ошибок (5+). В регистре SC указывается число передаваемых секторов, в регистре SN - адрес журнала. Журналов может быть несколько, имеется и каталог журналов. В спецификации задана структура каталога и некоторых журналов.
SMART Write Log ( FR = D 6 h ) - запись в журнал ошибок или в каталог журналов (5+).
SMART Enable Operations ( FR = D 8 h ) - разрешение команд и внутренних функций SMART ,
SMART Disable Operations ( FR = D 9 h ) - запрет команд и функций SMART , все команды SMART , кроме Smart Enable Operations , будут отвергаться. Состояние (разрешены или нет функции SMART ) сохраняется и после последующих включений питания.
SMART Return Status ( FR = DAh ) - опрос результатов мониторинга. Если какой-либо порог перейден, регистры С H и CL будут иметь значения C 2 h и 4 Fh соответственно, если все в порядке - 2 Ch и F 4 h .
Технология оценки состояния жесткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя S . M . A . R . T производит наблюдение за основными характеристиками накопителя, каждая из которых получает оценку. Характеристики накопителя можно разбить на две группы:
а) параметры, отражающие процесс естественного старения жесткого диска – число оборотов шпинделя, число перемещений головок, количество циклов включения-выключения;
б) параметры накопителя текущие – высота головок над поверхностью диска, число переназначенных секторов, время поиска дорожки и количество ошибок поиска.
Данные хранятся в шестнадцатеричном виде “ raw value ”(необработанное, грубое значение). Это значение пересчитывается в величину “ value ”, символизирующую надежность относительно некоторого эталонного значения. Обычно значение ( value - величина, оценка) располагается в диапазоне от 0 до 100 (некоторые атрибуты имеют значение от 0 до 200 и от 0 до 253). Высокая оценка говорит об отсутствии изменений данного параметра или медленном его ухудшении. Низкая оценка говорит о возможном скором сбое. Значение параметра меньшее, чем минимальное значение, при котором производителем гарантируется безотказная работа накопителя, означает выход узла из строя. Технология S . M . A . R . T . позволяет предсказывать выход устройства из строя в результате механических неисправностей, что составляет примерно 60% от причин, по которым жесткие диски выходят из строя, но не может предсказать последствия скачка напряжения или механического удара.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Програмный ремонт жёстких дисков HDD
Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung /IBM /Hitachi /HGST /Western Digital
Tronix, у меня ушло около двух лет на то, чтобы фильтровать на эту тему весь интернет, читать тысячестраничные форумы (иногда - закрытые - через кэш поисковика), выгребая из тонн флуда крупицы здравого смысла, поднимать из веб-архива мёртвые сайты, расшифровывать дремучий сленг, шариться по мутным сайтам и файлопомойкам, ночи напролёт чахнуть над непонятными мануалами. Если этот FAQ поможет людям сэкономить эту пару лет и сходу починить хотя бы несколько дисков - я буду считать, что я не зря старался.
И да, "классические" Барракуды можно привести в состояние "прям как с завода" (если головки в принципе живые, конечно) при абсолютно любых программных проблемах, хоть с совершенно пустой служебкой. Если, конечно, действовать по инструкции, которую и следует написать (черновик есть).
Вклад в сообщество
Меняем прошивку
Подобные манипуляции с жестким диском требуют значительных усилий, и вряд ли кто-нибудь добровольно отдаст свой накопитель для взлома. Поэтому было бы неплохо найти способ перепрошивки винчестера без каких-либо посторонних устройств или снятия чипа.
У компании Western Digital есть специальные программные утилиты для работы с жестким диском — это инструменты, работающие под DOS, которые могут загрузить новую прошивку контроллера, микросхемы флеш-памяти или сервисного раздела. Инструменты используют так называемые Vendor Specific Commands (VSC), впрочем, об этом чуть позже.
Также есть набор инструментов под названием idle3-tools, которые можно взять на вооружение для модификации прошивки жесткого диска. Он также использует VSC, применяя Linux SCSI PassThrough IOCTLs. Джероен взял этот код, изменил его и интегрировал в fwtool. После этой модификации fwtool научился читать и писать на микросхему флеш-памяти.
Теперь если хакер каким-то образом сможет воспользоваться fwtool на удаленной машине, то получит возможность сбросить флеш-память диска, изменить ее и «зашить» обратно. Правда, в конце концов владелец узнает о взломе и, вероятно, переустановит систему, но злоумышленник может внедрить что-нибудь, что проявит себя и после переустановки. Например, подождать, пока машина зачитывает из файла /etc/shadow/ , где хранятся все пароли в системах UNIX/Linux, и изменить содержимое. После чего можно будет просто войти под своим паролем.
Кстати говоря, описанная методика может служить не только для подпольных экспериментов, но и для целей защиты. Например, можно создать неклонируемый жесткий диск, который будет работать нормально, если шаблон доступа секторов, как обычно, окажется случайным. Если же винчестер будет доступен только последовательно, то данные будут испорчены, что сделает клон отличным от оригинала.
Кстати говоря, Джероен решил поделиться результатами своих исследований и выложил почти весь исходный код на своем сайте.
Програмный ремонт жёстких дисков HDD (Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung
Навигация по теме:
Seagate (и отдельно по F3)
Conner
Fujitsu
Quantum
Maxtor
Samsung
Western Digital
IBM, Hitachi
Прочие (Kalok, Teac, Toshiba и т.д.)
Вклад в сообщество
Классификация по ремонтопригодности навскидку:
1. Диск не раскручивается - необходим ремонт платы электроники.
2. Диск не раскручивается, но время от времени издаёт писк - клин шпиндельного двигателя либо падение головок на пластины, как правило неремонтопригодно.
3. Диск раскручивается и начинает издавать громкий стук или неприятный шум и скрежет - головка не может считать сервоинформацию и удержаться на дорожке, за редким исключением неремонтопригодно.
4. Диск раскручивается, нормально распарковывается и останавливается, либо делает несколько негромко слышимых попыток позиционирования, либо просто не виден на интерфейсе без видимых/слышимых отклонений в поведении - повреждение служебной информации, можно пытаться отремонтировать. Иногда проблема бывает также в разъёме IDE.
5. Диск определяется, но имя диска искажено, каждая вторая буква испорчена - распространённая мелкая поломка, сломан или загнут один пин данных в разъёме IDE.
6. Диск определяется системой, но ёмкость равна нулю или отдаётся не своим именем (например, Maxtor ATHENA) - повреждена служебка, ремонтопригодно. Отдаваемое имя - технологическое имя семейства, содержится в ПЗУ.
7. Диск работает, но содержит бэды в умеренном количестве - можно попробовать их скрыть.
8. Диск работает, но содержит бэды, бэд-блоки расположены чередующимися группами по всей поверхности - отказ одной головки. В некоторых случаях ее можно отключить, получив исправную модель с меньшей ёмкостью.
9. К банке, не подумав, прикрутили неродную плату - что ж, сами виноваты.
Вклад в сообщество
KALDYH писал(а): 2. Диск не раскручивается, но время от времени издаёт писк - клин шпиндельного двигателя либо падение головок на пластины, как правило неремонтопригодно.
Иногда спасти данные с такого диска можно, сначала надо раз 10 попытаться запустить в обычном режиме, далее если не выйдет, пытаться запустить подавая питание и одновременно совершая мощные щелбаны по крышке гермоблока. Попадаются полуубитые винчестеры, которые стартуют только в таком режиме. С них данные надо копировать сразу же, как только удастся раскрутить диск.
KALDYH писал(а): 5. Диск определяется, но имя диска искажено, каждая вторая буква испорчена - распространённая мелкая поломка, сломан или загнут один пин данных в разъёме IDE.
Добавлю, что иногда причиной бывает второе устройство на канале, не совместимое с подопытным винчестером.
И ещё касаемо копирования данных с проблемных жёстких дисков. Ни в коем случае не надо это делать Проводником. Он имеет свойство при ошибках диска виснуть намертво. Лучше это делать Total Commander, тот с минуту помучившись спрашивает "ошибка чтения, пробуем ещё или ну этот файл", пробовать второй раз пробовать считать обычно смысла нет, а драгоценное время пока винт совсем коньки не отбросил уменьшается.
Вклад в сообщество
Платы первых IDE жестких дисков несли на себе следующие основные компоненты:
1. Микроконтроллер - стандартный МК общего назначения, 8/16-разрядный: Motorola 68HC11, Intel 8052, 80196, Fujitsu MB89000.
2. ОЗУ микроконтроллера
3. ПЗУ
4. Контроллер интерфейса IDE, обычно производства Cirrus Logic или Adaptec
5. ОЗУ дискового кэша
6. Микросхема драйвера шпиндельного двигателя и привода актуатора (spindle and voice coil motor driver, SP&VCM, "крутилка-шевелилка"), иногда с внешними силовыми ключами.
7. Канал чтения-записи.
8. Микросхема коммутатора-предусилителя.
9. Элементы защиты.
Вот, собственно, и всё, что следует в общем знать о ремонте плат жёстких дисков. Далее, в разборе по производителям, расскажу о некоторых специфических для определенных серий поломках.
Вклад в сообщество
ATauenis писал(а): Попадаются полуубитые винчестеры, которые стартуют только в таком режиме. С них данные надо копировать сразу же, как только удастся раскрутить диск.
Вклад в сообщество
Первые жёсткие диски, как известно обитателям этого форума, обходились вовсе без микроконтроллеров, только хард-логикой и аналоговыми схемами. Позже на платах появился микроконтроллер - первоначально только для управления позиционером и отработки старта-остановки, к обмену данными он отношения не имел. И только с введением интерфейса IDE микроконтроллер стал неотъемлемой частью жёсткого диска. Поначалу в его ведении была только обработка команд протокола ATA и позиционирование, позже к ним добавились буферизованный поиск и оптимизация перемещения коромысла, стратегия кэширования, логи SMART, трансляция и переназначение секторов и многие другие функции, для управления позиционером и всей сервосистемой появился отдельный сопроцессор, а для сепарации данных - DSP. Соответственно с этим вырастал и объём требуемых для его работы данных - у первых винчестеров почти всё умещалось в ПЗУ, у новейших в нём только начальный загрузчик. Все вместе эти данные, как исполняемый код, так и всевозможные таблицы, образуют служебную информацию ("служебку"). Хранится она на поверхности жёсткого диска, на специально выделенных для этого цилиндрах (у некоторых моделях - на внешних, где плотность записи ниже, с отрицательными номерами, у других - в середине диска, в специально выделенной служебной зоне с пониженной плотностью), обычно имеет основную копию только по одной (нулевой, самой нижней) голове (называемой служебной - в принципе, модифицировав микропрограмму, можно назначить служебной любую другую), по соседней голове хранится резервная копия. Служебка недоступна пользователю. Для доступа к служебной информации по интерфейсу необходимо ввести в регистры накопителя т.н. технологический ключ, или Super-On. Откуда его узнают? Реверс-инженеринг прошивок накопителей из пакетов обновлений прошивки, фирменных служебных утилит, утечки с заводов-производителей (обычно через китайцев).
Подробнее о структуре служебки отдельных накопителей можно почитать в документации на PC3000/HRT
Читайте также: