Изменение lba жесткого диска

Обновлено: 07.07.2024

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

Заключение

Помощь в написании контрольных, курсовых и дипломных работ здесь.


Перевести величину в мегабайтах в биты/байты/килобайты/гигабайты
Дана емкость винчестера V в мегабайтах. Написать программу, которая бы по введенному номеру.

LBA и CHS
Здравствуйте пишу загрузчик, встал такой вопрос, как по таблице разделов узнать работаем мы с.

CHS -> LBA
Здравствуйте! Че то я совсем запутался:( Кто то может объяснить мне что я не так считаю? Вот.

Число секторов LBA ATA
Здравствуйте, хочу узнать число секторов LBA на жестком диске. Использую команду Identify Device.

Смарт в студию.
А вообще стандартная функция Ремапа сама это проделать должна. (ИМХО)

Сканируем

Чтобы выполнить сканирование, набираем SCAN и жмем ENTER или используем F4. Появится меню, из которого можно изменить часть настроек. По умолчанию начальный сектор равен нулю (стартовый сектор). Конечный сектор равен максимально возможному (конец диска). Все деструктивные по отношению к пользовательским данным функции (Remap, Erase Delays) по умолчанию выключены.

Начинаем сканирование

Начинаем сканирование

Давай пройдемся по параметрам сканирования.

  • Start LBA — начальный сектор для сканирования, по дефолту 0, то есть начало диска.
  • End LBA — сектор завершения сканирования, по дефолту конец диска. Иногда удобнее сканировать не всю поверхность (особенно когда объем диска переваливает за несколько терабайт), а только рабочую область, где лежит ОС. К примеру, диск С равен 50 Гбайт, тогда конечная область будет равна 2 * 50 * 1024 * 1024 = 104 857 600-й сектор . Можно посчитать проще: (объем * 2) * 1 000 000 , итого 100 000 000.
  • Remap помечает сектор как сбойный в специальной служебной области, после чего диск к нему не обращается.
  • Timeout — время задержки на чтение сектора, после которого проверка переходит к следующему сектору.
  • Spindown after scan — остановить жесткий диск после сканирования.
  • Loop test/repair — проводить сканирование или проверку циклично.
  • Erase Delays — стирать сектора, в которых обнаружены задержки чтения.

Снова нажимаем F4 для запуска сканирования. MHDD сканирует накопители блоками. Для накопителей IDE/SATA один блок равен 255 секторам (130 560 байт).

Процесс сканирования

Процесс сканирования

Вот как работает сканирование:

  1. MHDD посылает команду VERIFY SECTORS с номером LBA (номер сектора) и номером секторов в качестве параметров.
  2. Накопитель поднимает флаг BUSY.
  3. MHDD запускает таймер.
  4. После того как накопитель выполнил команду, он опускает флаг BUSY.
  5. MHDD вычисляет затраченное накопителем время и выводит соответствующий блок на экран. Если встретилась ошибка (bad block), программа выводит букву, которая описывает ошибку.

MHDD повторяет шаги 1–5 до конечного сектора. Если нужен протокол сканирования, его всегда можно найти в файле log/mhdd.log. Во время сканирования ты можешь увидеть много прямоугольников разного цвета. Чтобы ты не сильно пугался, привожу выдержку из справки:


Наличие красных (>500 ms) блоков на полностью здоровом накопителе недопустимо. Если они есть, необходимо произвести стирание (erase) всей поверхности диска и, если это не помогло, избавиться от задержек, можно делать выводы, что данный накопитель перестал быть достаточно надежным. Буквенно-символьные блоки, например x , S и т.п., недопустимы: они говорят о наличии bad-блоков на поверхности.

Первое, что должно быть сделано, — это полная очистка поверхности командой erase. Если это не помогло, то scan с включенной опцией EraseWaits. Если bad-блоки так и не исчезли, следует запустить scan с включенной опцией Remap.

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

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

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

Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk

Рис. 6. Восстанавливаем поврежденные разделы с помощью TestDisk

PIO vs API

У Victoria есть два режима работы: PIO (port input/output) и API (application programming interface). В режиме PIO контроллер накопителя опрашивается программой через драйвер porttalk.sys. Если выбрать API, то будут использоваться средства операционной системы. Скорость работы с диском в режиме PIO падает, поскольку не поддерживаются DMA и высокоуровневые оптимизации чтения и записи. Однако режим PIO позволяет использовать все возможности Victoria и отправлять любые команды ATA непосредственно дисковому контроллеру, минуя ОС и стандартные драйверы. Именно через PIO чаще всего работают с дисками в лабораториях восстановления данных. Victoria поддерживает как накопители с современным интерфейсом SATA, так и старые — PATA (он же IDE). Victoria умеет работать и с внешними дисками (особенности будут описаны ниже).

Выбрав режим PIO, в начале работы надо просканировать шину и определить дисковые контроллеры кнопкой PCI-Scan. Справа от нее отображается окно выбора порта диска. Внутренние обычно детектируются без проблем, а вот для внешних дисков придется сначала выяснить их порт. Это можно сделать в свойствах оборудования или в любой диагностической программе (например, AIDA64). После этого необходимо вручную задать порт в «Виктории». Еще при сканировании можно отметить флажок All dev (все устройства) и методом исключения отыскать нужный диск в списке найденных.

Victoria 4.47 в режиме PIO

Victoria 4.47 в режиме PIO

Режим PIO целесообразно использовать именно для низкоуровневых команд. Простой поиск сбойных секторов и их переназначение в резервную область диска гораздо быстрее (но менее надежно) протекает в режиме API.

Ограничения режима API следующие: нельзя устанавливать и снимать пароли ATA, отключена также работа с Host Protected Area и просмотр регистров. Если какая-то из этих функций нужна, то можно переключиться в режим PIO. Бывает, что режим PIO недоступен. Это случается при использовании старых версий Victoria в 64-разрядных ОС. Еще причиной могут быть ошибки в работе с драйвером porttalk.sys или выбор режима SATA AHCI. Гарантированно выйти из положения можно следующим образом.

  1. Записываем загрузочную флешку
    с WinPE x86 и помещаем на нее программу Victoria простым копированием.
  2. Подключаем нужный накопитель к порту SATA/PATA, если еще не сделали этого.
  3. Отключаем все другие HDD или SSD (опционально).
  4. Заходим в CMOS setup, переключаем режим SATA-контроллера с AHCI на совместимый (compatible, native или IDE).
  5. Загружаем WinPE. При необходимости доустанавливаем драйверы, включая porttalk.
  6. Запускаем Victoria в режиме PIO, инициализируем нужный HDD или SSD и выполняем необходимую команду.

Настройки можно задать через GUI или в файле vcr40.ini. Этот же файл поможет снять блокировку работы с первичным портом. По умолчанию она включена для того, чтобы защитить системный диск от случайной модификации. Чтобы можно было выбрать Primary в списке портов, нужно сделать две вещи:

  1. Отключить опцию «только недеструктивные функции» и закрыть программу.
  2. В секции [ATA Port] файла vcr40.ini дописать строку Enable PM=1 , сохранить изменения и перезапустить программу.

О чем сигнализируют индикаторы

  • BUSY — накопитель занят и на команды не реагирует;
  • WRFT — ошибка записи;
  • DREQ — накопитель жаждет обменяться данными с внешним миром;
  • ERR — возникла ошибка в результате какой-либо операции.

Когда загорается ERR, смотри в правую верхнюю часть экрана: там будет отображен тип последней ошибки:

  • AMNF — Address Mark Not Found — обращение к какому-то конкретному сектору не удалось. Скорее всего, означает, что сектор поврежден. Однако сразу после включения накопителя как раз наоборот — свидетельствует об отсутствии проблем и сообщает об успешном выполнении внутренней диагностики;
  • T0NF — Track 0 Not Found — не найден нулевой трек;
  • ABRT — Abort, команда отвергнута;
  • IDNF — Sector ID Not found;
  • UNCR — Uncorrectable Error, ошибка, не скорректированная кодом ECC. Скорее всего, в этом месте логический бэд-блок.

Вверху могут появляться еще два индикатора: PWD сигнализирует об установленном аппаратном пароле, HPА появляется в том случае, если размер накопителя был изменен с помощью команды HPA (обычно используется для скрытия бэд-блоков в конце диска).


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

От MS-DOS до Windows 10

Victoria задумывалась как средство расширенной диагностики накопителей (тогда — жестких дисков, а сегодня еще и SSD) и управления настройками их работы через низкоуровневые команды. Белорусский программист Сергей Казанский лет десять разрабатывал ее и выпускал авторский набор утилит для восстановления данных. За это время вышло множество коммерческих релизов Victoria, несколько бесплатных версий и одна неофициальная, которой мы уделим особое внимание.

Первоначально Victoria была дисковой утилитой для MS-DOS, написанной на ассемблере. Древняя операционка подходила лучше, чем Windows, из-за того, что в однозадачной среде проще обеспечить эксклюзивный доступ к диску. С появлением поддержки драйвера porttalk.sys Victoria версий 4.xx научилась работать и в многозадачной среде WinPE, а также в Windows от XP до 10 любой разрядности. Запускать ее стало проще, действия в графическом интерфейсе стали нагляднее, да и сам режим работы изменился. Но вот беда: без понимания новых особенностей программы некоторые пользователи начали терять данные и целые диски вместо того, чтобы восстанавливать их. Поэтому последняя официальная версия 4.46b имеет развитую «защиту от дурака».

По умолчанию в ней доступны только недеструктивные операции с накопителями. Это не просто режим «только чтение», как в других утилитах, которые обращаются к HDD/SSD средствами драйвера Windows. У Victoria при первом старте также блокируется возможность изменить HPA (и напортачить с геометрией диска), случайно запустить низкоуровневое форматирование и «выстрелить себе в ногу» более изощренными способами.

Универсальный солдат

Victoria — максимально универсальная утилита. Она обращается к накопителю любого типа (HDD, SSD, USB Flash) и с любым ATA-совместимым интерфейсом. Ее дело — передавать ATA-команды любому устройству, которое их поддерживает. Поэтому все сказанное про работу Victoria с дисковыми накопителями справедливо и для твердотельных, за исключением того, что относится к их конструктивным особенностям. Понятно, что для SSD бессмысленно смотреть время раскрутки шпинделя и пытаться управлять скоростью позиционирования головок, — у него нет ни того ни другого. Тем не менее протестировать и даже восстановить SSD с помощью Victoria вполне возможно.

Заключение

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


Если SMART показывает проблемы, чаще всего это означает одно: диск вот-вот начнет сыпаться, и повлиять может даже лишняя загрузка ОС. Следующее, что нужно понять, — это софтверные на нем «бэды» или хардварные. Если хардварных не так много, то диск еще можно попытаться вернуть к жизни.

Думаю, ты слышал о таких продуктах, как MHDD и Victoria. Они незаменимы для низкоуровневой работы с жестким диском и помогут тебе совершить великие подвиги в восстановлении и диагностике. О Victoria «Хакер» уже писал пару выпусков назад, теперь настало время разобраться со второй — архаичной, но по-прежнему мегаполезной утилитой.

MHDD — это небольшая, но мощная бесплатная программа, которая предназначена для работы с накопителями на самом низком уровне (насколько это возможно). Первая версия была выпущена Дмитрием Постриганем в 2000 году. Она могла сканировать поверхность накопителя с интерфейсом IDE в режиме CHS. Сейчас MHDD — это значительно больше, чем диагностика. С MHDD ты можешь делать все что угодно: диагностировать накопители, выполнять чтение и запись произвольных секторов, управлять системой SMART, парольной системой, системой управления шумовыми характеристиками, а также изменять размер накопителя.

Несмотря на то что работа с MHDD возможна и через установленную Windows, я крайне рекомендую записать образ на флешку или внешний (или второй загрузочный) диск и загрузить оттуда голый DOS. Поверь, в хардварном вопросе лучше максимально исключить все звенья цепи, которые могут привести к глюкам или зависанию компьютера во время работы.

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

Наш зарубежный коллега Джероен «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, который может сбрасывать различные блоки во флеше и переводить код в текстовый файл. Затем можно изменить, удалить или добавить блок и вновь собрать все в одном файле прошивки, который потом спокойно загрузить во флеш.

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

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

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

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

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

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

Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше

Рис. 2. Разъем для подключения через последовательный порт. Одной тайной меньше

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

Рис. 3. Arduino Nano в качестве адаптера

Рис. 3. Arduino Nano в качестве адаптера

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

Рис. 4. Окно настроек PuTTY

Рис. 4. Окно настроек PuTTY

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

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

Рис. 5. Обнуление S.M.A.R.T.

Рис. 5. Обнуление S.M.A.R.T.

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

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

Готовимся

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

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

Не убий

Угробить диск значительно проще, чем восстановить его. К примеру, каждому известно (или должно быть известно), что к печальным последствиям ведет отсоединение шлейфа во время работы. Также крайне не рекомендуем бездумно переключать флаги и выполнять команды в MHDD. Внимательно читай документацию и не начинай что-то делать, если до конца не понимаешь, к чему это может привести.

Что ж, можно приступать к делу! Для начала создаем загрузочную флешку. Для этого я рекомендую USB Tools — полная инструкция и сам DOS есть вот здесь. Когда носитель готов, остается только бросить в его корень MHDD, чтобы лишний раз не лазить по директориям из командной строки.

Чтобы диск, подключенный на первый канал, точно отображался, нужно подредактировать конфиг mhdd.cfg, который лежит в папке CFG.

Как я уже говорил, сканирование любого устройства возможно, только если оно определяется командами ID или EID (или нажатием F2).

Определяем наш жесткий диск

Определяем наш жесткий диск

Восстанавливаем

Если сканирование выявило ошибки, первое, что необходимо сделать, — скопировать все данные с накопителя (если они, конечно, тебе нужны). В моем случае это было неактуально. Затем нужно полностью очистить поверхность при помощи команды ERASE , которая стирает каждый сектор на накопителе.

Выполнение команды ERASE

Выполнение команды ERASE

Накопитель пересчитает поля ECC для каждого сектора. Это помогает избавиться от так называемых soft-bad-блоков. Если стирание не помогло, запускаем сканирование с включенной опцией REMAP.

Процесс ремапа

Процесс ремапа

Если видишь, что каждый блок содержит ошибку, не пытайся стирать накопитель или сканировать с включенной опцией REMAP. Скорее всего, у накопителя повреждена служебная область, и это не может быть исправлено стандартными командами MHDD.

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

Victoria 4.47

Эту версию сделал в 2013 году программист из Москвы Олег Щербаков. Он пропатчил последнюю официальную сборку Victoria 4.46b. Скачивать лучше здесь. На этом сайте Щербаков опубликовал ее вместе с исходниками патчей. Остальные ресурсы могут распространять под видом новой «Виктории» что угодно.

Хоть Victoria и далеко не новая программа, в ней нашлись и критические ошибки, требовавшие исправления. Одна из них приводила к тому, что запустить Victoria в 64-разрядных версиях Windows было невозможно. Из-за другой могли появиться проблемы при работе с большими дисками. Если объем был выше терабайта, то Victoria 4.46b просто тратила всю виртуальную память на отрисовку и цветовую маркировку проверяемых блоков LBA. В версии 4.47 Щербаков все это исправил.

Запуск Victoria 4.47 в Windows 7 SP1 x64, режим API

Запуск Victoria 4.47 в Windows 7 SP1 x64, режим API

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 , которую следует распространить на весь жесткий диск (или на отдельную часть, предварительно заблокировав доступ к остальному). Достаточно один раз прогнать этот код, чтобы уничтожить данные безвозвратно.
  • Читаем содержимое сервисного раздела, вычисляем его хеш и убеждаемся в целостности данных.

Автор предупреждает, что его код может привести к потере данных и выходу из строя жесткого диска, так что использовать этот метод можно только на свой страх и риск.

WARNING

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

Пароли

Одна из наиболее востребованных низкоуровневых команд в режиме PIO — это работа с паролями. Согласно спецификациям, доступ к диску можно ограничить при помощи пароля. Он задается пользователем из BIOS или с помощью внешних утилит. Также существует предустановленный производителем мастер-пароль. Заблокировать диск можно только с помощью пользовательского пароля. Если его забыли, то блокировку можно снять мастер-паролем.

В зависимости от заданного уровня безопасности результат ввода мастер-пароля будет разным. При высоком уровне (high) мастер-пароль действует наравне с пользовательским. Он просто разблокирует диск, и все. Если же задан максимальный уровень безопасности (max), то ввод мастер-пароля вместо пользовательского приведет к разблокировке диска только после полного стирания на нем всех данных (secure erase).

Работа с ATA-паролями осложняется еще и тем, что по стандарту они всегда состоят из 32 байт (какой бы длины ты его ни задавал). Лишние символы игнорируются, а недостающие дописываются автоматически. Проблема в том, что разные программы дописывают их по-разному. Особенно грешат этим штатные защитные утилиты на некоторых ноутбуках. Вместо традиционных нолей (или хотя бы пробелов) они используют непечатаемые символы. Код 00h вообще нельзя набрать с клавиатуры (даже через +код). Выход здесь один: не вводить пароль в окне программы, а считать его из файла. Любые символы можно записать в файл с помощью hex-редактора.

Нередко пользователь не может разблокировать диск, даже когда вводит верный пароль. При смене ноутбука или утрате штатной утилиты любая другая (например, HDDL) допишет пароль до 32 байт своими символами.

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

Как вернуть утерянный терабайт

Иногда очень выручает возможность работать Victoria в режиме PIO с HPA (Host Protected Area) — служебной областью памяти, в которой записана геометрия диска. Она определяет объем накопителя, задавая его как число блоков LBA.

В моей практике был занятный случай. Получил стандартную жалобу: «компьютер не включается» (читай, ОС не загружается). Владелец посетовал, что мучается уже около месяца. Сначала он объездил все сервисные центры, затем приглашал разных эникейщиков — безрезультатно. Я приехал, посмотрел и тоже крепко задумался. Все комплектующие исправны. Диск определяется в BIOS, но загрузка с него не идет. Запустил Linux с флешки. Винчестер виден, но утилиты логической разметки показывают странную картину: 64 Мбайт общего объема и один раздел с неизвестной файловой системой.

И тут я сообразил, что на винчестере просто слетела HPA. В результате терабайтный диск стал определяться как 64-мегабайтный огрызок. Переключил в CMOS setup режим SATA-портов с AHCI на совместимый, взял флешку с WinPE и запустил Victoria в режиме PIO. Далее отправил команду NHPA (восстановить заводской объем).

Обычно в таких случаях удается мгновенно восстановить паспортное значение блоков LBA, но в этот раз чудо не произошло. Поэтому я нашел сервисную утилиту для винчестеров этой серии и отправил аналогичную команду восстановления HPA из нее. Терабайт данных вернулся из небытия при следующей перезагрузке.

Почему подвела Victoria? Предполагаю, потому, что у этого диска были какие-то специфические особенности, неизвестные мне или универсальной программе.

Porttalk

Последние версии Victoria умеют автоматически устанавливать драйвер porttalk, однако он совершенно бесполезен в 64-разрядных системах. Дело в том, что в них ради большей безопасности убрали пару функций, которые нужны для работы porttalk и Victoria. Поэтому драйвер porttalk (и, соответственно, режим PIO) работает только в 32-битных версиях Windows, где есть функции Ke386SetIoAccessMap и Ke386IoSetAccessProcess .

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

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

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

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

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

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

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

Пациент

Итак, перед нами плата типичного жесткого диска 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 не хочет выкладывать документацию на свою продукцию в открытый доступ. Ну что ж, попробуем разобраться сами.

Ох уж эти интерфейсы

Не каждый интерфейс может корректно распознаваться программой.

Интерфейс SATA. Есть вероятность, что диск не определится в MHDD. Причина может заключаться в режиме работы SATA-контроллера (IDE и AHCI) в BIOS. MHDD, увы, не поддерживает режим AHCI. Необходимо менять настройки BIOS. Хуже всего то, что нынче не все матплаты поддерживают этот режим. Выходом может стать только использование машины с подходящей материнкой или отказ от MHDD.

Интерфейс SCSI. Может не определиться драйвер SCSI-контроллера.

Интерфейс USB. Подключить диск через USB теоретически возможно с помощью дополнительного драйвера и настройки программы. Драйвер эмулирует режим работы через SCSI. Также необходимо отключить все лишние USB-накопители. Целевой диск должен быть подключен до загрузки MHDD. В config.sys потребуется прописать: device=X:\USBASPI.SYS /w /v , где X:\ — путь к диску.

Итак, я беру с полки один из сломанных дисков (я обычно клею на них этикетку broken) и сейчас попробую воскресить его, чтобы показать тебе, как это работает на практике. У меня на руках оказался винт WDC WD7500BPVX-60JC3T0 с винегретом вместо системы и всех файлов на нем.

SMART подопытного диска

SMART подопытного диска

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

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

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

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

Рис. 1. Плата жесткого диска

Рис. 1. Плата жесткого диска

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

Дополнительные возможности Victoria

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

Victoria обнаруживает скрытые дефекты при анализе SMART

Victoria обнаруживает скрытые дефекты при анализе SMART

У Victoria четыре метода и три типа тестирования поверхности (всего двенадцать режимов). В каждом она автоматически подсчитывает общее число дефектных блоков и записывает их адреса в лог. Подобно дисковому редактору, Victoria умеет показывать содержимое секторов и позволяет его менять. В режиме PIO Victoria отображает информацию о логических разделах на носителе даже в том случае, если он вообще не определяется в BIOS. Ни одна утилита с доступом через API на это не способна. Дополнительно Victoria умеет управлять уровнем акустического шума диска (AAM), регулируя скорость перемещения его головок при поиске, запускать низкоуровневое форматирование, изменять объем HDD и выполнять бенчмарки. Ее можно использовать даже для проверки физического интерфейса (состояния кабелей и портов). В домашних условиях она спасет HDD или SSD во многих сложных ситуациях, кроме тяжелых механических повреждений, требующих вскрытия гермоблока. В лаборатории справятся и с ними, используя Victoria как одну из проверенных утилит.

Паспорт диска, принудительный запуск теста SMART и управление AAM в программе Victoria 4.46b

Паспорт диска, принудительный запуск теста SMART и управление AAM в программе Victoria 4.46b

WARNING


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

Сбойные секторы

Чаще всего Victoria используется для поиска и устранения сбойных секторов. Если с HPA у диска все в порядке и парольная защита не стоит, но никакими утилитами прочитать с него файлы за разумное время не удается, то пора проверять поверхности. Victoria умеет это делать в любом режиме (PIO/API) с помощью посекторного чтения (read), записи (write) и записи с проверкой (verify).

Обнаружение сбойных секторов

Обнаружение сбойных секторов

При восстановлении данных можно использовать только чтение, но его варианты тоже бывают разными. Простейший из них — последовательный: с первого блока до последнего. Начальное и конечное значение LBA можно указать вручную, что удобно сразу по многим причинам. Во-первых, так появляется возможность проверять диски любого объема, просто выполняя тест фрагментами до одного терабайта. Во-вторых, можно заново проверить подозрительную область и исключить внешние факторы. Victoria анализирует время обращения к сектору. Обычно у новых дисков оно не превышает 5 мс у 80% секторов. Нормальными также считаются секторы со временем опроса менее 50 мс. Те, у которых оно измеряется сотнями миллисекунд, — кандидаты в сбойные секторы.

Кандидаты в бэды

Кандидаты в бэды

Если сектор считался спустя несколько секунд, то это однозначный bad block. Такие дисковый контроллер должен выявлять самостоятельно во время простоя и заменять их в адресной таблице исправными секторами из резервной области. Однако на практике это происходит не всегда. Victoria может попросить винчестер сделать такую операцию (Remap) для тех секторов, которые слишком долго не отвечали на запросы. Формально при этой процедуре теряется часть информации, но реально она уже была потеряна в тот момент, когда сектор стал сбойным.

В платной версии Victoria была доступна функция Restore — попытка считать данные из сбойного сектора любой ценой и последующая их перезапись на исправный сектор. Однако программа официально не поддерживается с 2008 года, поэтому приобрести ее полную версию вряд ли получится. Бесплатная Victoria не раз выручала тем, что восстанавливала HPA, сбрасывала пароли и устраняла сбойные секторы, из-за которых зависали другие программы восстановления данных.

График чтения при тесте поверхности HDD

График чтения при тесте поверхности HDD

Как бесплатная Victoria спасла секретную работу

Поделюсь с тобой еще одной историей. Лаборатория в НИИ, наше время. Аналитическим прибором управляют с компьютера, который был с ним в комплекте. На компе предустановлен очень специфический софт, который разработчики больше не поддерживают. Дистрибутива нет ни на диске, ни на сайте. Есть только установленная программа, и она перестала работать. Лаборатория выполняла исследование по многолетнему госконтракту. Без чудо-прибора сотрудники оказались связаны по рукам и ногам. Помучались и выяснили, что проблема с диском. От древности он покрылся бэдами, и нормальная работа стала невозможной. Попытка сделать клон диска с пропуском сбойных секторов не увенчалась успехом — программа клонирования зависала намертво. Прогнали диск тестом Victoria с функцией Remap. Предварительно подобрали необходимые настройки. К вечеру того же дня успешно сняли дисковый образ, а затем восстановили с него все на новый винчестер. Прибор ожил, контракт был выполнен в срок.

Внешние накопители

Внешние диски — это обычные ноутбучные (2,5″) или десктопные (3,5″) модели в контейнерах с интерфейсами USB и FireWire. Они снабжаются различными контроллерами с общим названием «SATA-мост». Многие из этих мостов не транслируют низкоуровневые команды. Поэтому с одними внешними накопителями Victoria может сразу работать в режиме PIO так же, как с внутренними дисками, а с другими сначала придется помучиться. В простейшем случае будет достаточно извлечь сам диск из корпуса (гермоблок не вскрывать!) и подключить к порту напрямую.

Редкий зверь: SATA-винчестер без SATA-порта

У Western Digital и, возможно, других производителей некоторые внешние винчестеры выпускались уже с распаянным мостом SATA — USB. Поэтому обычного разъема SATA на них нет. Тем не менее их все равно можно подключить напрямую к порту, подпаяв SATA-кабель к выводам на плате диска. Чтобы понять, относится ли твой диск к такой серии, придется гуглить по номеру модели и искать даташиты.

Читайте также: