Андрей Смирнов
Время чтения: ~6 мин.
Просмотров: 1 255

Добавляем вычисление SHA-1 и MD5 хешей в контекстное меню файлов

get-file-control-sum-windows-powershell.pngХэш или контрольная сумма файла — короткое уникальное значение, вычисляемое из содержимого файла и обычно использующееся для проверки целостности и соответствия (совпадения) файлов при загрузке, особенно если речь идет о больших файлах (образы системы и подобные), которые могут быть скачены с ошибками или есть подозрения о том, что файл был подменен вредоносным ПО.

На сайтах загрузок часто бывает представлена контрольная сумма, вычисленная по алгоритмам MD5, SHA256 и другим, позволяющая сверить загруженный файл с файлом, выложенным разработчиком. Для вычисления контрольных сумм файлов можно использовать сторонние программы, но есть способ сделать это и стандартными средствами Windows 10, 8 и Windows 7 (требуется версия PowerShell 4.0 и выше) — с помощью PowerShell или командной строки, что и будет продемонстрировано в инструкции.

Получение контрольной суммы файла средствами Windows

Для начала потребуется запустить Windows PowerShell: проще всего использовать поиск в панели задач Windows 10 или меню Пуск Windows 7 для этого.

Команда, позволяющая вычислить хэш для файла в PowerShell — Get-FileHash, а чтобы использовать ее для вычисления контрольной суммы достаточно ввести ее со следующими параметрами (в примере вычисляется хэш для образа ISO Windows 10 из папки VM на диске C):

Get-FileHash C:VMWin10_1607_Russian_x64.iso| Format-List

get-file-sha256-hash-windows.png

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

Get-FileHash C:VMWin10_1607_Russian_x64.iso -Algorithm MD5 | Format-List

get-file-md5-hash-windows.png

При этом поддерживаются следующие значение для алгоритмов вычисления контрольной суммы в Windows PowerShell

  • SHA256 (по умолчанию)
  • MD5
  • SHA1
  • SHA384
  • SHA512
  • MACTripleDES
  • RIPEMD160

Подробное описание синтаксиса команды Get-FileHash доступно также на официальном сайте https://technet.microsoft.com/en-us/library/dn520872(v=wps.650).aspx

Получение хэша файла в командной строке с помощью CertUtil

certutil-hashfile-windows-cmd.png

В Windows присутствует встроенная утилита CertUtil для работы с сертификатами, которая, помимо прочего, умеет высчитывать контрольную сумму файлов по алгоритмам:

  • MD2, MD4, MD5
  • SHA1, SHA256, SHA384, SHA512

Для использования утилиты достаточно запустить командную строку Windows 10, 8 или Windows 7 и ввести команду в формате:

certutil -hashfile путь_к_файлу алгоритм

Пример получения хэша MD5 для файла показан на скриншоте ниже.

get-md5-hash-certutil.png

Дополнительно: на случай, если вам требуются сторонние программы для вычисления хэшей файлов в Windows, можно обратить внимание на SlavaSoft HashCalc.

Если же требуется вычислить контрольную сумму в Windows XP или в Windows 7 без PowerShell 4 (и возможности его установить), вы можете использовать утилиту командной строки Microsoft File Checksum Integrity Verifier, доступную для загрузки на официальном сайте https://www.microsoft.com/en-us/download/details.aspx?id=11533 (формат команды для использования утилиты: fciv.exe путь_к_файлу — результат будет MD5. Также можно вычислить хэш SHA1: fciv.exe -sha1 путь_к_файлу)

Доброго времени суток! Как часто вы проверяете скачиваемые файлы на равенство хеш-сумм? Я — никогда. Но сегодня я почему-то решил порвать с этой порочной практикой и сделать свою жизнь более безопасной. Согласитесь, основная причина не сравнивать хеш-сумму файла — это лень. Нужно искать какую-нибудь программу, запускать ее, натравливать на файл, и это просто уйма действий. Как можно упростить эту процедуру? Я не придумал ничего лучше, чем добавить в контекстное меню файла опцию «Посчитать хеш». Интересующимся предлагаю краткую инструкцию.

1. Установка программы

Берем отсюда File Checksum Integrity Verifier utility — консольную утилиту для вычисления и сравнения хешей MD5 и SHA-1 от Microsoft. Там же можно прочитать, что это за зверь и с чем его едят. Скачанный файл Windows-KB841290-x86-ENU.exe можно открыть как zip архив и увидеть, что он содержит два файла: собственно fciv.exe и ReadMe.txt, содержащий справку к утилите. Файл ReadMe нас не интересует, а fciv.exe нужно поместить в одну из директорий, прописанных в переменной PATH, дабы вызывать ее из командной строки без указания полного пути. Я поместил в system32. Проверить, что утилита работает, можно, натравив ее из командной строки на любой файл:fciv -md5 C:test.dat — для вычисления MD5 fciv -sha1 C:test.dat — для вычисления SHA-1

2. Создание элемента контекстного меню

Для расширения контекстного меню файлов нужно будет немного подшаманить в реестре. Запускаем regedit.exe, идем в HKEY_CLASSES_ROOT* — это раздел, отвечающий за контекстное меню всех типов файлов. В разделе shell создаем подраздел с любым именем (у меня это fciv_md5). В параметре по умолчанию прописываем желаемое название пункта меню (напрмер, Compute MD5). У созданного подраздела (fciv_md5) создаем еще один подраздел с именем command, и у него в параметре по умолчанию прописываем магическую строчку:cmd.exe /k fciv -md5 "%1" Строка предписывает запустить cmd.exe с командой fciv -md5 "%1" и отобразить результат. Для добавления пункта для вычисления SHA-1 проделываем ту же последовательность действий, меняя лишь названия. Команда в этом случае выглядит так:cmd.exe /k fciv -sha1 "%1" Должно получиться что-то вроде этого:cc07bdf4b05f305a184d787251ee03ff.png Все вышеперечисленное одним файлом:

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT*shellfciv_md5] @="Compute MD5"  [HKEY_CLASSES_ROOT*shellfciv_md5command] @="cmd.exe /k fciv -md5 "%1""  [HKEY_CLASSES_ROOT*shellfciv_sha] @="Compute SHA"  [HKEY_CLASSES_ROOT*shellfciv_shacommand] @="cmd.exe /k fciv -sha1 "%1"" 

3. Вычисляем SHA-1 хеш двумя кликами мыши:

Раз:b74b749f74b7f3dc65a2dc22cf054e6f.png Два:a454967d2dc94dbe66047265e4c7b9ed.png Всем добра и совпадающих хешей! UPD. Как подсказывает в первом комментарии, можно обойтись без установки FCIV и использовать встроенную утилиту CertUtil. В таком случае п.1 становится неактуальным, а команда в regedit меняется на: для MD5: cmd.exe /k CertUtil -hashfile "%1" MD5 для SHA1: cmd.exe /k CertUtil -hashfile "%1" SHA1, и, кроме того, появляется возможность вычислять SHA256 хеш: cmd.exe /k CertUtil -hashfile "%1" SHA2566117,3k 61стащено с ITFound.ruЕсли у вас возникла задача узнать хеш-сумму файла, а устанавливать какие-либо дополнительные программы для этого не хочется, то это можно сделать стандартными средствами с помощью командной строки.Нам поможет утилита CertUtil по умолчанию входящая в комплект WindowsЧтобы узнать хеш сумму файла необходимо зайти в командную строку: (клавиши Win+R и набираем cmd, либо «Пуск-Все программы-Стандартные-Командная строка«) и выполнить команду certutil -hashfile c:fileгде, c:file — путь до файлаПо умолчанию утилита считает хеш-сумму с помощью SHA1Если хотите использовать другой, пожалуйста, доступны MD5 MD4 MD2 SHA512 SHA384 SHA256 SHA1Например:Certutil -hashfile c:file MD5 Также можно воспользоваться утилитой FCIV (File Checksum Integrity Verifier utility) эта утилита может не входить по умолчанию в систему. Скачать можно ее с оф.сайта http://support.microsoft.com/ru-ru/kb/841290Распаковываем и кладем файл fciv.exe для удобства в папку C:windowssystem32Теперь можно выполнив командуfciv c:fileузнать хеш-сумму файла, по умолчанию MD5, но также доступен SHA1fciv -sha1 c:fileИз полезных функций хочется отметить возможность проверить автоматом хеш-суммы всех файлов в папке, а также загрузить их в XML-файл для последующей сверкиСчитаем хеш-сумму всех файлов в папкеfciv c:folderСоздаем файл d:hashes.xml, который содержит хеши и пути до файлов всех файлов папки d:Folderfciv -add d:Folder -r -xml d:hashes.xmlСверяем хеш суммы файлов по ранее созданному xml файлуfciv -v -xml d:hashes.xmlИспользуемые источники:

  • https://remontka.pro/get-file-hash-windows-powershell/
  • https://m.habr.com/ru/post/224303/
  • https://meduzian.livejournal.com/40379.html

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации