Как расшифровать хеш vbscript

Обновлено: 03.07.2024

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

Суть проблемы

Вы хотите убрать символ из значения Например, когда hash равен Вы хотите получить строку, содержащую Это же просто, правда?

Сложные случаи

Вот что большинство разработчиков, кажется, упускает из виду: в современных, мощно наджаваскриптованных, приложениях переменная hash может содержать любые юникодовые символы. Она не обязательно должна соответствовать значению реального с той же страницы. А когда она и соответствует, теперь могут содержать почти любые юникодовые символы. Да ещё часто забывают, что на странице может и не быть никакого хэша. Даже если URL оканчивается строка location.hash равняется на самом деле "" (пустой строке),

Наивные подходы

Вот наиболее недавний — я нашла его в книге, на которую составляла техническую рецензию:


У него сразу несколько проблем:

  • Даёт неверный результат, когда hash содержит не латинский или не алфавитно-цифровой символ. Например, от хэша будет получено
  • Выбросит TypeError, если строка location.hash пуста — потому что .match() вернёт null.

Другой подход, который один мой друг использовал однажды, был вот каков:


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

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

Получаем правильное значение

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


Однако же поглядите попристальнее:

Дополнение: как указывают в комментариях, также можно использовать location.hash.slice(1) вместо Мне это даже больше нравится, потому что на 4 байта короче.

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


Если по какой-то причине (ОКР?) вам хочется решить задачу при помощи .match() во что бы то ни стало, вы можете сделать вот что:


В этом случае, так как необязателен, .match() никогда не возвратит И нет, никогда ошибочно не окажется частью возвращаемого хэша: так работают движки регэксов.

«Это слишком просто, чего я тут время зря трачу!»

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

В этом пошаговом руководстве показано, как использовать DESCryptoServiceProvider класс для шифрования и расшифровки строк с помощью поставщика служб шифрования (CSP) алгоритма Triple Data Encryption Standard ( TripleDES ). Первым шагом является создание простого класса-оболочки, который инкапсулирует алгоритм 3DES и сохраняет зашифрованные данные в виде строки в кодировке Base-64. Затем эта оболочка используется для безопасного хранения личных данных пользователя в общедоступном текстовом файле.

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

Дополнительные сведения см. в разделе Службы криптографии.

Rijndael (теперь называется AES [AES]) и алгоритмы 3DES обеспечивают более высокий уровень безопасности, чем DES, так как они требуют более ресурсоемких вычислений. Дополнительные сведения см. в разделах DES и Rijndael.

Создание оболочки шифрования

Создайте Simple3Des класс для инкапсуляции методов шифрования и расшифровки.

Добавьте импорт пространства имен криптографии в начало файла, содержащего Simple3Des класс.

В Simple3Des классе добавьте частное поле для хранения поставщика служб шифрования 3DES.

Добавьте закрытый метод, создающий массив байтов указанной длины из хэша указанного ключа.

Добавьте конструктор для инициализации поставщика служб шифрования 3DES.

key Параметр управляет EncryptData DecryptData методами и.

Добавьте открытый метод, который шифрует строку.

Добавьте открытый метод, который расшифровывает строку.

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

Тестирование оболочки шифрования

В отдельном классе добавьте метод, который использует EncryptData метод оболочки для шифрования строки и записи ее в папку пользователя "Мои документы".

Добавьте метод, который считывает зашифрованную строку из папки пользователя "Мои документы" и расшифровывает строку с помощью DecryptData метода оболочки.

Добавьте код пользовательского интерфейса для вызова TestEncoding методов и TestDecoding .

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

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

получить хеш файла через контекстное меню

В этой статье мы рассмотрим, как получить криптографический хеш, используя алгоритмы MD5, SHA-256, SHA-384, используя различные методы, и как интегрировать функциональность в контекстное меню.

Как получить контрольную сумму хеша в Windows

  1. Использование PowerShell (встроено в Windows)
  2. Использование Certutil.exe (встроенный в Windows)
  3. Использование HashMyFiles
  4. Используя 7-Zip
  5. Использование HashTools

Как получить хэш файла (контрольную сумму) через контекстное меню в Windows

Использование PowerShell

Использование Windows PowerShell ( powershell.exe ), вы можете быстро получить хеш файла с помощью одной командной строки. Вот синтаксис командной строки:

Это выводит хеш файла (по умолчанию он использует алгоритм SHA256), как показано ниже:

получить хеш файла через контекстное меню

Чтобы использовать любой другой алгоритм, например, SHA384, вы можете добавить -Algorithm SHA384 параметр вышеупомянутой командной строки.

Приемлемые значения для -Algorithm параметр:

Скопировать в буфер обмена

Чтобы скопировать вывод в буфер обмена, направьте вывод в клип команда, как показано ниже:

Интегрируйте команду в контекстное меню

Чтобы добавить команду PowerShell в контекстное меню для файлов, вот файл .reg:

получить хеш файла через контекстное меню

  • Скопируйте вышеуказанные строки в Блокнот и создайте файл .reg. Для получения дополнительной информации см. Статью Как создавать и использовать файлы .reg.
  • Дважды щелкните файл .reg, чтобы применить содержимое к реестру.
  • Теперь щелкните правой кнопкой мыши файл и выберите Получить хэш файла Команда в контекстном меню.

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

к удалять в контекстном меню, который вы добавили, используйте этот отменить .reg файл

Использование Certutil.exe с VBScript

Если вы хотите внедрить Certutil.exe в контекстное меню, вот VBScript, который точно это делает.

Добавляет Получить хэш файла Команда в контекстном меню.

получить хеш файла через контекстное меню

При нажатии на пункт меню вычисляется SHA256 хэш и копирует его в буфер обмена автоматически.

Откройте Блокнот и вставьте хэш файла, хранящийся в буфере обмена.

получить хеш файла через контекстное меню - certutil

Заметка: Чтобы удалить пункт контекстного меню, дважды щелкните файл, чтобы запустить его. Затем введите REMOVE и нажмите ОК.

Приведенный выше скрипт использует встроенный certutil.exe для генерации хэша файла, выполнив команду и перенаправив ее вывод в буфер обмена, используя Clip.exe :

Вот как будет выглядеть вывод при запуске из командной строки.

получить хеш файла через контекстное меню - certutil

Certutil.exe поддерживает MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512 алгоритмы хеширования.

Утилита HashMyFiles от NirSoft

получить хеш файла через контекстное меню - hashmyfiles

В меню «Параметры» нажмите Включить контекстное меню проводника возможность включить его. Он добавляет опцию HashMyFiles в контекстное меню для файлов и папок.

получить хеш файла через контекстное меню - hashmyfiles

Используя 7-Zip

получить файл хеш правой кнопкой мыши меню 7-zip

Затем все, что вам нужно сделать, это щелкнуть правой кнопкой мыши файл, выбрать CRC SHA и затем выбрать алгоритм хеширования, такой как CRC-32, CRC-64, SHA-1, SHA-256 из подменю. Чтобы выбрать все вышеперечисленные алгоритмы хеширования (и BLAKE2 алгоритм в дополнение), нажмите на звездочку (*) вариант.

получить файл хеш правой кнопкой мыши меню 7-zip

Информация о контрольной сумме представлена ​​в отдельном диалоге.

получить файл хеш правой кнопкой мыши меню 7-zip

Вы можете выбрать элементы и нажать Ctrl + C на клавиатуре, чтобы скопировать их в буфер обмена.

Использование HashTools из двоичной крепости

HashTools от Binary Fortress Software вычисляет и проверяет хэши одним щелчком мыши! Поддерживает CRC32, MD5, SHA1, SHA256, SHA384, SHA512 и SFV, а также интеграцию в контекстное меню Windows Explorer для доступа одним щелчком мыши.

Щелкните правой кнопкой мыши файл или набор файлов и выберите Хэш с HashTools в контекстном меню.

получить хеш файла через контекстное меню - hashtools

Это запустит программу HashTools и добавит выбранные файлы в список. Затем щелкните алгоритм хеширования (например, CRC, MD5, SHA1, SHA256 и т. Д.), Чтобы сгенерировать контрольную сумму хеш-функции для файлов.

Когда вы имеете дело с неизвестным хэшем, первый шаг – корректная идентификация типа.

image

Определения типов хэшей при помощи скрипта hash-Identifier для расшифровки паролей

Автор: Kody

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

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

Что такое хэш и как расшифровать пароль?

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

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

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

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

Например, сможете ли вы на глаз определить, к какому типу относятся хэши, указанные ниже?

Хотя вы могли видеть и тот и другой хэш ранее, ответ на вопрос, какой хэш - MD5, а какой - SHA1, не столь очевиден. Еще большая путаница может возникнуть со схожими типами хэшей, относящиеся к разным режимам в Hashcat. В случае с хэшами, приведенными выше, этот факт имеет чрезвычайно важное значение.

При использовании Hashcat для взлома этого хэша мы должны установить опцию –m с целью работы в нужном режиме. Для взлома хэша MD5 мы бы указали режим 0.

В итоге, установив нужный алгоритм и используя хороший словарь, после расшифровки хэша мы получили слово «hashcat».

Какие хэши поддерживаются?

На данный момент Hashcat в состоянии расшифровать большое количество хэшей. В репозитории на GitHub для утилиты hash-identifier список поддерживаемых хэшей очень внушителен:

Что понадобится

Для начала нужно установить Python3 на вашем компьютере (есть версии для разных платформ). Кроме того, вам понадобится утилита Hashcat, которую можно загрузить, используя команду apt install hashcat, после обновления системы при помощи команд apt update и apt upgrade.

Если вы хотите сгенерировать ваши собственные хэши для тестового взлома, то можете воспользоваться командой в формате echo -n PLAINTEXT | (HASHTYPE)sum. Например, при создании хэша SHA1 для слова «nullbyte» я запустил следующую команду:

Шаг 1. Загрузка и установка Hash-Identifier

Установить скрипт, написанный на Python, – очень просто. Откройте терминал и запустите следующую команду:

Затем посмотрите содержимое директории hash-identifier:

Вы должны обнаружить файл hash-id.py, который можно запустить при помощи команды ниже:

Шаг 2. Идентификация неизвестных хэшей

В качестве пробного подхода при помощи hash-identifier попробуем опознать следующие пять неизвестных хэшей:

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

Второй хэш, показанный ниже, опознается как SHA256. Другой вероятный вариант - Haval256.

Третий хэш опознается как SHA1:

Четвертый хэш опознается как SHA512:

Наконец, пятый и последний хэш опознается как MD5:

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

Шаг 3. Подбор режима в Hashcat

При поиске нужного режима мы можем взглянуть на огромный список хэшей, поддерживаемых в Hashcat. Сокращенный вариант с наиболее популярными типами приведен ниже:

В списке выше есть два примера, которые могут соответствовать первому хэшу (7196759210defdc0), рассмотренному нами в предыдущем шаге. На первый взгляд, режим 200 «MySQL323» наиболее соответствует. Подтвердить гипотезу можно при помощи проверки тестового хэша в hash-identifier.

Точное совпадение с нужным хэшем:

Если мы попробуем другой тип (300), то увидим, что результаты не совпадают.

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

Шаг 4. Расшифровка хэша при помощи Hashcat

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

Если вы все еще находитесь внутри скрипта hash-identifier, нажмите Ctrl-C, а затем откройте файл в текстовом редакторе nano, запустив следующую команду:

После добавления нескольких предполагаемых паролей, один из которых – «hashcat», нажимаем Ctrl-X для выхода из редактора и вводим Y, чтобы сохранить изменения в файле. Теперь мы можем использовать этот файл в качестве словаря вместе с ранее выбранным режимом для взлома хэша. Базовая команда выглядит примерно так:

Вместо значения HASH_VALUE указываем хэш 7196759210defdc0, вместо MODE_NUMBER – подобранный ранее режим 200. Результат работы показан ниже. Если у вас старая система, как в моем случае – нужно указать параметр –force.

В результате мы получили 7196759210defdc0:hashcat и смогли расшифровать хэш посредством сравнения с элементами словаря из файла example.dict.

Когда вы имеете дело с неизвестным хэшем, первый шаг – корректная идентификация типа. Хотя скрипт hash-identifier – не идеален, но позволяет без особых проблем опознать наиболее распространённые хэши и отличить разные типа хэшей, которые выглядят одинаково, но требуют разных режим работы в Hashcat. Даже если hash-identifier не уверен, с каким типом вы имеете дело, сравнение с результатами примеров с сайта Hashcat, может помочь в идентификации.

Надеюсь это руководство, посвященное опознанию неизвестных хэшей, вам понравилось.

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