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

WARNING


Вся информация приведена для ознакомления. 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 вполне возможно.

 

Victoria 4.47

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

INFO


На момент написания статьи заброшенный сайт разработчика программы Victoria был заражен. Поэтому вместо указанного в документации к программе URL www.hdd-911.ru приводится ссылка на альтернативный источник загрузки утилиты Victoria.

Хоть 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
 

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, сохранить изменения и перезапустить программу.
 

Porttalk

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

 

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

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

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

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

 

Пароли

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

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

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

 

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

Чаще всего 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. Предварительно подобрали необходимые настройки. К вечеру того же дня успешно сняли дисковый образ, а затем восстановили с него все на новый винчестер. Прибор ожил, контракт был выполнен в срок.

 

Дополнительные возможности 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
 

Заключение

О «Виктории» можно написать еще многое, но за подробностями мне все же придется отправить тебя к русскоязычной документации. И, поскольку версии программы различаются во всяких тонкостях, рекомендую прочесть руководства для версий как 3.5.2, так и 4.46b и 4.47.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    15 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии