Расшифровка raw: Расшифровка SMART у HDD. Как читать ошибки жесткого диска?

Содержание

Оцениваем состояние жёстких дисков при помощи S.M.A.R.T.

Современный жёсткий диск — уникальный компонент компьютера. Он уникален тем, что хранит в себе служебную информацию, изучая которую, можно оценить «здоровье» диска. Эта информация содержит в себе историю изменения множества параметров, отслеживаемых винчестером в процессе функционирования. Больше ни один компонент системного блока не предоставляет владельцу статистику своей работы! Вкупе с тем, что HDD является одним из самых ненадёжных компонентов компьютера, такая статистика может быть весьма полезной и помочь его владельцу избежать нервотрёпки и потери денег и времени.

Информация о состоянии диска доступна благодаря комплексу технологий, называемых общим именем S.M.A.R.T. (Self-Monitoring, Analisys and Reporting Technology, т. е. технология самомониторинга, анализа и отчёта). Этот комплекс довольно обширен, но мы поговорим о тех его аспектах, которые позволяют посмотреть на атрибуты S.M.A.R.T., отображаемые в какой-либо программе по тестированию винчестера, и понять, что творится с диском.

Отмечу, что нижесказанное относится к дискам с интерфейсами SATA и РАТА. У дисков SAS, SCSI и других серверных дисков тоже есть S.M.A.R.T., но его представление сильно отличается от SATA/PATA. Да и мониторит серверные диски обычно не человек, а RAID-контроллер, потому про них мы говорить не будем.

Итак, если мы откроем S.M.A.R.T. в какой-либо из многочисленных программ, то увидим приблизительно следующую картину (на скриншоте приведён S.M.A.R.T. диска Hitachi Deskstar 7К1000.С HDS721010CLA332 в HDDScan 3.3):

S.M.A.R.T. в HDDScan 3.3

В каждой строке отображается отдельный атрибут S.M.A.R.T. Атрибуты имеют более-менее стандартизованные названия и определённый номер, которые не зависят от модели и производителя диска.

Каждый атрибут S.M.A.R.T. имеет несколько полей. Каждое поле относится к определённому классу из следующих: ID, Value, Worst, Threshold и RAW. Рассмотрим каждый из классов.

  • ID (может также именоваться Number) — идентификатор, номер атрибута в технологии S.M.A.R.T. Название одного и того же атрибута программами может выдаваться по-разному, а вот идентификатор всегда однозначно определяет атрибут. Особенно это полезно в случае программ, которые переводят общепринятое название атрибута с английского языка на русский. Иногда получается такая белиберда, что понять, что же это за параметр, можно только по его идентификатору.
  • Value (Current) — текущее значение атрибута в попугаях (т. е. в величинах неизвестной размерности). В процессе работы винчестера оно может уменьшаться, увеличиваться и оставаться неизменным. По показателю Value нельзя судить о «здоровье» атрибута, не сравнивая его со значением Threshold этого же атрибута. Как правило, чем меньше Value, тем хуже состояние атрибута (изначально все классы значений, кроме RAW, на новом диске имеют максимальное из возможных значение, например 100).
  • Worst — наихудшее значение, которого достигало значение Value за всю жизнь винчестера. Измеряется тоже в «попугаях». В процессе работы оно может уменьшаться либо оставаться неизменным. По нему тоже нельзя однозначно судить о здоровье атрибута, нужно сравнивать его с Threshold.
  • Threshold — значение в «попугаях», которого должен достигнуть Value этого же атрибута, чтобы состояние атрибута было признано критическим. Проще говоря, Threshold — это порог: если Value больше Threshold — атрибут в порядке; если меньше либо равен — с атрибутом проблемы. Именно по такому критерию утилиты, читающие S.M.A.R.T., выдают отчёт о состоянии диска либо отдельного атрибута вроде «Good» или «Bad». При этом они не учитывают, что даже при Value, большем Threshold, диск на самом деле уже может быть умирающим с точки зрения пользователя, а то и вовсе ходячим мертвецом, поэтому при оценке здоровья диска смотреть стоит всё-таки на другой класс атрибута, а именно — RAW. Однако именно значение Value, опустившееся ниже Threshold, может стать легитимным поводом для замены диска по гарантии (для самих гарантийщиков, конечно же) — кто же яснее скажет о здоровье диска, как не он сам, демонстрируя текущее значение атрибута хуже критического порога? Т. е. при значении Value, большем Threshold, сам диск считает, что атрибут здоров, а при меньшем либо равном — что болен. Очевидно, что при Threshold=0 состояние атрибута не будет признано критическим никогда. Threshold — постоянный параметр, зашитый производителем в диске.
  • RAW (Data) — самый интересный, важный и нужный для оценки показатель. В большинстве случаев он содержит в себе не «попугаи», а реальные значения, выражаемые в различных единицах измерения, напрямую говорящие о текущем состоянии диска. Основываясь именно на этом показателе, формируется значение Value (а вот по какому алгоритму оно формируется — это уже тайна производителя, покрытая мраком). Именно умение читать и анализировать поле RAW даёт возможность объективно оценить состояние винчестера.

Этим мы сейчас и займёмся — разберём все наиболее используемые атрибуты S.M.A.R.T., посмотрим, о чём они говорят и что нужно делать, если они не в порядке.

Перед тем как описывать атрибуты и допустимые значения их поля RAW, уточню, что атрибуты могут иметь поле RAW разного типа: текущее и накапливающее. Текущее поле содержит значение атрибута в настоящий момент, для него свойственно периодическое изменение (для одних атрибутов — изредка, для других — много раз за секунду; другое дело, что в программах чтения S.M.A.R.T. такое быстрое изменение не отображается). Накапливающее поле — содержит статистику, обычно в нём содержится количество возникновений конкретного события со времени первого запуска диска.

Текущий тип характерен для атрибутов, для которых нет смысла суммировать их предыдущие показания. Например, показатель температуры диска является текущим: его цель — в демонстрации температуры в настоящий момент, а не суммы всех предыдущих температур. Накапливающий тип свойственен атрибутам, для которых весь их смысл заключается в предоставлении информации за весь период «жизни» винчестера. Например, атрибут, характеризующий время работы диска, является накапливающим, т. е. содержит количество единиц времени, отработанных накопителем за всю его историю.

Приступим к рассмотрению атрибутов и их RAW-полей.

Атрибут: 01 Raw Read Error Rate
Типтекущий, может быть накапливающим для WD и старых Hitachi
Описаниесодержит частоту возникновения ошибок при чтении с пластин

Для всех дисков Seagate, Samsung (начиная с семейства SpinPoint F1 (включительно)) и Fujitsu 2,5″ характерны огромные числа в этих полях.

Для остальных дисков Samsung и всех дисков WD в этом поле характерен 0.

Для дисков Hitachi в этом поле характерен 0 либо периодическое изменение поля в пределах от 0 до нескольких единиц.

Такие отличия обусловлены тем, что все жёсткие диски Seagate, некоторые Samsung и Fujitsu считают значения этих параметров не так, как WD, Hitachi и другие Samsung. При работе любого винчестера всегда возникают ошибки такого рода, и он преодолевает их самостоятельно, это нормально, просто на дисках, которые в этом поле содержат 0 или небольшое число, производитель не счёл нужным указывать истинное количество этих ошибок.

Таким образом, ненулевой параметр на дисках WD и Samsung до SpinPoint F1 (не включительно) и большое значение параметра на дисках Hitachi могут указывать на аппаратные проблемы с диском. Необходимо учитывать, что утилиты могут отображать несколько значений, содержащихся в поле RAW этого атрибута, как одно, и оно будет выглядеть весьма большим, хоть это и будет неверно (подробности см. ниже).

На дисках Seagate, Samsung (SpinPoint F1 и новее) и Fujitsu на этот атрибут можно не обращать внимания.

Атрибут: 02 Throughput Performance
Типтекущий
Описаниесодержит значение средней производительности диска и измеряется в каких-то «попугаях». Обычно его ненулевое значение отмечается на винчестерах Hitachi. На них он может изменяться после изменения параметров ААМ, а может и сам по себе по неизвестному алгоритму

Параметр не даёт никакой информации пользователю и не говорит ни о какой опасности при любом своём значении.

Атрибут: 03 Spin-Up Time
Типтекущий
Описаниесодержит время, за которое шпиндель диска в последний раз разогнался из состояния покоя до номинальной скорости. Может содержать два значения — последнее и, например, минимальное время раскрутки. Может измеряться в миллисекундах, десятках миллисекунд и т. п. — это зависит от производителя и модели диска

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

Кстати, винчестеры Fujitsu всегда имеют единицу в этом поле в случае отсутствия проблем с раскруткой шпинделя.

Практически ничего не говорит о здоровье диска, поэтому при оценке состояния винчестера на параметр можно не обращать внимания.

Атрибут: 04 Number of Spin-Up Times (Start/Stop Count)
Типнакапливающий
Описаниесодержит количество раз включения диска. Бывает ненулевым на только что купленном диске, находившемся в запаянной упаковке, что может говорить о тестировании диска на заводе. Или ещё о чём-то, мне не известном 🙂

При оценке здоровья не обращайте на атрибут внимания.

Атрибут: 05 Reallocated Sector Count
Типнакапливающий
Описаниесодержит количество секторов, переназначенных винчестером в резервную область. Практически ключевой параметр в оценке состояния

Поясним, что вообще такое «переназначенный сектор». Когда диск в процессе работы натыкается на нечитаемый/плохо читаемый/незаписываемый/плохо записываемый сектор, он может посчитать его невосполнимо повреждённым. Специально для таких случаев производитель предусматривает на каждом диске (на каких-то моделях — в центре (логическом конце) диска, на каких-то — в конце каждого трека и т. д.) резервную область. При наличии повреждённого сектора диск помечает его как нечитаемый и использует вместо него сектор в резервной области, сделав соответствующие пометки в специальном списке дефектов поверхности — G-list. Такая операция по назначению нового сектора на роль старого называется remap (ремап) либо переназначение, а используемый вместо повреждённого сектор — переназначенным. Новый сектор получает логический номер LBA старого, и теперь при обращении ПО к сектору с этим номером (программы же не знают ни о каких переназначениях!) запрос будет перенаправляться в резервную область.

Таким образом, хоть сектор и вышел из строя, объём диска не изменяется. Понятно, что не изменяется он до поры до времени, т. к. объём резервной области не бесконечен. Однако резервная область вполне может содержать несколько тысяч секторов, и допустить, чтобы она закончилась, будет весьма безответственно — диск нужно будет заменить задолго до этого.

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

На счёт этого атрибута мнения разнятся. Лично я считаю, что если он достиг 10, диск нужно обязательно менять — ведь это означает прогрессирующий процесс деградации состояния поверхности либо блинов, либо головок, либо чего-то ещё аппаратного, и остановить этот процесс возможности уже нет. Кстати, по сведениям лиц, приближенных к Hitachi, сама Hitachi считает диск подлежащим замене, когда на нём находится уже 5 переназначенных секторов. Другой вопрос, официальная ли эта информация, и следуют ли этому мнению сервис-центры. Что-то мне подсказывает, что нет 🙂

Другое дело, что сотрудники сервис-центров могут отказываться признавать диск неисправным, если фирменная утилита производителя диска пишет что-то вроде «S.M.A.R.T. Status: Good» или значения Value либо Worst атрибута будут больше Threshold (собственно, по такому критерию может оценивать и сама утилита производителя). И формально они будут правы. Но кому нужен диск с постоянным ухудшением его аппаратных компонентов, даже если такое ухудшение соответствует природе винчестера, а технология производства жёстких дисков старается минимизировать его последствия, выделяя, например, резервную область?

Атрибут: 07 Seek Error Rate
Типтекущий
Описаниесодержит частоту возникновения ошибок при позиционировании блока магнитных головок (БМГ)

Описание формирования этого атрибута почти полностью совпадает с описанием для атрибута 01 Raw Read Error Rate, за исключением того, что для винчестеров Hitachi нормальным значением поля RAW является только 0.

Таким образом, на атрибут на дисках Seagate, Samsung SpinPoint F1 и новее и Fujitsu 2,5″ не обращайте внимания, на остальных моделях Samsung, а также на всех WD и Hitachi ненулевое значение свидетельствует о проблемах, например, с подшипником и т. п.

Атрибут: 08 Seek Time Performance
Типтекущий
Описаниесодержит среднюю производительность операций позиционирования головок, измеряется в «попугаях». Как и параметр 02 Throughput Performance, ненулевое значение обычно отмечается на дисках Hitachi и может изменяться после изменения параметров ААМ, а может и само по себе по неизвестному алгоритму

Не даёт никакой информации пользователю и не говорит ни о какой опасности при любом своём значении.

Атрибут: 09 Power On Hours Count (Power-on Time)
Типнакапливающий
Описаниесодержит количество часов, в течение которых винчестер был включён

Ничего не говорит о здоровье диска.

Атрибут: 10 (0А — в шестнадцатеричной системе счисления) Spin Retry Count
Типнакапливающий
Описаниесодержит количество повторов запуска шпинделя, если первая попытка оказалась неудачной

О здоровье диска чаще всего не говорит.

Основные причины увеличения параметра — плохой контакт диска с БП или невозможность БП выдать нужный ток в линию питания диска.

В идеале должен быть равен 0. При значении атрибута, равном 1-2, внимания можно не обращать. Если значение больше, в первую очередь следует обратить пристальное внимание на состояние блока питания, его качество, нагрузку на него, проверить контакт винчестера с кабелем питания, проверить сам кабель питания.

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

Атрибут: 11 (0B) Calibration Retry Count (Recalibration Retries)
Типнакапливающий
Описаниесодержит количество повторных попыток сброса накопителя (установки БМГ на нулевую дорожку) при неудачной первой попытке

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

Атрибут: 12 (0C) Power Cycle Count
Типнакапливающий
Описаниесодержит количество полных циклов «включение-отключение» диска

Не связан с состоянием диска.

Атрибут: 183 (B7) SATA Downshift Error Count
Типнакапливающий
Описаниесодержит количество неудачных попыток понижения режима SATA. Суть в том, что винчестер, работающий в режимах SATA 3 Гбит/с или 6 Гбит/с (и что там дальше будет в будущем), по какой-то причине (например, из-за ошибок) может попытаться «договориться» с дисковым контроллером о менее скоростном режиме (например, SATA 1,5 Гбит/с или 3 Гбит/с соответственно). В случае «отказа» контроллера изменять режим диск увеличивает значение атрибута

Не говорит о здоровье накопителя.

Атрибут: 184 (B8) End-to-End Error
Типнакапливающий
Описаниесодержит количество ошибок, возникших при передаче данных через кэш винчестера

Ненулевое значение указывает на проблемы с диском.

Атрибут: 187 (BB) Reported Uncorrected Sector Count (UNC Error)
Типнакапливающий
Описаниесодержит количество секторов, которые были признаны кандидатами на переназначение (см. атрибут 197) за всю историю жизни диска. Причём если сектор становится кандидатом повторно, значение атрибута тоже увеличивается

Ненулевое значение атрибута явно указывает на ненормальное состояние диска (в сочетании с ненулевым значением атрибута 197) или на то, что оно было таковым ранее (в сочетании с нулевым значением 197).

Атрибут: 188 (BC) Command Timeout
Типнакапливающий
Описаниесодержит количество операций, выполнение которых было отменено из-за превышения максимально допустимого времени ожидания отклика

Такие ошибки могут возникать из-за плохого качества кабелей, контактов, используемых переходников, удлинителей и т. д., а также из-за несовместимости диска с конкретным контроллером SATA/РАТА на материнской плате (либо дискретным). Из-за ошибок такого рода возможны BSOD в Windows.

Ненулевое значение атрибута говорит о потенциальной «болезни» диска.

Атрибут: 189 (BD) High Fly Writes
Типнакапливающий
Описаниесодержит количество зафиксированных случаев записи при высоте полета головки выше рассчитанной — скорее всего, из-за внешних воздействий, например вибрации

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

Атрибут: 190 (BE) Airflow Temperature
Типтекущий
Описаниесодержит температуру винчестера для дисков Hitachi, Samsung, WD и значение «100 − [RAW-значение атрибута 194]» для Seagate

Не говорит о состоянии диска.

Атрибут: 191 (BF) G-Sensor Shock Count (Mechanical Shock)
Типнакапливающий
Описаниесодержит количество критических ускорений, зафиксированных электроникой диска, которым подвергался накопитель и которые превышали допустимые. Обычно это происходит при ударах, падениях и т. п.

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

Вообще срабатывание датчика не является признаком удара. Может расти даже от позиционирования БМГ самим диском, особенно если его не закрепить. Основное назначение датчика — прекратить операцию записи при вибрациях, чтобы избежать ошибок.

Не говорит о здоровье диска.

Атрибут: 192 (С0) Power Off Retract Count (Emergency Retry Count)
Типнакапливающий
Описаниедля разных винчестеров может содержать одну из следующих двух характеристик: либо суммарное количество парковок БМГ диска в аварийных ситуациях (по сигналу от вибродатчика, обрыву/понижению питания и т. п.), либо суммарное количество циклов включения/выключения питания диска (характерно для современных WD и Hitachi)

Не позволяет судить о состоянии диска.

Атрибут: 193 (С1) Load/Unload Cycle Count
Типнакапливающий
Описаниесодержит количество полных циклов парковки/распарковки БМГ. Анализ этого атрибута — один из способов определить, включена ли на диске функция автоматической парковки (столь любимая, например, компанией Western Digital): если его содержимое превосходит (обычно — многократно) содержимое атрибута 09 — счётчик отработанных часов, — то парковка включена

Не говорит о здоровье диска.

Атрибут: 194 (С2) Temperature (HDA Temperature, HDD Temperature)
Типтекущий/накапливающий
Описаниесодержит текущую температуру диска. Температура считывается с датчика, который на разных моделях может располагаться в разных местах. Поле вместе с текущей также может содержать максимальную и минимальную температуры, зафиксированные за всё время эксплуатации винчестера

О состоянии диска атрибут не говорит, но позволяет контролировать один из важнейших параметров. Моё мнение: при работе старайтесь не допускать повышения температуры винчестера выше 50 градусов, хоть производителем обычно и декларируется максимальный предел температуры в 55-60 градусов.

Атрибут: 195 (С3) Hardware ECC Recovered
Типнакапливающий
Описаниесодержит количество ошибок, которые были скорректированы аппаратными средствами ECC диска

Особенности, присущие этому атрибуту на разных дисках, полностью соответствуют таковым атрибутов 01 и 07.

Атрибут: 196 (С4) Reallocated Event Count
Типнакапливающий
Описаниесодержит количество операций переназначения секторов

Косвенно говорит о здоровье диска. Чем больше значение — тем хуже. Однако нельзя однозначно судить о здоровье диска по этому параметру, не рассматривая другие атрибуты.

Этот атрибут непосредственно связан с атрибутом 05. При росте 196 чаще всего растёт и 05. Если при росте атрибута 196 атрибут 05 не растёт, значит, при попытке ремапа кандидат в бэд-блоки оказался софт-бэдом (подробности см. ниже), и диск исправил его, так что сектор был признан здоровым, и в переназначении не было необходимости.

Если атрибут 196 меньше атрибута 05, значит, во время некоторых операций переназначения выполнялся перенос нескольких повреждённых секторов за один приём.

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

Атрибут: 197 (С5) Current Pending Sector Count
Типтекущий
Описаниесодержит количество секторов-кандидатов на переназначение в резервную область

Натыкаясь в процессе работы на «нехороший» сектор (например, контрольная сумма сектора не соответствует данным в нём), диск помечает его как кандидат на переназначение, заносит его в специальный внутренний список и увеличивает параметр 197. Из этого следует, что на диске могут быть повреждённые секторы, о которых он ещё не знает — ведь на пластинах вполне могут быть области, которые винчестер какое-то время не использует.

При попытке записи в сектор диск сначала проверяет, не находится ли этот сектор в списке кандидатов. Если сектор там не найден, запись проходит обычным порядком. Если же найден, проводится тестирование этого сектора записью-чтением. Если все тестовые операции проходят нормально, то диск считает, что сектор исправен. (Т. е. был т. н. «софт-бэд» — ошибочный сектор возник не по вине диска, а по иным причинам: например, в момент записи информации отключилось электричество, и диск прервал запись, запарковав БМГ. В итоге данные в секторе окажутся недописанными, а контрольная сумма сектора, зависящая от данных в нём, вообще останется старой. Налицо будет расхождение между нею и данными в секторе.) В таком случае диск проводит изначально запрошенную запись и удаляет сектор из списка кандидатов. При этом атрибут 197 уменьшается, также возможно увеличение атрибута 196.

Если же тестирование заканчивается неудачей, диск выполняет операцию переназначения, уменьшая атрибут 197, увеличивая 196 и 05, а также делает пометки в G-list.

Итак, ненулевое значение параметра говорит о неполадках (правда, не может сказать о том, в само́м ли диске проблема).

При ненулевом значении нужно обязательно запустить в программах Victoria или MHDD последовательное чтение всей поверхности с опцией remap. Тогда при сканировании диск обязательно наткнётся на плохой сектор и попытается произвести запись в него (в случае Victoria 3.5 и опции Advanced remap — диск будет пытаться записать сектор до 10 раз). Таким образом программа спровоцирует «лечение» сектора, и в итоге сектор будет либо исправлен, либо переназначен.

Идёт последовательное чтение с ремапом в Victoria 4.46b

В случае неудачи чтения как с remap, так и с Advanced remap, стоит попробовать запустить последовательную запись в тех же Victoria или MHDD. Учитывайте, что операция записи стирает данные, поэтому перед её применением обязательно делайте бэкап!

Запуск последовательной записи в Victoria 4.46b

Иногда от невыполнения ремапа могут помочь следующие манипуляции: снимите плату электроники диска и почистите контакты гермоблока винчестера, соединяющие его с платой — они могут быть окислены. Будь аккуратны при выполнении этой процедуры — из-за неё можно лишиться гарантии!

Невозможность ремапа может быть обусловлена ещё одной причиной — диск исчерпал резервную область, и ему просто некуда переназначать секторы.

Если же значение атрибута 197 никакими манипуляциями не снижается до 0, следует думать о замене диска.

Атрибут: 198 (С6) Offline Uncorrectable Sector Count (Uncorrectable Sector Count)
Типтекущий
Описаниеозначает то же самое, что и атрибут 197, но отличие в том, что данный атрибут содержит количество секторов-кандидатов, обнаруженных при одном из видов самотестирования диска — оффлайн-тестировании, которое диск запускает в простое в соответствии с параметрами, заданными прошивкой

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

Ненулевое значение говорит о неполадках на диске (точно так же, как и 197, не конкретизируя, кто виноват).

Атрибут: 199 (С7) UltraDMA CRC Error Count
Типнакапливающий
Описаниесодержит количество ошибок, возникших при передаче по интерфейсному кабелю в режиме UltraDMA (или его эмуляции винчестерами SATA) от материнской платы или дискретного контроллера контроллеру диска

В подавляющем большинстве случаев причинами ошибок становятся некачественный шлейф передачи данных, разгон шин PCI/PCI-E компьютера либо плохой контакт в SATA-разъёме на диске или на материнской плате/контроллере.

Ошибки при передаче по интерфейсу и, как следствие, растущее значение атрибута могут приводить к переключению операционной системой режима работы канала, на котором находится накопитель, в режим PIO, что влечёт резкое падение скорости чтения/записи при работе с ним и загрузку процессора до 100% (видно в Диспетчере задач Windows).

В случае винчестеров Hitachi серий Deskstar 7К3000 и 5К3000 растущий атрибут может говорить о несовместимости диска и SATA-контроллера. Чтобы исправить ситуацию, нужно принудительно переключить такой диск в режим SATA 3 Гбит/с.

Моё мнение: при наличии ошибок — переподключите кабель с обоих концов; если их количество растёт и оно больше 10 — выбрасывайте шлейф и ставьте вместо него новый или снимайте разгон.

Можно считать, что о здоровье диска атрибут не говорит.

Атрибут: 200 (С8) Write Error Rate (MultiZone Error Rate)
Типтекущий
Описаниесодержит частоту возникновения ошибок при записи

Ненулевое значение говорит о проблемах с диском — в частности, у дисков WD большие цифры могут означать «умирающие» головки.

Атрибут: 201 (С9) Soft Read Error Rate
Типтекущий
Описаниесодержит частоту возникновения ошибок чтения, произошедших по вине программного обеспечения

Влияние на здоровье неизвестно.

Атрибут: 202 (СА) Data Address Mark Error
Типнеизвестно
Описаниесодержание атрибута — загадка, но проанализировав различные диски, могу констатировать, что ненулевое значение — это плохо
Атрибут: 203 (CB) Run Out Cancel
Типтекущий
Описаниесодержит количество ошибок ECC

Влияние на здоровье неизвестно.

Атрибут: 220 (DC) Disk Shift
Типтекущий
Описаниесодержит измеренный в неизвестных единицах сдвиг пластин диска относительно оси шпинделя

Влияние на здоровье неизвестно.

Атрибут: 240 (F0) Head Flying Hours
Типнакапливающий
Описаниесодержит время, затраченное на позиционирование БМГ. Счётчик может содержать несколько значений в одном поле

Влияние на здоровье неизвестно.

Атрибут: 254 (FE) Free Fall Event Count
Типнакапливающий
Описаниесодержит зафиксированное электроникой количество ускорений свободного падения диска, которым он подвергался, т. е., проще говоря, показывает, сколько раз диск падал

Влияние на здоровье неизвестно.

 

 

Подытожим описание атрибутов. Ненулевые значения:

  • атрибутов 01, 07, 195 — вызывают подозрения в «болезни» у некоторых моделей дисков;
  • атрибутов 10, 11, 188, 196, 199, 202 — вызывают подозрения у всех дисков;
  • и, наконец, атрибутов 05, 184, 187, 197, 198, 200 — прямо говорят о неполадках.

При анализе атрибутов учитывайте, что в некоторых параметрах S.M.A.R.T. могут храниться несколько значений этого параметра: например, для предпоследнего запуска диска и для последнего. Такие параметры длиной в несколько байт логически состоят из нескольких значений длиной в меньшее количество байт — например, параметр, хранящий два значения для двух последних запусков, под каждый из которых отводится 2 байта, будет иметь длину 4 байта. Программы, интерпретирующие S.M.A.R.T., часто не знают об этом, и показывают этот параметр как одно число, а не два, что иногда приводит к путанице и волнению владельца диска. Например, «Raw Read Error Rate», хранящий предпоследнее значение «1» и последнее значение «0», будет выглядеть как 65536.

Надо отметить, что не все программы умеют правильно отображать такие атрибуты. Многие как раз и переводят атрибут с несколькими значениями в десятичную систему счисления как одно огромное число. Правильно же отображать такое содержимое — либо с разбиением по значениям (тогда атрибут будет состоять из нескольких отдельных чисел), либо в шестнадцатеричной системе счисления (тогда атрибут будет выглядеть как одно число, но его составляющие будут легко различимы с первого взгляда), либо и то, и другое одновременно. Примерами правильных программ служат HDDScan, CrystalDiskInfo, Hard Disk Sentinel.

Продемонстрируем отличия на практике. Вот так выглядит мгновенное значение атрибута 01 на одном из моих Hitachi HDS721010CLA332 в неучитывающей особенности этого атрибута Victoria 4.46b:

Атрибут 01 в Victoria 4.46b

А так выглядит он же в «правильной» HDDScan 3.3:

Атрибут 01 в HDDScan 3.3

Плюсы HDDScan в данном контексте очевидны, не правда ли?

Если анализировать S.M.A.R.T. на разных дисках, то можно заметить, что одни и те же атрибуты могут вести себя по-разному. Например, некоторые параметры S.M.A.R.T. винчестеров Hitachi после определённого периода неактивности диска обнуляются; параметр 01 имеет особенности на дисках Hitachi, Seagate, Samsung и Fujitsu, 03 — на Fujitsu. Также известно, что после перепрошивки диска некоторые параметры могут установиться в 0 (например, 199). Однако подобное принудительное обнуление атрибута ни в коем случае не будет говорить о том, что проблемы с диском решены (если таковые были). Ведь растущий критичный атрибут — это следствие неполадок, а не причина.

При анализе множества массивов данных S.M.A.R.T. становится очевидным, что набор атрибутов у дисков разных производителей и даже у разных моделей одного производителя может отличаться. Связано это с так называемыми специфичными для конкретного вендора (vendor specific) атрибутами (т. е. атрибутами, используемыми для мониторинга своих дисков определённым производителем) и не должно являться поводом для волнения. Если ПО мониторинга умеет читать такие атрибуты (например, Victoria 4.46b), то на дисках, для которых они не предназначены, они могут иметь «страшные» (огромные) значения, и на них просто не нужно обращать внимания. Вот так, например, Victoria 4.46b отображает RAW-значения атрибутов, не предназначенных для мониторинга у Hitachi HDS721010CLA332:

«Страшные» значения в Victoria 4.46b

Нередко встречается проблема, когда программы не могут считать S.M.A.R.T. диска. В случае исправного винчестера это может быть вызвано несколькими факторами. Например, очень часто не отображается S.M.A.R.T. при подключении диска в режиме AHCI. В таких случаях стоит попробовать разные программы, в частности HDD Scan, которая обладает умением работать в таком режиме, хоть у неё и не всегда это получается, либо же стоит временно переключить диск в режим совместимости с IDE, если есть такая возможность. Далее, на многих материнских платах контроллеры, к которым подключаются винчестеры, бывают не встроенными в чипсет или южный мост, а реализованы отдельными микросхемами. В таком случае DOS-версия Victoria, например, не увидит подключённый к контроллеру жёсткий диск, и ей нужно будет принудительно указывать его, нажав клавишу [Р] и введя номер канала с диском. Часто не читаются S.M.A.R.T. у USB-дисков, что объясняется тем, что USB-контроллер просто не пропускает команды для чтения S.M.A.R.T. Практически никогда не читается S.M.A.R.T. у дисков, функционирующих в составе RAID-массива. Здесь тоже есть смысл попробовать разные программы, но в случае аппаратных RAID-контроллеров это бесполезно.

Если после покупки и установки нового винчестера какие-либо программы (HDD Life, Hard Drive Inspector и иже с ними) показывают, что: диску осталось жить 2 часа; его производительность — 27%; здоровье — 19,155% (выберите по вкусу) — то паниковать не стоит. Поймите следующее. Во-первых, нужно смотреть на показатели S.M.A.R.T., а не на непонятно откуда взявшиеся числа здоровья и производительности (впрочем, принцип их подсчёта понятен: берётся наихудший показатель). Во-вторых, любая программа при оценке параметров S.M.A.R.T. смотрит на отклонение значений разных атрибутов от предыдущих показаний. При первых запусках нового диска параметры непостоянны, необходимо некоторое время на их стабилизацию. Программа, оценивающая S.M.A.R.T., видит, что атрибуты изменяются, производит расчёты, у неё получается, что при их изменении такими темпами накопитель скоро выйдет из строя, и она начинает сигнализировать: «Спасайте данные!» Пройдёт некоторое время (до пары месяцев), атрибуты стабилизируются (если с диском действительно всё в порядке), утилита наберёт данных для статистики, и сроки кончины диска по мере стабилизации S.M.A.R.T. будут переноситься всё дальше и дальше в будущее. Оценка программами дисков Seagate и Samsung — вообще отдельный разговор. Из-за особенностей атрибутов 1, 7, 195 программы даже для абсолютно здорового диска обычно выдают заключение, что он завернулся в простыню и ползёт на кладбище.

Обратите внимание, что возможна следующая ситуация: все атрибуты S.M.A.R.T. — в норме, однако на самом деле диск — с проблемами, хоть этого пока ни по чему не заметно. Объясняется это тем, что технология S.M.A.R.T. работает только «по факту», т. е. атрибуты меняются только тогда, когда диск в процессе работы встречает проблемные места. А пока он на них не наткнулся, то и не знает о них и, следовательно, в S.M.A.R.T. ему фиксировать нечего.

Таким образом, S.M.A.R.T. — это полезная технология, но пользоваться ею нужно с умом. Кроме того, даже если S.M.A.R.T. вашего диска идеален, и вы постоянно устраиваете диску проверки — не полагайтесь на то, что ваш диск будет «жить» ещё долгие годы. Винчестерам свойственно ломаться так быстро, что S.M.A.R.T. просто не успевает отобразить его изменившееся состояние, а бывает и так, что с диском — явные нелады, но в S.M.A.R.T. — всё в порядке. Можно сказать, что хороший S.M.A.R.T. не гарантирует, что с накопителем всё хорошо, но плохой S.M.A.R.T. гарантированно свидетельствует о проблемах. При этом даже с плохим S.M.A.R.T. утилиты могут показывать, что состояние диска — «здоров», из-за того, что критичными атрибутами не достигнуты пороговые значения. Поэтому очень важно анализировать S.M.A.R.T. самому, не полагаясь на «словесную» оценку программ.

Хоть технология S.M.A.R.T. и работает, винчестеры и понятие «надёжность» настолько несовместимы, что принято считать их просто расходным материалом. Ну, как картриджи в принтере. Поэтому во избежание потери ценных данных делайте их периодическое резервное копирование на другой носитель (например, другой винчестер). Оптимально делать две резервные копии на двух разных носителях, не считая винчестера с оригинальными данными. Да, это ведёт к дополнительным затратам, но поверьте: затраты на восстановление информации со сломавшегося HDD обойдутся вам в разы — если не на порядок-другой — дороже. А ведь данные далеко не всегда могут восстановить даже профессионалы. Т. е. единственная возможность обеспечить надёжное хранение ваших данных — это делать их бэкап.

Напоследок упомяну некоторые программы, которые хорошо подходят для анализа S.M.A.R.T. и тестирования винчестеров: HDDScan (работает в Windows, бесплатная), CrystalDiskInfo (Windows, бесплатная), Hard Disk Sentinel (платная для Windows, бесплатная для DOS), HD Tune (Windows, платная, есть бесплатная старая версия).

И наконец, мощнейшие программы для тестирования: Victoria (Windows, DOS, бесплатная), MHDD (DOS, бесплатная).

Расшифровка значений SMART жёсткого диска

0101Raw Read Error RateНижеКритичноЧастота ошибок при чтении данных с жёсткого диска. Происхождение их обусловлено износом аппаратной части винчестера.
0202Throughput PerformanceВышеОбщая производительность накопителя. Если значение атрибута уменьшается поступательно, то велика вероятность проблем с винчестером.
0303Spin-Up TimeНижеКритичноВремя раскрутки «блинов» из состояния покоя до рабочей скорости ( чаще, всего с 0 rpm до 7200 rpm (оборотов в минуту).
0404Start/Stop CountЗначениеПолное число запусков, остановок шпинделя. Иногда в том числе количество включений режима энергосбережения. В поле raw value хранится общее количество запусков/остановок жёсткого диска.
0505Reallocated Sectors CountНижеКритичноЧисло операций переназначения секторов. При обнаружении повреждённого сектора на винчестере, информация из него помечается и переносится в специально отведённую зону, происходит утилизация bad блоков, с последующим консервированием этих мест на диске. Этот процесс называют remapping. Чем больше значение Reallocated Sectors Count, тем хуже состояние поверхности дисков — физический износ поверхности. Поле raw value содержит общее количество переназначенных секторов.
0707Seek Error RateНижеКритичноЧастота ошибок при позиционировании блока головок. Чем больше значение, тем хуже состояние механики, или поверхности жёсткого диска.
0808Seek Time PerformanceВышеСредняя производительность операции позиционирования. Если значение атрибута уменьшается, то велика вероятность проблем с механической частью.
0909Power-On Hours (POH)НижеВремя, проведённое устройством, во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ.
100ASpin-Up Retry CountНижеКритичноЧисло повторных попыток раскрутки дисков до рабочей скорости в случае, если первая попытка была неудачной.
110BRecalibration RetriesНижеКоличество повторов рекалибровки в случае, если первая попытка была неудачной.
120CDevice Power Cycle CountЗначениеЧисло циклов включения-выключения винчестера.
130DSoft Read Error RateНижеЧисло ошибок при чтении, по вине программного обеспечения, которые не поддались исправлению.
187BBReported UNC ErrorsНижеКритичноНеустранимые аппаратные ошибки.
190BEAirflow TemperatureНижеТемпература воздуха внутри корпуса жёсткого диска. Целое значение, либо значение по формуле 100 — Airflow Temperature.
191BFG-sense error rateНижеКоличество ошибок, возникающих в результате ударов.
192C0Power-off retract countНижеЧисло циклов аварийных выключений.
193C1Load/Unload CycleНижеКоличество циклов перемещения блока головок в парковочную зону.
194C2HDA temperatureНижеПоказания встроенного термодатчика накопителя.
195C3Hardware ECC RecoveredНижеКритичноЧисло коррекции ошибок аппаратной частью диска (ошибок чтения, ошибок позиционирования, ошибок передачи по внешнему интерфейсу).
196C4Reallocation Event CountНижеКритичноЧисло операций переназначения в резервную область, успешные и неудавшиеся попытки.
197C5Current Pending Sector CountНижеКритичноЧисло секторов- кандидатов на перенос в резервную зону. Помечены как не надёжные. При последующих корректных операциях атрибут может быть снят.
198C6Uncorrectable Sector CountНижеКритичноЧисло некорректируемых ошибок при обращении к сектору.
199C7UltraDMA CRC Error CountНижеЧисло ошибок при передаче данных по внешнему интерфейсу.
200C8Write Error Rate /Multi-Zone Error RateНижеОбщее количество ошибок при заполнения сектора информацией. Показатель качества накопителя.
201C9Soft read error rateНижеЧастота появления «программных» ошибок при чтении данных с диска, а не аппаратной части HDD.
202CAData Address Mark errorsНижеЧисло ошибок адресно помеченной информации (Data Address Mark (DAM)).Если автоматически не корректируется — заменить устройство.
203CBRun out cancelНижеКоличество ошибок ECC данных, присоединяемые к передаваемому сигналу, позволяющие принимающей стороне определить факт сбоя или исправить несущественную ошибку.
204CCSoft ECC correctionНижеКоличество ошибок ECC, скорректированных программным способом.
205CDThermal asperity rate (TAR)НижеЧисло ошибок в следствии температурных колебаний.
206CEFlying heightЗначениеВысота между головкой и поверхностью диска компьютера.
209D1Offline seek performanceЗначениеDrive’s seek performance during offline operations.
220DCDisk ShiftНижеКритичноДистанция смещения блока дисков относительно шпинделя. В основном возникает из-за удара или падения.
221DDG-Sense Error RateНижеЧисло ошибок, возникших из-за внешних нагрузок и ударов. Атрибут хранит показания встроенного crash датчика.
222DELoaded HoursЗначениеВремя, проведённое блоком магнитных головок между выгрузкой из парковочной области в рабочую область диска и загрузкой блока обратно в парковочную область.
223DFLoad/Unload Retry CountЗначениеКоличество новых попыток выгрузок/загрузок блока магнитных головок винчестера в/из парковочной области после неудачной попытки.
224E0Load FrictionНижеВеличина силы трения блока магнитных головок при его выгрузке из парковочной области.
225E1Load Cycle CountНижеЧисло циклов вход-выход в парковочную зону.
226E2Load ‘In’-timeЗначениеВремя, за которое привод выгружает магнитные головки из парковочной области на рабочую поверхность диска.
227E3Torque Amplification CountНижеКоличество попыток скомпенсировать вращающий момент.
228E4Power-Off Retract CycleНижеКоличество повторов автоматической парковки блока магнитных головок в результате выключения питания.
230E6GMR Head AmplitudeЗначениеАмплитуда «дрожания» (расстояние повторяющегося перемещения блока магнитных головок).
231E7TemperatureНижеТемпература жёсткого диска.
240F0Head flying hoursЗначениеВремя позиционирования головки.
250FARead error retry rateНижеЧисло ошибок во время чтения жёсткого диска.

flex — CSS | MDN


flex: none;


flex: 2;


flex: 10em;
flex: 30px;
flex: auto;
flex: content;


flex: 1 30px;


flex: 2 2;


flex: 2 2 10%;


flex: inherit;
flex: initial;
flex: unset;

Значения

<'flex-grow'>
Определяет flex-grow для флекс элемента. Смотри <number> для большей информации. Негативные значения считаются недействительными. Значение по умолчанию  0, если не указано.
<'flex-shrink'>
Определяет flex-shrink для флекс элемента. Смотри <number> для большей информации. Негативные значения считаются недействительными. Значение по умолчанию  1, если не указано.
<'flex-basis'>
Определяет flex-basis для флекс элемента. Любое корректное значение для высоты(height) и ширины(width) — корректно и для данного свойства. Предпочтительный размер 0 должен иметь единицу измерения, чтобы не восприниматься как гибкий. Значение по умолчанию  0%, если не указано.
none
Размер элемента устанавливается в соответствии с его свойствами width и height. Он полностью негибкий: не сжимается и не увеличивается по отношению к гибкому контейнеру. Эквивалентно значению «flex: 0 0 auto«.

Формальный синтаксис

none | (en-US) [ (en-US) <'flex-grow'> <'flex-shrink'>? (en-US) || (en-US) <'flex-basis'> ] (en-US)
#flex-container {
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: row;
	flex-direction: row;
}

#flex-container > .flex-item {
	-webkit-flex: auto;
	flex: auto;
}

#flex-container > .raw-item {
	width: 5rem;
}
<div>
    <div>Flex box (click to toggle raw box)</div>
    <div>Raw box</div>
</div>

Результат

BCD tables only load in the browser

Расшифровка и понимание SMART атрибутов

Маленький рассказ об S.M.A.R.T. атрибутах, их важности и понимании. В статье пойдет речь об расшифровке всех smart атрибутов ATA дисков. В предыдущих статьях речь шла об мониторинге BBU и жестких SCSI дисков и их атрибутов под Megaraid контроллером. Теперь хочу немного описать атрибуты обычных АТА дисков на примере Seagate Barracuda ES.2 (ST31000340NS). Так же определим самые важные атрибуты, на которые нужно обращать внимание при мониторинге дисков используя smartctl. Для начала, можно убедиться, что наш диск поддерживает смарт


root@ s01:~# smartctl -i /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-29-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda ES.2
Device Model:     ST31000340NS
Serial Number:    9QJ2ADVC
…
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Fri Feb 21 16:18:35 2014 CET
…
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Две последние строки свидетельствуют о том, что диск поддерживает smart и можно посмотреть значение всех его атрибутов и их интерпретация будет корректной(интерпретация RAW_VALUE) . В данном случаи тип интерфейса (устройства) не указывался явно (не было указанно атрибут «-d»), по этому smartctl автоматически определил тип устройства и сказал, что «SMART support is: Enabled». Но если используются, к примеру массивы дисков (RAID контроллер), то smartctl может сказать, что смарт не поддерживается:


root@s06:~# smartctl -i /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-26-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

Vendor:               SMC
Product:              SMC2108
Revision:             2.90
User Capacity:        2,996,997,980,160 bytes [2.99 TB]
Logical block size:   512 bytes
Logical Unit id:      0x600304800086531015527e0b0664df74
Serial number:        0074df64060b7e521510538600800403
Device type:          disk
Local Time is:        Fri Feb 21 17:32:27 2014 IST
Device does not support SMART

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


root@s06:~# smartctl -d megaraid,14 -i /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-26-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

Vendor:               SEAGATE
Product:              ST1000NM0001
Revision:             0002
User Capacity:        1,000,204,886,016 bytes [1.00 TB]
Logical block size:   512 bytes
Logical Unit id:      0x5000c50041080343
Serial number:        Z1N0TV980000C2157TYR
Device type:          disk
Transport protocol:   SAS
Local Time is:        Fri Feb 21 17:34:45 2014 IST
Device supports SMART and is Enabled
Temperature Warning Enabled

Также может быть проблема в версии smartctl ибо не все жесткие диски добавляются в базу SMART сразу после выхода в мир нового HDD или RAID контроллера. Или же в BIOS отключено поддержку (нужно включить). Так же может быть проблема в прошивке (firmware) самого жесткого диска. Можете также стоит для начала попытаться включить SMART командой:


root@s01:~# smartctl -s on /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-26-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

Следующая, интересующая нас часть вывода покажет суммарный результат проверки статуса здоровья диска (Если не Passed – нужно проводить замену диска). Так же выводится дополнительные характеристики диска и предполагаемое время выполнения коротких и длинных тестов.


root@s01:~# smartctl -Hc /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-29-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (  41) The self-test routine was interrupted
                                        by the host with a hard or soft reset.
Total time to complete Offline
data collection:                (  634) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 226) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

В нашем случаи тип устройства определился автоматически и теперь можно вывести самое интересное — список атрибутов.


root@s01:~# smartctl -A /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-29-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   068   059   044    Pre-fail  Always       -       130449727
  3 Spin_Up_Time            0x0003   099   099   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       23
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       4
  7 Seek_Error_Rate         0x000f   063   039   030    Pre-fail  Always       -       549998464474
  9 Power_On_Hours          0x0032   052   052   000    Old_age   Always       -       42335
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   037   020    Old_age   Always       -       63
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   093   000    Old_age   Always       -       4295032870
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   076   049   045    Old_age   Always       -       24 (Min/Max 18/26)
194 Temperature_Celsius     0x0022   024   051   000    Old_age   Always       -       24 (0 17 0 0)
195 Hardware_ECC_Recovered  0x001a   041   021   000    Old_age   Always       -       130449727
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

Используя SMART можно предугадать с довольно большой вероятностью проблемы связанные с:

  • Магнитными головками диска
  • Физическими повреждениями диска
  • Логическими ошибками
  • Механическими проблемами (проблемы привода, системы позиционирования)
  • Подачей питания (платы)
  • Температурой

Расшифруем полученный вывод.

Каждый атрибут имеет группу значений:

  • ID# — идентификационный номер атрибуты (детали здесь). Каждый атрибуты имеет свой уникальный ID, который должен быть одинаковым для всех фирм производителей дисков.
  • ATTRIBUTE_NAME – название атрибута. Так как разные фирмы производители дисков могут называть атрибуты по своему (сокращать, синонимы), лучше всего ориентироваться по ID атрибута.
  • FLAG (Status flag) – каждый атрибут имеет определенный флаг, назначенный фирмой разработчиком диска. В ОС с графическим интерфейсом значения этого флага предоставляется в виде набора буквенных обозначений – w,p,r,c,o,s (расшифровка ниже). И эти наборы предоставляются в виде шестнадцатеричного числа которые вы видели выше.
  1. Warranty: Указывает на жизненно важный атрибут диска и покрывается гарантией. Если этот флаг установлен и значение атрибута с этим флагом достигнет порогового (threshold) значения, в то время, когда диск еще на гарантии, то фирма должна будет заменить диск бесплатно.
  2. Performance: Указывает на атрибут, который представляет показатель производительности диска – не критический.
  3. Error Rate: Атрибут с частотой ошибок.
  4. Count of occurrences: Атрибут-счетчик происшествий.
  5. Online test: Атрибут, который обновляет значения только через on-line тесты. Если не указан, то обновляется через off-line тесты.
  6. Self preserving: Указывает на атрибут который может собирать и сохранять данные о диска, даже если S.M.A.R.T. отключен.
  • Value – Текущее значение атрибута(оценка атрибута диска на основе Raw_value). Низкое значение говорит о быстрой деградации диска или о возможном скором сбое. т.е. чем выше значение Value атрибута, тем лучше. Это значение атрибута нужно сравнивать с пороговым (threshold) значением. Если это критический атрибут и значение ниже порогового — нужно проводить замену диска.
  • Worst – Самое низкое значение атрибута за жизненный цикл диска. Значение может изменяться на протяжении жизни диска, и не должно быть ниже или равным пороговому значению (threshold).
  • Thresh (Threshold) – Пороговое значения атрибута назначенное создателем диска. Значение не меняется за жизненный цикл диска. Если значение Value атрибута станет равным или меньше порогового – появиться уведомление в колонке WHEN_FAILED. И диск нужно заменить.
  • Type – тип атрибута. Может быть критическим (pre-fail), который указывает на предстоящий отказ диска из-за ошибок или не критический, указывающий на достижение конца жизненного цикла диска.
  • Raw_value – Объективное значения атрибута, которое показывается в десятичном формате (вычисляется firmware диска) и известных только производителю единицах (имеет связь с Value, Threshold и Worst значениями).
  • WHEN_FAILED – Указывает на проблемы с атрибутом.

Атрибут диска примет значение failed, в случаи:

Value = f(Raw_value) <= Threshold

Здесь:

  • f(Raw_value) – функция вычисления деградации (уменьшения) значения параметра Value в зависимости от значения Raw_value.

Недостатки такого подхода к вычислению деградации диска:

  • Для каждого производителя дисков и даже модели диска функция f(Raw_value) вычисляется по-разному.
  • Оценка каждого атрибута подсчитывается независимо друг от друга – т.е. игнорируются связи между атрибутами.

Теперь хочу представить таблицу с перечисленными всех атрибутов. Те атрибуты, которые выделены розовым — относятся к атрибутам критическим. К тому же, указано тип параметра в зависимости от величины значения. Т.е. чем больше значение параметра, тем лучше состояние здоровья диска или наоборот.

Чем выше значение Value, тем лучше состояние диска.
Чем ниже значение Value, тем лучше состояние диска.
Критический атрибутВ ближайшие время диск выйдет из строя — нужна смена диска

Теперь приступим к атрибутам:

#IDHEXИмя атрибутаЛучше если…Описание
0101Raw Read Error RateЧастота ошибок при чтении данных с жёсткого диска. Происхождение их обусловлено аппаратной частью винчестера.
0202Throughput PerformanceОбщая производительность накопителя. Если значение атрибута уменьшается перманентно, то велика вероятность проблем с винчестером.
0303Spin-Up TimeВремя раскрутки шпинделя из состояния покоя (0 rpm) до рабочей скорости. В поле Raw_value содержится время в миллисекундах/секундах в зависимости от производителя
0404Start/Stop Count*Полное число запусков, остановок шпинделя. Иногда в том числе количество включений режима энергосбережения. В поле raw value хранится общее количество запусков/остановок жёсткого диска.
0505Reallocated Sectors CountЧисло операций переназначения секторов. При обнаружении повреждённого сектора на винчестере, информация из него помечается и переносится в специально отведённую зону, происходит утилизация bad блоков, с последующим консервированием этих мест на диске. Этот процесс называют remapping. Чем больше значение Reallocated Sectors Count, тем хуже состояние поверхности дисков — физический износ поверхности. Поле raw value содержит общее количество переназначенных секторов.
0707Seek Error RateЧастота ошибок при позиционировании блока магнитных головок. Чем больше значение, тем хуже состояние механики, или поверхности жёсткого диска.
0808Seek Time PerformanceСредняя производительность операции позиционирования. Если значение атрибута уменьшается, то велика вероятность проблем с механической частью.
0909Power-On Hours (POH)Время, проведённое устройством, во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ.
100ASpin-Up Retry CountЧисло повторных попыток раскрутки дисков до рабочей скорости в случае, если первая попытка была неудачной.
110BRecalibration RetriesКоличество повторов рекалибровки в случае, если первая попытка была неудачной.
120CDevice Power Cycle CountЧисло циклов включения-выключения винчестера.
130DSoft Read Error RateЧисло ошибок при чтении, по вине программного обеспечения, которые не поддались исправлению.
187BBReported UNC ErrorsНеустранимые аппаратные ошибки.
190BEAirflow TemperatureТемпература воздуха внутри корпуса жёсткого диска. Целое значение, либо значение по формуле 100 — Airflow Temperature
191BFG-sense error rateКоличество ошибок, возникающих в результате ударов.
192C0Power-off retract countЧисло циклов аварийных выключений.
193C1Load/Unload CycleКоличество циклов перемещения блока головок в парковочную зону.
194C2HDA temperatureПоказания встроенного термодатчика накопителя.
195C3Hardware ECC RecoveredЧисло коррекции ошибок аппаратной частью диска (ошибок чтения, ошибок позиционирования, ошибок передачи по внешнему интерфейсу).
196C4Reallocation Event CountЧисло операций переназначения в резервную область, успешные и неудавшиеся попытки.
197C5Current Pending Sector CountЧисло секторов- кандидатов на перенос в резервную зону. Помечены как не надёжные. При последующих корректных операциях атрибут может быть снят.
198C6Uncorrectable Sector CountЧисло некорректируемых ошибок при обращении к сектору.
199C7UltraDMA CRC Error CountЧисло ошибок при передаче данных по внешнему интерфейсу.
200C8Write Error Rate /Multi-Zone Error RateОбщее количество ошибок при заполнения сектора информацией. Показатель качества накопителя.
201C9Soft read error rateЧастота появления «программных» ошибок при чтении данных с диска, а не аппаратной части HDD.
202CaData Address Mark errorsЧисло ошибок адресно помеченной информации (Data Address Mark (DAM)).Если автоматически не корректируется — заменить устройство.
203CBRun out cancelКоличество ошибок ECC данных, присоединяемые к передаваемому сигналу, позволяющие принимающей стороне определить факт сбоя или исправить несущественную ошибку.
204CCSoft ECC correctionКоличество ошибок ECC, скорректированных программным способом.
205CDThermal asperity rate (TAR)Число ошибок в следствии температурных колебаний.
206CEFlying height*Высота между головкой и поверхностью диска компьютера.
209D1Offline seek performance*Drive’s seek performance during offline operations.
220DCDisk ShiftДистанция смещения блока дисков относительно шпинделя. В основном возникает из-за удара или падения.
221DDG-Sense Error RateЧисло ошибок, возникших из-за внешних нагрузок и ударов. Атрибут хранит показания встроенного crash датчика.
222DELoaded Hours*Время, проведённое блоком магнитных головок между выгрузкой из парковочной области в рабочую область диска и загрузкой блока обратно в парковочную область.
223DFLoad/Unload Retry Count*Количество новых попыток выгрузок/загрузок блока магнитных головок винчестера в/из парковочной области после неудачной попытки.
224E0Load FrictionВеличина силы трения блока магнитных головок при его выгрузке из парковочной области.
225E1Load Cycle CountЧисло циклов вход-выход в парковочную зону.
226E2Load ‘In’-time*Время, за которое привод выгружает магнитные головки из парковочной области на рабочую поверхность диска.
227E3Torque Amplification CountКоличество попыток скомпенсировать вращающий момент.
228E4Power-Off Retract CycleКоличество повторов автоматической парковки блока магнитных головок в результате выключения питания.
230E6GMR Head Amplitude*Амплитуда «дрожания» (расстояние повторяющегося перемещения блока магнитных головок).
231E7TemperatureТемпература жёсткого диска.
240F0Head flying hours*Время позиционирования головки.
250FARead error retry rateЧисло ошибок во время чтения жёсткого диска.

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

Как пользоваться CrystalDiskInfo | Windd.ru

Программа CrystalDiskInfo уже давно завоевала внимание пользователей. С её помощью можно проверить техническое состояние SSD и HDD дисков. Поддерживает накопители USB, Intel / AMD RAID и NVMe. Она отлично подходит для просмотра здоровья диска, но не для его лечения.

Эта статья расскажет, как пользоваться CrystalDiskInfo. На какие параметры стоит обратить внимание в первую очередь. Встроенный анализ S.M.A.R.T. позволяет получить все подробные данные о состоянии накопителя. Загрузить её можно бесплатно и проверить состояние своего накопителя.

Как пользоваться программой CrystalDiskInfo

На официальном сайте производителя можно загрузить несколько версий программы CrystalDiskInfo. По сути, они отличаются только внешним видом интерфейса (скином). Доступны Standard, Shizuku и Kurei Kei Edition.

Программа отображает как техническую информацию (наименование диска, объём и температура), так и данные анализа S.M.A.R.T. (сколько раз было включено питание, продолжительность использования и другие).

  • Техсостояние  — можно увидеть следующие значения: хорошо (синий или зелёный), внимание (жёлтый), плохо (красный), неизвестно (серый). Показывает примерное здоровье накопителя.
  • Температура — соблюдение температурного режима для накопителей очень важно. Превышение максимального значения всегда плохо сказывается на работоспособности комплектующих.
  • Общее время работы — время работы в твердотельных накопителей очень большое. Но всё же они не вечны, в сравнении с модулями ОЗУ. Показывает сколько времени накопитель работал.
  • Число включений — показывает сколько раз компьютер включался (а точнее, сам накопитель). Большое число включений не критично. Для SSD дисков учитывается время перезаписи данных.

 Расшифровка параметров S.M.A.R.T.

Каждый атрибут S.M.A.R.T. имеет несколько основных полей. Каждое относится к определённому классу: ID, Атрибут, Текущее, Наихудшее, Порог и RAW-значения. Все параметры переведены на русский язык и не нуждаются в описании.

  • ID — номер атрибута в анализе S.M.A.R.T. Идентификатор всегда однозначно определяет атрибут. Полезно в случае программ, которые переводят общепринятое название атрибута с английского языка на русский.
  • Атрибут — точное название теста SMART. Описание всех тестов можно с лёгкостью найти в Интернете. В принципе всё и так понятно, поскольку выводится текущее и пороговое значения.
  • Текущее — протестированные значение атрибута SMART в данный момент. Обычно указывается в процентах оставшегося ресурса, но не для всех параметров (например, температура указывается иначе).
  • Наихудшее — крайнее значение, до которого опускался (поднимался) показатель в момент использования накопителя. Например, значение температуры может сейчас быть меньше чем вчера.
  • Порог — при достижении порогового значения нужно задуматься о состоянии диска. Именно пороговое значение говорит о необходимости замены накопителя в срочном порядке.
  • RAW-значение — текущее значение атрибута в шестнадцатеричном виде. Можно переключить на десятичную. Этот показатель по факту бесполезный для обычного пользователя.

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

Настройка состояния здоровья

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

Переназначенные сектораОбозначает количество операций переназначения секторов. Если обнаруживается неоднократная ошибка чтения или записи, диск перемещает сектор в специальный резервный раздел. Сбойные сектора заменяются резервными.
Нестабильные сектораЭто сектора, по которым ожидается решение. Скорее всего, при чтении сектора у контроллера возникают некие затруднения (не удалось прочитать сектор с первого раза, медленное чтение). Причиной становятся сбои или внезапного отключения.
Неисправимые ошибки секторовРост значения параметра неисправимых ошибок указывает либо на то, что в резервной области диска закончилось место, либо на физическое разрушение магнитной поверхности диска или серьёзные проблемы в работе механики накопителя.

Заключение

Использование программ CrystalDiskInfo никак не излечит Ваш накопитель от проблемных секторов. Это скорее информационная утилита. Предоставляет данные о текущем состоянии Вашего диска. Работает как с обычными жёсткими дисками, так и твердотельными накопителями.

Для восстановления битых секторов можно воспользоваться программой Victoria HDD. В принципе для проверки состояния SSD накопителей существует ещё много полезных программ. Смотрите более подробно, как проверить SSD диск на исправность & ошибки.

Шифрование И Расшифровка С Использованием Pycrypto Aes 256

Позвольте мне ответить на ваш вопрос о «режимах». AES256 — это разновидность блочного шифра. Он принимает в качестве входных данных 32-байтовый ключ и 16-байтовую строку, называемую блоком, и выводит блок. Мы используем AES в режиме работы для шифрования. Приведенные выше решения предлагают использовать CBC, что является одним из примеров. Другой называется CTR, и его несколько проще использовать:

from Crypto.Cipher import AES
from Crypto.Util import Counter
from Crypto import Random

# AES supports multiple key sizes: 16 (AES128), 24 (AES192), or 32 (AES256).
key_bytes = 32

# Takes as input a 32-byte key and an arbitrary-length plaintext and returns a
# pair (iv, ciphtertext). "iv" stands for initialization vector.
def encrypt(key, plaintext):
assert len(key) == key_bytes

# Choose a random, 16-byte IV.
iv = Random.new().read(AES.block_size)

# Convert the IV to a Python integer.
iv_int = int(binascii.hexlify(iv), 16)

# Create a new Counter object with IV = iv_int.
ctr = Counter.new(AES.block_size * 8, initial_value=iv_int)

# Create AES-CTR cipher.
aes = AES.new(key, AES.MODE_CTR, counter=ctr)

# Encrypt and return IV and ciphertext.
ciphertext = aes.encrypt(plaintext)
return (iv, ciphertext)

# Takes as input a 32-byte key, a 16-byte IV, and a ciphertext, and outputs the
# corresponding plaintext.
def decrypt(key, iv, ciphertext):
assert len(key) == key_bytes

# Initialize counter for decryption. iv should be the same as the output of
# encrypt().
iv_int = int(iv.encode('hex'), 16)
ctr = Counter.new(AES.block_size * 8, initial_value=iv_int)

# Create AES-CTR cipher.
aes = AES.new(key, AES.MODE_CTR, counter=ctr)

# Decrypt and return the plaintext.
plaintext = aes.decrypt(ciphertext)
return plaintext

(iv, ciphertext) = encrypt(key, 'hella')
print decrypt(key, iv, ciphertext)

Это часто называют AES-CTR. Я бы посоветовал осторожность при использовании AES-CBC с PyCrypto. Причина в том, что для этого требуется указать схему заполнения, что подтверждается другими приведенными решениями. В общем, если вы не очень осторожны с заполнением, существуют атаки, которые полностью нарушают шифрование!

Теперь важно отметить, что ключ должен быть случайной 32-байтовой строкой; пароль не достаточно. Обычно ключ генерируется так:

# Nominal way to generate a fresh key. This calls the system random number
# generator (RNG).
key1 = Random.new().read(key_bytes)

Ключ также может быть получен из пароля:

# It also possible to derive a key from a password, but it important that
# the password have high entropy, meaning difficult to predict.
password = "This is a rather weak password."

# For added # security, we add a "salt", which increases the entropy.
#
# In this example, we use the same RNG to produce the salt that we used to
# produce key1.
salt_bytes = 8
salt = Random.new().read(salt_bytes)

# Stands for "Password-based key derivation function 2"
key2 = PBKDF2(password, salt, key_bytes)

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

Расшифровка параметров SMART HDD теста

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

Recalibration Retries — Количество повторов попыток рекалибровки накопителя. Данный атрибут фиксирует общее количество попыток сброса состояния накопителя и установки головок на нулевую дорожку, при условии, что первая попытка была неудачной. Снижение значения этого атрибута говорит о неполадках в механике привода.

Seek Time Performance — Средняя производительность операций позиционирования БМГ. Данный параметр показывает среднюю скорость позиционирования привода БМГ на указанный сектор. Снижение значения этого атрибута говорит о неполадках в механике привода.

Spin Retry Count — Количество повторов попыток старта шпинделя диска. Данный атрибут фиксирует общее количество попыток раскрутки шпинделя и его выхода на рабочую скорость, при условии, что первая попытка была неудачной. Снижение значения этого атрибута говорит о неполадках в механике привода.

Spin Up Time — Время раскрутки шпинделя. Среднее время раскрутки шпинделя диска от 0 RPM до рабочей скорости. Предположительно, в поле raw value содержится время в миллисекундах/секундах. 

Start/Stop Count — Количество циклов запуск/останов шпинделя. Поле raw value хранит общее количество включений/выключений диска.

Throughput Performance — Средняя производительность (пропускная способность) диска. Уменьшение значения value этого атрибута с большой вероятностью указывает на проблемы в накопителе.

Seek Error Rate — Частота появления ошибок позиционирования БМГ. В случае сбоя в механической системе позиционирования, повреждения сервометок (servo), сильного термического расширения дисков и т.п. возникают ошибки позиционирования. Чем их больше, тем хуже механики и/или поверхности жесткого диска.

Seek Time Performance — Средняя производительность операций позиционирования БМГ. Данный параметр показывает среднюю скорость позиционирования привода БМГ на указанный сектор. Снижение значения этого атрибута говорит о неполадках в механике привода.

Power-Off Retract Count — Количество зафиксированных повторов в(ы)ключения питания накопителя.

Recalibration Retries — Количество повторов попыток рекалибровки накопителя. Данный атрибут фиксирует общее количество попыток сброса состояния накопителя и установки головок на нулевую дорожку, при условии, что первая попытка была неудачной. Снижение значения этого атрибута говорит о неполадках в механике привода.

Soft Read Error Rate — Частота появления «программных» ошибок при чтении данных с диска. Данный параметр показывает частоту появления ошибок при операциях чтения с поверхности диска по вине программного обеспечения, а не аппаратной части накопителя.

Load/Unload Cycle Count — Количество циклов вывода БМГ в специальную парковочную зону/в рабочее положение. Подробнее — см. описание технологии Head Load/Unload Technology.

Reallocation Event Count — Количество операций переназначения (ремаппинга). Поле raw value этого атрибута показывает общее количество попыток переназначения сбойных секторов в резервную область, предпринятых накопителем. При этом, учитываются как успешные, так и неудачные операции.

Torque Amplification Count — Количество усилий вращающего момента привода.

Uncorrectable Sector Count — Количество нескорректированных ошибок. Атрибут показывает общее количество ошибок, возникших при чтении/записи сектора и которые не удалось скорректировать. Рост значения в поле raw value этого атрибута указывает на явные дефекты поверхности и/или проблемы в работе механики накопителя.

UltraDMA CRC Error Count — Общее количество ошибок CRC в режиме UltraDMA. Поле raw value содержит количество ошибок, возникших в режиме передачи данных UltraDMA в контрольной сумме (ICRC — Interface CRC). Примечание автора. Практика, собранная статистика и изучение журналов ошибок SMART показывают: в большинстве случаев ошибки CRC возникают при сильном завышении частоты PCI (больше номинальных 33.6 MHz), сильно перекрученом кабеле, а также — по вине драйверов ОС, которые не соблюдают требований к передачи/приему данных в режимах UltraDMA.

Write Error Rate (Multi Zone Error Rate)- Частота появления ошибок при записи данных. Показывает общее количество ошибок, обнаруженных во время записи сектора. Чем больше значение в поле raw value (и ниже значение value), тем хуже состояние поверхности диска и/или механики привода.

Иногда полностью зашифрованный диск невозможно расшифровать с помощью DETech (DE) или в процессе шифрования / дешифрования. Проблема часто связана с тем, что на жестком диске имеется один или несколько поврежденных секторов, из-за которых DE сообщает об ошибке.

ПРИМЕЧАНИЕ: Эта статья не относится к дискам с шифрованием Opal.

Эта статья помогает дать совет, когда компьютер:

  • Невозможно расшифровать с помощью функции «Удалить DE» в инструменте восстановления DETech.
  • Отображает ошибку о поврежденных секторах.
  • Отображает ошибку о повреждении MBR / PBFS / SBFS, при которой аварийная загрузка не может решить проблему.

Рекомендации по расшифровке зашифрованного жесткого диска вручную:

  • Специалисты по продукту всегда рекомендуют удалить DE перед принудительной дешифровкой. Принудительное дешифрование — это последний метод дешифрования жесткого диска.
  • Специалисты по продукту рекомендуют выполнить дефрагментацию и запустить chkdsk, прежде чем включит полное шифрование диска DE (FDE).Эти действия рекомендуется использовать перед шифрованием или расшифровкой жесткого диска, поскольку они могут помочь избежать последующих ошибок и потенциальной потери данных.
  • Для критически важных данных скопируйте жесткий диск на идентичную часть оборудования. Посекторный клон без сжатия должен использоваться для сохранения точной копии диска.
    ПРИМЕЧАНИЕ. Также известен как съемка изображения в формате RAW.
  • Убедитесь, что вы можете расшифровать данные в Workspace , загрузив зашифрованные секторы.Убедившись, что вы можете расшифровать диск, принудительно расшифруйте данные, указав номер начального сектора и диапазон. Запишите информацию об используемом диске на тот случай, если вам потребуется обратиться в службу технической поддержки и устранить неполадки.

ВАЖНО:

  • McAfee несет ответственность , а не за потерю данных из Force Decryption . Команда разработчиков рекомендует всегда выполнять резервное копирование жесткого диска на уровне секторов (RAW / CLONE), чтобы избежать потери данных.Примерами продуктов для резервного копирования на уровне секторов являются Paragon, Acronis или Ghost.

    ПРЕДУПРЕЖДЕНИЕ: Если резервная копия на уровне сектора не создана и процесс завершился неудачно, возможна безвозвратная потеря данных.

  • Для советов в этой статье требуется обученный инженер McAfee Encryption. Инженеру важно указать правильные начальный и конечный секторы для полного восстановления данных. При необходимости обратитесь в службу технической поддержки за помощью.
    • Если вы зарегистрированный пользователь, введите свой идентификатор пользователя и пароль, а затем щелкните Войти .
    • Если вы не являетесь зарегистрированным пользователем, нажмите Зарегистрировать и заполните поля, чтобы ваш пароль и инструкции были отправлены вам по электронной почте.

Шифрование и дешифрование AES 256 в Python

Следующая программа на Python демонстрирует, как выполнять шифрование и дешифрование AES 256 с использованием библиотеки pycrypto . Обратите внимание, что этот пример написан на Python 3.

Сначала убедитесь, что в вашей системе установлена ​​библиотека pycrypto , выполнив следующую команду,

pip3 установить pycrypto

В следующей программе на Python 3 мы используем классы pycrypto для шифрования и дешифрования AES 256.Программа запрашивает у пользователя пароль (кодовую фразу) для шифрования данных. Эта кодовая фраза преобразуется в хеш-значение перед использованием в качестве ключа для шифрования. Следующая программа шифрует образец текста, а затем выводит на консоль как зашифрованное, так и расшифрованное сообщение.

 # Шифрование / дешифрование AES 256 с использованием библиотеки pycrypto

импорт base64
импортировать хэш-библиотеку
из Crypto.Cipher импортировать AES
из Crypto import Random

BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - длина (s)% BLOCK_SIZE) * chr (BLOCK_SIZE - длина (s)% BLOCK_SIZE)
unpad = лямбда s: s [: - ord (s [len (s) - 1:])]

password = input ("Введите пароль шифрования:")


def encrypt (raw, пароль):
    private_key = hashlib.sha256 (пароль.encode ("utf-8")). digest ()
    raw = pad (необработанный)
    iv = Random.new (). read (AES.block_size)
    cipher = AES.new (private_key, AES.MODE_CBC, iv)
    вернуть base64.b64encode (iv + cipher.encrypt (raw))


def decrypt (enc, пароль):
    private_key = hashlib.sha256 (пароль.encode ("utf-8")). digest ()
    enc = base64.b64decode (код)
    iv = enc [: 16]
    cipher = AES.new (private_key, AES.MODE_CBC, iv)
    вернуть unpad (cipher.decrypt (enc [16:]))


# Сначала зашифруем секретное сообщение
encrypted = encrypt («Это секретное сообщение», пароль)
печать (зашифрованная)

# Давайте расшифруем, используя наш оригинальный пароль
decrypted = расшифровать (зашифровано, пароль)
печать (байты.декодировать (расшифровывать)) 

Вот эта программа в действии,

python3 aes_encryption.py
Введите пароль шифрования: мой пароль
b’sYjpPpTpPFSvdsvhTRQrNnyD669siUFtpziX8JrdFDF1zM9PF8kWbjDUnC9uS7lp ‘
Это секретное сообщение

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

.

 # Шифрование / дешифрование AES 256 с использованием библиотеки pycrypto

импорт base64
от Crypto.Импорт шифра AES
из Crypto import Random
из Crypto.Protocol.KDF импортировать PBKDF2

BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - длина (s)% BLOCK_SIZE) * chr (BLOCK_SIZE - длина (s)% BLOCK_SIZE)
unpad = лямбда s: s [: - ord (s [len (s) - 1:])]

password = input ("Введите пароль шифрования:")


def get_private_key (пароль):
    salt = b "это соль"
    kdf = PBKDF2 (пароль, соль, 64, 1000)
    key = kdf [: 32]
    ключ возврата


def encrypt (raw, пароль):
    private_key = get_private_key (пароль)
    raw = pad (необработанный)
    iv = Случайно.новый (). читать (AES.block_size)
    cipher = AES.new (private_key, AES.MODE_CBC, iv)
    вернуть base64.b64encode (iv + cipher.encrypt (raw))


def decrypt (enc, пароль):
    private_key = get_private_key (пароль)
    enc = base64.b64decode (код)
    iv = enc [: 16]
    cipher = AES.new (private_key, AES.MODE_CBC, iv)
    вернуть unpad (cipher.decrypt (enc [16:]))


# Сначала зашифруем секретное сообщение
encrypted = encrypt («Это секретное сообщение», пароль)
печать (зашифрованная)

# Давайте расшифруем, используя наш оригинальный пароль
decrypted = расшифровать (зашифровано, пароль)
печать (байты.декодировать (расшифровывать)) 

с использованием сырого ключа — документация Shaka Packager

Shaka Packager поддерживает необработанные ключи, для которых предоставляются ключи и идентификаторы ключей.
Shaka Packager напрямую.

Это часто используется, если вы сами управляете ключами шифрования. Это также
позволяет поддерживать мульти-DRM, предоставляя настраиваемые PSSH.

Сводка

 $ packager <дескриптор_стрима> ... \
  --enable_raw_key_encryption \
  --keys  [, ]... \
  [--pssh ] \
  [Другие варианты, например Параметры DASH, параметры HLS]
 

key_info_string имеет вид:

 label = 

Пользовательские PSSH могут быть предоставлены в –pssh . Если ни –pssh, ни
–Protection_systems указано, v1 common PSSH box
генерируется.

Примеры

В приведенных ниже примерах используются потоки h364, созданные в режиме кодирования мультимедиа.

  • Пример с предварительно созданным PSSH:

     $ упаковщик \
      in = h364_baseline_360p_600.mp4, stream = audio, output = audio.mp4, drm_label = AUDIO \
      in = h364_baseline_360p_600.mp4, stream = video, output = h364_360p.mp4, drm_label = SD \
      in = h364_main_480p_1000.mp4, stream = video, output = h364_480p.mp4, drm_label = SD \
      in = h364_main_720p_3000.mp4, stream = video, output = h364_720p.mp4, drm_label = HD \
      in = h364_high_1080p_6000.mp4, stream = video, output = h364_1080p.mp4, drm_label = HD \
      --enable_raw_key_encryption \
      --keys метка = AUDIO: KEY_ID = f3c5e0361e6654b28f8049c778b23946: ключ = a4631a153a443df9eed0593043db7519, метка = SD: KEY_ID = abba271e8bcf552bbd2e86a434a9a5d9: ключ = 69eaa802a6763af979e8d1940fb88392, метка = HD: KEY_ID = 6d76f25cb17f5e16b8eaef6bbf582d8e: ключ = cb541084c99731aef4fff74500c12ead \
      --pssh 000000317073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED00000011220F7465737420636F6E74656E74206964 \
      --mpd_output h364.mpd \
      --hls_master_playlist_output h364_master.m3u8
     
  • Общий PSSH генерируется, если не указан PSSH или флаг системы защиты:

     $ упаковщик \
      in = h364_baseline_360p_600.mp4, stream = audio, output = audio.mp4, drm_label = AUDIO \
      in = h364_baseline_360p_600.mp4, stream = video, output = h364_360p.mp4, drm_label = SD \
      in = h364_main_480p_1000.mp4, stream = video, output = h364_480p.mp4, drm_label = SD \
      in = h364_main_720p_3000.mp4, stream = video, output = h364_720p.mp4, drm_label = HD \
      в = h364_high_1080p_6000.mp4, поток = видео, вывод = h364_1080p.mp4, drm_label = HD \
      --enable_raw_key_encryption \
      --keys метка = AUDIO: KEY_ID = f3c5e0361e6654b28f8049c778b23946: ключ = a4631a153a443df9eed0593043db7519, метка = SD: KEY_ID = abba271e8bcf552bbd2e86a434a9a5d9: ключ = 69eaa802a6763af979e8d1940fb88392, метка = HD: KEY_ID = 6d76f25cb17f5e16b8eaef6bbf582d8e: ключ = cb541084c99731aef4fff74500c12ead \
      --mpd_output h364.mpd
     
  • Пример FairPlay с использованием схемы защиты «cbcs»:

     $ упаковщик \
      in = h364_baseline_360p_600.mp4, stream = audio, output = audio.mp4, drm_label = AUDIO \
      in = h364_baseline_360p_600.mp4, stream = video, output = h364_360p.mp4, drm_label = SD \
      in = h364_main_480p_1000.mp4, stream = video, output = h364_480p.mp4, drm_label = SD \
      in = h364_main_720p_3000.mp4, stream = video, output = h364_720p.mp4, drm_label = HD \
      in = h364_high_1080p_6000.mp4, stream = video, output = h364_1080p.mp4, drm_label = HD \
      --protection_scheme cbcs \
      --enable_raw_key_encryption \
      --keys этикетка = AUDIO: KEY_ID = f3c5e0361e6654b28f8049c778b23946: ключ = a4631a153a443df9eed0593043db7519: IV = 11223344556677889
  • 2233445566, метка = SD: KEY_ID = abba271e8bcf552bbd2e86a434a9a5d9: ключ = 69eaa802a6763af979e8d1940fb88392: IV = 223344556677889
  • 223344556677, метка = HD: KEY_ID = 6d76f25cb17f5e16b8eaef6bbf582d8e: ключ = cb541084c99731aef4fff74500c12ead: IV = 3344556677889
  • 22334455667788 \ --protection_systems FairPlay \ --hls_master_playlist_output h364_master.m3u8 \ --hls_key_uri skd: // testAssetID
  • Пример с несколькими DRM (Widevine и PlayReady):

     $ упаковщик \
      in = h364_baseline_360p_600.mp4, stream = audio, output = audio.mp4, drm_label = AUDIO \
      in = h364_baseline_360p_600.mp4, stream = video, output = h364_360p.mp4, drm_label = SD \
      in = h364_main_480p_1000.mp4, stream = video, output = h364_480p.mp4, drm_label = SD \
      in = h364_main_720p_3000.mp4, stream = video, output = h364_720p.mp4, drm_label = HD \
      in = h364_high_1080p_6000.mp4, stream = video, output = h364_1080p.mp4, drm_label = HD \
      --enable_raw_key_encryption \
      --keys метка = AUDIO: KEY_ID = f3c5e0361e6654b28f8049c778b23946: ключ = a4631a153a443df9eed0593043db7519, метка = SD: KEY_ID = abba271e8bcf552bbd2e86a434a9a5d9: ключ = 69eaa802a6763af979e8d1940fb88392, метка = HD: KEY_ID = 6d76f25cb17f5e16b8eaef6bbf582d8e: ключ = cb541084c99731aef4fff74500c12ead \
      --protection_systems Widevine, PlayReady \
      --mpd_output h364.mpd
     
  • Пример с LAURL:

     $ упаковщик \
      in = h364_baseline_360p_600.mp4, stream = audio, output = audio.mp4, drm_label = АУДИО \
      in = h364_baseline_360p_600.mp4, stream = video, output = h364_360p.mp4, drm_label = SD \
      in = h364_main_480p_1000.mp4, stream = video, output = h364_480p.mp4, drm_label = SD \
      in = h364_main_720p_3000.mp4, stream = video, output = h364_720p.mp4, drm_label = HD \
      in = h364_high_1080p_6000.mp4, stream = video, output = h364_1080p.mp4, drm_label = HD \
      --enable_raw_key_encryption \
      --keys метка = AUDIO: KEY_ID = f3c5e0361e6654b28f8049c778b23946: ключ = a4631a153a443df9eed0593043db7519, метка = SD: KEY_ID = abba271e8bcf552bbd2e86a434a9a5d9: ключ = 69eaa802a6763af979e8d1940fb88392, метка = HD: KEY_ID = 6d76f25cb17f5e16b8eaef6bbf582d8e: ключ = cb541084c99731aef4fff74500c12ead \
      --protection_systems PlayReady \
      --playready_extra_header_data ' https: // пример.com / pr  '\
      --mpd_output h364.mpd
     

Примечание

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

См.
настройка плеера
о том, как настроить DRM в Shaka Player.

Тестовые векторы, используемые в этом руководстве

ID ключа

SD: abba271e8bcf552bbd2e86a434a9a5d9

HD: 6d76f25cb17f5e16b8eaef6bbf582d8e

АУДИО: f3c5e0361e6654b28f8049c778b23946

Идентификатор ключа должен состоять из 16 байтов или 32 цифр в шестнадцатеричном формате.

Ключ

SD: 69eaa802a6763af979e8d1940fb88392

HD: cb541084c99731aef4fff74500c12ead

АУДИО: a4631a153a443df9eed0593043db7519

Ключ должен состоять из 16 байтов или 32 цифр в шестнадцатеричном формате.

Widevine ПСШ

PSSH 00000031707373… генерируется с использованием
Скрипт pssh-box:

 $ pssh-box.py --widevine-system-id \
  --content-id 7465737420636f6e74656e74206964 --hex
 

Варианты конфигурации

Поля дескриптора потока, связанные с DRM

skip_encryption = 0 | 1

Необязательно.По умолчанию 0, если не указано. Если он установлен в 1, без шифрования
потока будет сделано.

drm_label

Дополнительное значение для настраиваемой метки DRM, которая определяет ключ шифрования
применяется к потоку. Обычно значения включают AUDIO, SD, HD, UHD1, UHD2.
Для необработанного ключа это должна быть метка, определенная в –keys. Если не указано,
Метка DRM зависит от типа потока (видео, аудио), разрешения и т. Д.
Обратите внимание, что это чувствительно к регистру.

Общие параметры шифрования

--protection_scheme

Укажите схему защиты, «cenc» или «cbc1», или защиту на основе шаблонов
схемы «ценз» или «cbcs».

--crypt_byte_block

Укажите количество зашифрованных блоков в шаблоне защиты, где
блок имеет размер 16 байт.

Есть три общих шаблона (crypt_byte_block: skip_byte_block):
1: 9 (по умолчанию), 5: 5, 10: 0.

Применяется только к видеопотокам со схемами защиты «cbcs» и «cens»;
в противном случае игнорируется.

--skip_byte_block

Укажите количество незашифрованных блоков в шаблоне защиты.

Применяется только к видеопотокам со схемами защиты «cbcs» и «cens»;
в противном случае игнорируется.

--vp9_subsample_encryption, --novp9_subsample_encryption

Включение / отключение шифрования подвыборки VP9. Включено по умолчанию.

--clear_lead <секунды>

Очистить опережение в секундах, если включено шифрование.
Shaka Packager не поддерживает частичные зашифрованные сегменты, все
сегменты, включая частичный, перекрывающийся с начальным
«Clear_lead» секунды не зашифрованы со всеми следующими сегментами
зашифрованный.Если segment_duration больше, чем «clear_lead», то только
первый сегмент не зашифрован.
По умолчанию: 5

--protection_systems

Должны быть созданы системы защиты. Поддерживаемые системы защиты включают
Widevine, PlayReady, FairPlay, Marlin и
CommonSystem.

--playready_extra_header_data <строка>

Дополнительные данные XML для добавления к данным PlayReady PSSH. Может быть указано, даже если
используя другой ключевой источник.

Параметры шифрования с необработанным ключом

--enable_raw_key_encryption

Включить шифрование с необработанным ключом (ключи указаны в командной строке). Этот
генерирует единую систему защиты, если ни
–Pssh или –protection_systems не указаны. Используйте –pssh, чтобы указать собственный
системы защиты или используйте –protection_systems для создания защиты
системы автоматически.

--enable_raw_key_decryption

Включить дешифрование с помощью сырого ключа (ключи указаны в командной строке).

--keys

key_info_string имеет вид:

 label = 

метка может быть произвольной строкой или предопределенной меткой DRM, например AUDIO,
SD, HD и т. Д. Метка с пустой строкой указывает ключ по умолчанию и
key_id. drm_label в дескрипторах потока,
который может быть неявным, определяет, какая ключевая информация применяется к потоку
сопоставив drm_label с меткой в ключевой информации.

key_id и key должны быть 32-значными шестнадцатеричными строками.

initialization_vector — это дополнительный IV с тем же форматом и семантикой
в качестве параметра для опции –iv ниже. Это взаимоисключающе с
этот вариант.

--iv <16- или 32-значная шестнадцатеричная строка>

IV в формате шестнадцатеричной строки. Если не указано иное, будет сгенерирован случайный IV.
Этот флаг следует использовать только для тестирования.IV должен быть либо 8 байтов
(16 цифр в HEX) или 16 байт (32 цифры в HEX).

--pssh <шестнадцатеричная строка>

Один или несколько объединенных блоков PSSH в формате шестнадцатеричной строки. Если ни это
не указан флаг ни –protection_systems,
Будет сгенерирован общий блок PSSH v1.

pssh-box (Утилита для генерации боксов PSSH)

https://github.com/google/shaka-packager/tree/master/packager/tools/pssh

Расшифровка данных

— развертывание

Вам может потребоваться расшифровать данные из зашифрованного кластера Dgraph по разным причинам, в том числе:

  • Миграция данных из зашифрованного кластера в незашифрованный кластер
  • Изменение данных или схемы путем непосредственного редактирования файла RDF или файла схемы

Для поддержки этих сценариев Dgraph включает команду decrypt , которая расшифровывает зашифрованные файлы RDF и схемы.Чтобы узнать, как экспортировать RDF
и файлы схемы из Dgraph, см.:
Администрирование Dgraph: Экспорт базы данных.

Команда decrypt поддерживает различные длины симметричных ключей, которые
определить шифр AES, используемый для шифрования и дешифрования, следующим образом:

Симметричная длина ключа шифр шифрования AES
128 бит (16 байт) AES-128
192 бит (24 байта) AES-192
256 бит (32 байта) AES-256

Команда decrypt также поддерживает использование Hashicorp Vault для хранения секретов, включая поддержку Vault
AppRole аутентификация.

Варианты расшифровки

Для команды decrypt доступны следующие параметры дешифрования (или флаги ):

Флаг или суперфлаг Superflag Опция Банкноты
- шифрование ключевой файл Имя файла ключа шифрования
-f , --файл Путь к файлу зашифрованного RDF или схемы .gz файл
-h , --help Справка по команде дешифрования
, -вых Путь к файлу для дешифрованного файла .gz , который при расшифровке создает
- хранилище адрес Адрес сервера Vault, в http: // < ip-address >: < порт > формат (по умолчанию: http: // localhost: 8200 )
поле ввода Имя поля хранилища ключей / значений сервера Vault, содержащего ключ шифрования Base64
формат кодирования Формат поля сервера хранилища; может быть raw или base64 (по умолчанию: base64 )
путь Путь к хранилищу ключей / значений сервера хранилища (по умолчанию: secret / data / dgraph )
файл идентификатора роли Файл, содержащий Vault role_id , используемый для аутентификации AppRole
файл секретного идентификатора Файл, содержащий Vault secret_id , используемый для аутентификации AppRole

Чтобы узнать больше о суперфлаге --vault и его параметрах, которые заменили параметры --vault_ * в выпуске v20.11 и ранее, см.
Справочник команд интерфейса командной строки Dgraph.

Примеры расшифровки данных

Например, вы можете использовать следующую команду с зашифрованным файлом RDF
( encrypted.rdf.gz ) и файл ключа шифрования ( enc_key_file ), чтобы
создать расшифрованный файл RDF:

  # Ключ шифрования из пути к файлу
dgraph decrypt --file "encrypted.rdf.gz" --out "decrypted_rdf.gz" --encryption key-file = "enc-key-file"

# Ключ шифрования из HashiCorp Vault
dgraph decrypt --file "зашифрованный.rdf.gz "--out" decrypted_rdf.gz "\
  --vault addr = "http: // localhost: 8200"; enc-field = "enc_key"; enc-format = "raw"; path = "secret / data / dgraph / alpha"; role-id-file = " ./role_id";secret-id-file="./secret_id "
  

Вы можете использовать аналогичный синтаксис для создания расшифрованного файла схемы:

  # Ключ шифрования из пути к файлу
dgraph decrypt --file "encrypted.schema.gz" --out "decrypted_schema.gz" --encryption key-file = "enc-key-file"

# Ключ шифрования из HashiCorp Vault
dgraph decrypt --file "зашифрованный.schema.gz "--out" decrypted_schema.gz "\
  --vault addr = "http: // localhost: 8200"; enc-field = "enc_key"; enc-format = "raw"; path = "secret / data / dgraph / alpha"; role-id-file = " ./role_id";secret-id-file="./secret_id "
  

DC3 Технические консультации Signal Chat App Расшифровка

РАСШИФРОВКА ПРИЛОЖЕНИЯ СИГНАЛЬНОГО ЧАТА

Signal — это приложение для обмена сообщениями, которое поддерживает индивидуальные чаты, групповые чаты и обмен файлами.На Android и iOS приложение необходимо зарегистрировать по номеру телефона, а сообщения можно синхронизировать с настольным приложением Signal в Windows, macOS и Linux. На всех платформах приложение Signal хранит данные в зашифрованной базе данных SQLite. Как правило, можно получить ключ шифрования и расшифровать базу данных. Помимо зашифрованных данных, некоторые остатки использования Сигнала могут сохраняться в незашифрованном виде.

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

Расшифровать базу данных SQLite сигнала «db.sqlite» в Windows, macOS и Linux очень просто. Ключ шифрования хранится в виде открытого текста в файле с именем config.json, который можно использовать с Браузером БД для SQLCipher для расшифровки файла и просмотра сообщений в таблице сообщений (см. Рисунок ниже).Эта таблица содержит текст сообщения, отметку времени, входящего или исходящего, и столбец с именем json, который содержит JSON-представление любых файловых вложений, содержащихся в сообщении. Еще одна интересная таблица — это таблица разговоров, которая содержит имена участников чата и тип чата, например частный, общедоступный или групповой.

Signal для iOS хранит свой ключ шифрования в связке ключей iOS, которую некоторые коммерческие инструменты могут полностью извлечь. Извлеченный ключ шифрования, который хранится в цепочке ключей в формате Base64, можно использовать для расшифровки базы данных / var / mobile / Containers / Shared / AppGroup / [UUID] / grdb / signal.sqlite. Кроме того, отправленные и полученные вложения могут храниться в / var / mobile / Containers / Shared / AppGroup / [UUID] / Attachments, а снимки экранов сообщений Signal с видимым текстом могут храниться в / var / mobile / Containers / Data. / Приложение / [UUID] / Библиотека / SplashBoard / Снимки.

Signal для Android хранит свой зашифрованный файл SQLCipher по адресу /data/data/org.aughtcrime.securesms/databases/signal.db. Этот файл зашифрован с помощью ключа из хранилища ключей Android, что представляет собой проблему с точки зрения криминалистики.

Расшифровка приложения Signal на различных платформах варьируется от простого на настольных компьютерах до сложного на iOS и Android, особенно когда аппаратная безопасность защищает ключи. После восстановления ключа база данных SQLite расшифровывается, и все сохраненное содержимое Сигнала может быть исследовано.

Благодарности авторов

Технические консультации

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

  • Эрик Робертсон (разработчик DC3 / TSD) и Кевин Вестерман (экзаменатор DC3 / CFL)
  • Редакционная коллегия DC3 (курирование, рецензирование и публикация)

За дополнительной информацией и возможностями судебного анализа обращайтесь в DC3 по адресу [email protected].

Соответствующие судебные артефакты

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

C: / Пользователи / [ПОЛЬЗОВАТЕЛЬ] / AppData / Roaming / Signal / config.json

Окна

Ключ дешифрования

C: / Пользователи / [ПОЛЬЗОВАТЕЛЬ] /AppData/Roaming/Signal/sql/db.sqlite

Окна

SQLCipher, файл

/ Пользователи / [ПОЛЬЗОВАТЕЛЬ] / Библиотека / Поддержка приложений / Signal / config.json

macOS

Ключ дешифрования

/ Пользователи / [ПОЛЬЗОВАТЕЛЬ] / Библиотека / Поддержка приложений / Сигнал / sql / db.sqlite

macOS

SQLCipher, файл

/home/ [ПОЛЬЗОВАТЕЛЬ ]/.config/Signal/config.json

Linux

Ключ дешифрования

/home/ [ПОЛЬЗОВАТЕЛЬ ]/.config/Signal/sql/db.sqlite

Linux

SQLCipher, файл

/ var / mobile / Containers / Shared / AppGroup / UUID / grdb / signal.sqlite

iOS

SQLCipher, файл

GRDBDatabaseCipherKeySpec для GRDBKeyChainService

iOS

Связка ключей iOS (кодировка Base64)

/ var / mobile / Containers / Shared / AppGroup / UUID / Attachments

iOS

Вложения к сообщениям (отправленные и полученные)

/ var / mobile / Containers / Data / Application / UUID / Library / SplashBoard / Snapshots

iOS

Скриншоты экранов сообщений

/ data / data / org.thinkcrime.securesms / базы данных / signal.db

Android

SQLCipher, файл

Хранилище ключей Android

Android

Ключ шифрования сигнала

org.gotitcrime.securesms \ shared_prefs \ org.oughtcrime.securesms_preferences.xml

Android

Телефонный номер, зарегистрированный в Signal account

орг.thinkcrime.securesms \ app_parts \

Android

Вложения к сообщениям (зашифрованные)

Рис.: Введите необработанный ключ из config.json для расшифровки зашифрованного файла SQLCipher

Расшифровка SSL с помощью Wireshark — Расшифровка HTTPS: пошаговое руководство

Если вы когда-либо пробовали использовать Wireshark для мониторинга веб-трафика, вы, вероятно, сталкивались с проблемой — в основном это зашифрованные передачи.Фактически, большинство сайтов используют шифрование SSL или Transport Layer Security (TLS) для обеспечения безопасности своих пользователей.

Повсеместное шифрование — это хорошо, если вы делаете покупки на Amazon, но это настоящая проблема, когда вы пытаетесь администрировать сеть. Вот как я расшифровываю SSL с помощью Wireshark.

В этом посте мы рассматриваем:

Что такое Wireshark и SSL-шифрование?

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

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

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

Шифрование

SSL затрудняет использование Wireshark, поскольку оно не позволяет администраторам просматривать данные, которые несет каждый соответствующий пакет. Когда Wireshark настроен правильно, он может расшифровать SSL и восстановить вашу способность просматривать необработанные данные.

См. Также: Альтернативы Wireshark для сниффинга пакетов

Использование предварительного главного секретного ключа для расшифровки SSL и TLS

Рекомендуется использовать предварительный секретный ключ для расшифровки SSL в Wireshark.

Предварительный главный секретный ключ генерируется клиентом и используется сервером для получения главного ключа, который шифрует трафик сеанса.Это текущий стандарт криптографии, который обычно реализуется через Диффи-Хеллмана.

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

Вот шаги по расшифровке SSL и TLS с предварительным секретным ключом:

  • Установить переменную среды
  • Запустите браузер
  • Настроить Wireshark
  • Захват и дешифрование ключей сеанса

Когда вы закончите, вы сможете расшифровать сеансы SSL и TLS в Wireshark без необходимости доступа к целевому серверу.

Установить переменную среды Windows

В системах Windows вам потребуется установить переменную среды с помощью утилиты Advanced system settings . Эта переменная с именем SSLKEYLOGFILE содержит путь, по которому хранятся предварительные секретные ключи.

Начните, щелкнув правой кнопкой мыши Мой компьютер и выбрав в меню Свойства . Откроется меню System .

Затем щелкните Дополнительные параметры системы в списке слева.Откроется окно Свойства системы .

На вкладке Advanced нажмите кнопку Environment Variables .

Нажмите кнопку New… под Пользовательские переменные . Вы также можете создать переменную в Системные переменные , если вы хотите регистрировать ключи SSL для каждого пользователя в системе, но я предпочитаю, чтобы она была ограничена моим профилем.

В поле Имя переменной введите следующее:

 SSLKEYLOGFILE 

В поле Значение переменной введите путь к файлу журнала.Вы также можете нажать кнопку Обзор файла… и указать путь с помощью средства выбора файлов.

Обратите внимание: если вы создаете это как общесистемную переменную среды, вам нужно будет использовать соответствующие подстановочные знаки или сохранить файл в месте, доступном для всех пользователей. Например, вы можете выбрать % USERPROFILE% \ App Data \ ssl-keys.log или C: \ ssl-keys.log .

По завершении нажмите ОК и перейдите к следующему набору шагов.

Установить переменную среды Linux или Mac

В Linux и Mac вам необходимо установить переменную среды SSLKEYLOGFILE , используя nano Linux переменная хранится в ~ / .bashrc . На Mac вы создадите переменную в файле ~ / .MacOSX / environment

Откройте терминал и используйте эту команду в Linux :

 nano ~ / .bashrc 

Откройте Launchpad , щелкните Other и запустите терминал для , запустите эту команду в Mac OSX :

 nano ~ / .bash_profile 

Следующие шаги одинаковы для обеих операционных систем.

В конце файла добавьте эту строку:

 экспорт SSLKEYLOGFILE = ~ / .ssl-key.log 

Нажмите Ctrl + X, Y , чтобы сохранить изменения.

Закройте окно терминала и откройте другое, чтобы установить переменную, затем введите следующее, чтобы подтвердить, что она установлена ​​успешно:

 echo $ SSLKEYLOGFILE 

После выполнения команды вы должны увидеть результат, аналогичный изображенному выше. / Пользователи / comparech /.ssl-key.log — это полный путь к моему журналу предварительных ключей SSL. Примечание. Вам нужно сделать заметку, которая будет отличаться от вашей, чтобы ввести ее в Wireshark.

Теперь, когда переменная установлена, вы можете переходить к следующему набору шагов.

Запустите браузер и проверьте файл журнала

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

Для заполнения журнала важно, чтобы вы посетили сайт, на котором включен SSL.Я использую свой собственный сервер Apache для тестирования, но любой сайт будет работать. Одно из самых больших преимуществ использования общего ключа pre-master — , вам не нужен доступ к серверу для расшифровки SSL.

После посещения веб-сайта с поддержкой SSL проверьте файл на наличие данных. В Windows вы можете использовать Блокнот . В Linux или Mac используйте следующую команду:

 cat ~ / .ssl-log.key 

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

Настройте Wireshark для расшифровки SSL

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

Откройте Wireshark и щелкните Edit , затем Preferences . Откроется диалоговое окно Preferences , в котором слева вы увидите список элементов.Разверните Protocols , прокрутите вниз и щелкните SSL .

В списке опций для протокола SSL вы увидите запись для журнала (Pre) -Master-Secret, имя файла . Перейдите к файлу журнала, который вы создали на предыдущем шаге, или просто вставьте путь.

Когда вы закончите настройку имени файла журнала (Pre) -Master-Secret , нажмите OK и вернитесь в Wireshark. Вы готовы двигаться дальше.

Связанное сообщение: Как использовать Wireshark

Захват сеанса и расшифровка SSL

Последний шаг — захватить тестовый сеанс и убедиться, что Wireshark успешно расшифровывает SSL.

  • Запустите сеанс нефильтрованного захвата, сверните его и откройте браузер.
  • Посетите безопасный сайт, чтобы сгенерировать данные, и, при необходимости, установите фильтр отображения «ssl», чтобы минимизировать шум сеанса.
  • Щелкните любой кадр, содержащий зашифрованные данные.

В моем случае я выберу тот, который содержит HTTP-трафик с кодировкой text / HTML, так как я хотел бы видеть исходный код, который веб-сервер отправляет в мой браузер. Но любые зашифрованные передачи, в которых используется предварительный секрет или закрытый ключ, будут работать с этим методом.Это включает в себя все данные, использующие Perfect Forward Encryption (PFE) через Diffie-Hellman или сопоставимые обмены ключами.

После того, как вы выбрали зашифрованный фрейм данных, посмотрите на представление байтов пакета и, в частности, на вкладки под ним. Вы должны увидеть запись для Decrypted SSL data, среди прочего.

Вы заметите, что мой сеанс по-прежнему выглядит полным мусора, а HTML-код не отображается. Это потому, что мой веб-сервер (и большинство серверов Apache) по умолчанию используют сжатие GZIP.

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

Использование ключа RSA для расшифровки SSL

Вы могли заметить ранее, что в Wireshark есть поле, которое позволяет загружать ключи RSA и использовать их для расшифровки SSL. На практике расшифровка ключа RSA устарела .

Причина, по которой расшифровка SSL с помощью ключа RSA больше не используется повсеместно, заключается в том, что Perfect Forward Encryption (PFE) сделала его устаревшим. Сеансы, согласованные с Диффи-Хеллманом, не используют ключ RSA напрямую; вместо этого они генерируют одноразовый ключ, хранящийся только в ОЗУ, который зашифровывается с помощью ключа на диске.

Если вы ранее использовали ключ RSA для декодирования трафика, и он перестал работать, вы можете подтвердить, что целевая машина использует обмены Диффи-Хеллмана, включив ведение журнала SSL.

Чтобы включить ведение журнала, щелкните Edit в меню панели инструментов и выберите Preferences . Разверните слева пункт меню Protocols и прокрутите вниз до SSL . Отсюда вы можете нажать кнопку Browse и указать местоположение вашего журнала SSL.

После задания местоположения все взаимодействия SSL будут регистрироваться в указанном файле.

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

Это означает, что обмен ключами Диффи-Хеллмана включен. В моем случае Apache специально использует Диффи-Хеллмана с ключами эллиптической кривой, что обозначается строкой ECDHE .

Прокрутите немного дальше, и вы, вероятно, увидите, что главный секрет не может быть найден.

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

Поскольку PFE становится стандартной практикой, а TLSv1.3, вероятно, вызывает проблему, простое дешифрование ключа RSA устарело и не должно использоваться.

Wireshark упрощает дешифрование SSL-трафика

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

Связано: Исправить запуск Common WireShark «интерфейсы не найдены». Проблема

.

Wireshark Decrypt SSL FAQ с

Как читать пакеты TLS в Wireshark?

Чтобы прочитать пакеты TLS в Wireshark, выполните следующие действия:

  1. Запустить сеанс захвата пакетов в Wireshark.
  2. В верхней строке меню щелкните Edit , а затем выберите Preferences из раскрывающегося меню.
  3. В окне «Настройки» разверните узел Protocols в левом дереве меню.
  4. Щелкните SSL. На главной панели окна отобразятся настройки протокола.
  5. Введите имя файла и выберите место для файла отладки SSL .
  6. Щелкните в списке ключей RSA , затем выберите Edit , а затем New .
  7. Заполните информационные поля во всплывающем окне: IP-адрес , Порт , Протокол (который будет HTTPS), Key File и Password .Нажмите ОК .
  8. Нажмите ОК на экране настроек.

В поле данных внизу главной страницы Wireshark будет показано расшифрованное содержимое пакета.

Как работает двустороннее подтверждение SSL?

Двустороннее подтверждение SSL позволяет аутентифицировать как сервер, так и клиента. Вот шаги, которые выполняются в этом процессе:

  1. Привет клиента : отправляется от клиента на сервер и включает поддерживаемые комплекты шифров и совместимость версий TLS.
  2. Привет сервера : отправлено с сервера клиенту в ответ. Он содержит ссылку на общедоступный сертификат сервера и запрос на его получение от клиента.
  3. Браузер проверяет сертификат сервера и, если все в порядке, отправляет ссылку на свой собственный сертификат.
  4. Сервер проверяет сертификат клиента. Если все в порядке, установка сеанса продолжается.

Можно ли расшифровать пассивно перехваченный трафик SSL / TLS?

Да.Однако вам всегда понадобится ключ RSA для расшифровки трафика. Это может быть получено законными методами и с разрешения или может быть выманено из источника трафика с помощью стратегии «человек посередине».

Шифрование и дешифрование данных и прочего — encrypt_data • rOpenSci: cyphr

Шифрование и дешифрование необработанных данных, объектов, строк и файлов. В
основные функции здесь: encrypt_data и
decrypt_data , которые берут необработанные данные и расшифровывают их, записывая
либо в файл, либо с возвратом необработанного вектора.Другие функции
зашифровать и расшифровать произвольные объекты R ( encrypt_object ,
decrypt_object ), строки ( encrypt_string ,
decrypt_string ) и файлы ( encrypt_file ,
decrypt_file ).

 encrypt_data (данные, ключ, dest = NULL)

encrypt_object (объект, ключ, dest = NULL, rds_version = NULL)

encrypt_string (строка, ключ, dest = NULL)

encrypt_file (путь, ключ, dest = NULL)

decrypt_data (данные, ключ, dest = NULL)

decrypt_object (данные, ключ)

decrypt_string (данные, ключ)

decrypt_file (путь, ключ, dest = NULL) 

Аргументы

данные

(для encrypt_data , decrypt_data ,
decrypt_object , decrypt_string ) необработанный вектор с
данные, которые нужно зашифровать или расшифровать.Для расшифровки
функции это должны быть данные, полученные путем шифрования чего-либо или
вы получите сообщение об ошибке.

ключ

Объект cyphr_key , описывающий подход к шифрованию
использовать.

конечный

Имя файла назначения для зашифрованного или
расшифрованные данные или NULL для возврата необработанного вектора. Это
не используется decrypt_object или decrypt_string , который
всегда возвращать объект или строку.

объект

(для encrypt_object ) произвольный объект R для
зашифровать. Сначала он будет сериализован в необработанный (см.
сериализовать).

rds_version

Версия сериализации RDS для использования (см.
сериализовать. По умолчанию в R версии 3.3 и ниже это версия
2 — в серии R 3.4 введена версия 3 и становится
по умолчанию. Сериализация формата версии 3 не понимается
старыми версиями, поэтому, если вам нужно обмениваться данными со старыми версиями R
версий, вам нужно будет использовать rds_version = 2 .По умолчанию
здесь аргумент ( NULL ) обеспечит такую ​​же сериализацию.
используется как R по умолчанию.

струна

(для encrypt_string ) скалярный символ
вектор для шифрования. Сначала он будет преобразован в необработанный с помощью
charToRaw.

путь

(для encrypt_file ) имя файла для
зашифровать. Сначала он будет считан в R как двоичный (см.
readBin).

Примеры

 ключ <- key_sodium (натрия :: keygen ())
# Некоторые суперсекретные данные, которые мы хотим зашифровать:
х <- runif (10)
# Преобразуйте данные в необработанный вектор:
данные <- сериализовать (x, NULL)
данные
 

#> [1] 58 0a 00 00 00 03 00 04 01 00 00 03 05 00 00 00 00 05 55 54 46 2d 38 00 00 #> [26] 00 0e 00 00 00 0a 3f b4 ac 0a 80 00 00 00 3f ea b2 db 32 a0 00 00 3f e3 39 #> [51] 6e e4 e0 00 00 3f c4 1f 67 fd 80 00 00 3f 7e 4e e0 60 00 00 00 3f dd d9 64 #> [76] 1c 80 00 00 3f df db 95 b1 40 00 00 3f d2 8b 8b e9 c0 00 00 3f e7 73 c4 ec #> [101] c0 00 00 3f e8 b8 7f 08 40 00 00

# Зашифровать данные; без указанного выше ключа мы никогда не сможем # расшифровать это.data_enc <- encrypt_data (данные, ключ) data_enc

#> [1] 9f 94 bc af 38 25 db 9c 10 9f 0a 52 15 e8 08 68 8e c2 25 cf 8f f0 42 49 cb #> [26] 9b 09 1b c8 94 0f f5 1a 5e 63 78 c7 44 69 55 b2 4a 9e 7a cc 30 29 3b 4b 4c #> [51] f7 c7 42 74 5a 04 67 bd c5 0f 0c 21 42 b4 65 ae ff 8e 63 c4 5e e1 0f b9 34 #> [76] 85 3f ee b1 c8 48 af b6 fa 7d 71 d0 f5 47 7c 5a 5d ad e5 8e 3a 0d e7 40 a1 #> [101] ed 8b 0b c8 da e1 7a 49 19 96 ce 00 4e b4 5f 43 9b 84 d4 fa 40 9b 49 d3 5c #> [126] 42 18 f2 74 ef 52 ea a6 bb c7 68 87 70 80 8d 46 15 97 b3 a1 0e 06 ea 00 12 #> [151] fa

# Наши случайные числа: десериализовать (decrypt_data (data_enc, key))

#> [1] 0.080750138 0,834333037 0,600760886 0,157208442 0,007399441 0,466393497 #> [7] 0,497777389 0,289767245 0,732881987 0,772521511

# То же, что и версия без шифрования: Икс

#> [1] 0,080750138 0,834333037 0,600760886 0,157208442 0,007399441 0,466393497 #> [7] 0,497777389 0,289767245 0,732881987 0,772521511

# Этого легче достичь с помощью encrypt_object: data_enc <- encrypt_object (x, ключ) идентичный (decrypt_object (data_enc, key), x)

#> [1] ИСТИНА

# Простое шифрование строк: str_enc <- encrypt_string («секретное сообщение», ключ) str_enc

#> [1] 12 69 58 77 dc a2 61 6f fb b1 98 21 6e bf 7e 56 9f 02 d3 2e a8 15 49 47 fe #> [26] 63 c7 e9 40 29 ee 9a e2 28 c5 16 e1 9e 61 70 bd 46 9f 1f 0e 16 6f 7d a2 5e #> [51] ee 7e 7a e8

decrypt_string (str_enc, ключ)

#> [1] «секретное сообщение»

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *