что такое радужная таблица
Радужные таблицы в домашних условиях
Прошедшая неделя с точки зрения информационной безопасности выдалась исключительно «удачной»: то база хэшей LinkedIn утекла в сеть, то хэши last.fm. И во всех обсуждениях, так или иначе, упоминают о радужных таблицах.
Слышали о них почти все, но делали их своими руками очень немногие.
Думаю, не разумно рассказывать заново о том, что такое хеш и зачем в принципе нужны радужные таблицы или какие-то другие предвычисления. Для ликвидации белых пятен предлагается прочесть этот топик.
Интеллектуального прорыва в области радужных таблиц сегодня не планируется, а есть желание рассказать, что радужные таблицы – это не сложно, поэтому и писать будем на чем-то простом, а именно: PHP. Хранить таблицу в MySQL.
Весь код доступен на GoogleCode, я же опишу основные моменты, над которыми пришлось подумать и которые необходимо реализовать.
Для начала необходимо поговорить о входном алфавите. В наборе паролей участвует не все символы ASCII таблицы, а только те, которые можно без лишних хитростей набрать на клавиатуре ПК или мобильного устройства. Чем меньше входной алфавит, тем быстрее будет сгенерирована радужная таблица, но и паролей по заданным хэшам найдется меньше. В нашем случае будем использовать входной алфавит из цифр и букв латинского алфавита верхнего и нижнего регистров.
Для создания радужной таблицы используются цепочки, начало которых – это некоторый случайный пароль фиксированной длины. Очевидно, необходима функция генерация случайных паролей из символов входного алфавита:
Внутри цепочек попеременно применяется то хэш-функция, то функция редукции. С хэш-функцией все ясно – это MD5, SHA1 или любая другая (в нашем случае будем использовать MD5). С функцией редукции ясности меньше. Во-первых, функция редукции, получив на входе хэш, должна выдать некоторый пароль из символов входного алфавита. Во-вторых, функция редукции необходима не одна единственная, а упорядоченное множество функций редукции, причем мощность этого множества равна длине цепочки.
Конечно, можно было бы написать две-три функции редукции самостоятельно, но не в случае, когда длина цепочки равна 100 или 1000. Тем более, хотелось бы, чтобы длина цепочки хранилось в константе, которую можно заменить легким движением руки.
В голову приходить достаточно очевидное решение: нужно использовать Генератор псевдослучайных чисел (ГПСЧ). Для каждой конкретно взятой функции редукции инициализировать ГПСЧ определенным набором бит из хэша, поступающего на вход, а затем получать пароль с помощью вызова getWord().
В принципе действовать на уровне отдельных бит и не требуется. Инициализировать ГПСЧ нужно числом типа int, для моей платформы – это 32 бита или 4 байта. MD5 состоит из 16 байт (посмотрите на второй параметры у функции md5 в PHP), тогда количество возможных размещений равно 16! / (16 — 4)! = 43680 – даже для длины цепочки в 1000 хватит с запасом.
Тогда собственно функция редукции, принимающая на вход хэш и номер текущего шага в цепочке, будет иметь вид:
С учетом всего вышеописанного функция расчета конца цепочки по ее началу тривиальна:
Поздравляю, мы проделали большую работу, и остался только один аспект нахождения пароля по заданному хэшу, о котором необходимо рассказать.
В классическом варианте берется последняя n-ая функция редукции от хэша и получившийся пароль ищется в радужной таблице, если ничего не нашлось, берется n-1 редукция, потом вычисляется хэш, потом n-ая редукция и ищется в таблице и так далее, пока не найдется пароль. При использовании MySQL это могло бы вылиться в n однотипных SELECT-ов (в худшем случае) – даже начинающий веб-программист знает, что за это можно и по рукам получить! Конечно же, достаточно одного SELECT-а для поиска одного пароля, но для этого необходимо генерировать все пароли для поиска разом:
Все остальные манипуляции с MySQL прямого отношения к радужным таблицам не имеют, а другие части исходного кода, по моему мнению, понятны и без объяснений.
И напоследок ложка дегтя. PHP и MySQL прекрасно справляются с созданием прототипов на скорую руку, но PHP действительно не самый быстрый язык и хранение радужной таблицы в реляционной СУБД общего назначения не самое эффективное решение. Радужную таблицу для MD5 для 6-символьных паролей с длиной цепочки 1000 из 2 миллионов записей ноутбук на базе i3-330UM генерировал более 8 часов. В идеале полученная таблица может обратить 2*10^9 хэшей, но это число не соизмеримо с общим количеством 6-символьных паролей, которых 56,8*10^9 на выбранном входном алфавите.
Это в очередной раз показывает, насколько важен выбор подходящего инструмента для решения конкретной задачи.
Думаю, что задачу наглядно продемонстрировать принцип реализации радужных таблиц мне на пару с PHP всё-таки удалось решить.
Time-memory trade off и нерадужные таблицы
Хеш-функции
Абзац скучный, те кто знают — пролистывайте. Но если не знаете, или сомневаетесь, то приступим.
Хэш-функция — функция, выполняющая одностороннее преобразование. По заданной строке (паролю) она получает некое хеш-значение (hex-нотация: обычно последовательность из цифр и букв a — f), такое, что по нему очень сложно получить какую-либо информацию об исходной строке-пароле.
Изначально слово взято из английского языка: hash — мешанина, мусор, ненужная информация. На русском языке возможны два варианта транслитерации: хеш или хэш.
Смысл слова можно трактовать так: по хеш-значению мы не получим никакой полезной информации, поэтому само по себе оно является бессмысленным набором байт, мусором.
Однако, обладая свойством обычных функций (то есть по одинаковым строчкам в любое время мы получим одинаковые хеш-значения), хеш-функции пригодились в области авторизации (разграничении доступа). По паролю очень легко получить хеш-значение, которое можно хранить, и использовать для сравнения паролей с оригинальным. В то же время, даже имея доступ к базе хеш-значений, казалось бы, нельзя получить доступ к паролям.
Простой пример: Мы хотим сохранить строку test, как пароль для пользователя Admin. Для этого мы записываем в базу паролей:
Admin: 098f6bcd4621d373cade4e832627b4f6 (эта последовательность символов есть хеш-значение MD5 от строки test).
Теперь мы можем проверить любую строку на соответсвие нашему паролю очень легко — посчитаем от нее хеш-значение, и сравним с тем, которое мы сохранили в базе.
Для примера, MD5 от строки rest — это 65e8800b5c6800aad896f888b2a62afc и оно не совпадает с тем, что мы сохранили. А значит, rest — не пароль для Admin.
Восстановление пароля
Забудем слово «взлом», и о том что «восстанавливать» можно только «свои» пароли — сейчас это не важно. У нас есть всего-ничего, хеш-функция f и хеш-значение y. Требуется найти строку x (пароль), такую, что f(x)=y, математика.
И мы без труда решили бы задачу, если бы f(x) было равно x^2, кажется в школе учили. Но не тут-то было, математики утверждают, что для любой честной хеш-функции найти обратную в конкретной точке можно разве что прямым перебором. А перебрать нужно O(2^разрядности хеш-значения).
На самом деле это не так, и для всех реально существующих функций этот перебор имеет меньший порядок, а честные хеш функции могут и вовсе не существовать, этот вопрос зависит от существования псевдослучайных генераторов, а они в свою очередь… и мы не будем опровергать этот тезис, хотя бы потому, что не сможем.
Параметры перебора
Задача перебора формализуется очень легко (хоть и множеством способов). Пусть у нас есть алфавит A (Вы ещё запоминаете буквы?). Для заданного n (пока запоминайте) построим все строки из n символов алфавита A. Для каждой строки посчитаем ее хеш-значение. Если оно совпадет с y, то, кажется, мы решили задачу.
Тут я хочу сильно расстроить тех, кто до сих пор считает надежность пароля зависимым от длины пароля фактором. От длины она зависит едва ли больше, чем от содержимого алфавита.
Для n = 2 перебор охватит строки aa, ab, atest, arest, ba, bb, btest, brest… и так далее, всего 4^2 = 16 вариантов.
Сложность переборного алгоритма составляет O(|A|^n).
Оценка параметров
Перебор будет успешен в одном из двух случаев:
1. мы наткнемся на хеш-коллизию первого рода.
2. исходный пароль будет содержаться в A^n (то есть его можно составить словами алфавита).
Касательно первого случая могу сказать, что эту идею стоит оставить. Даже для MD5, имеющей всего-то 2^128 различных хеш-значений на это потребуется очень много времени (тысячелетия при переборе миллиарда хеш-значений в секунду). Только не стоит путать коллизии первого рода в свободными коллизиями (второго рода), их действительно искать легко, но на практике совершенно бесполезно.
Значит целимся на ситуацию 2. Несложно прикинуть параметры и порядок вычислений для типичных ситуаций.
Никакого обмана
Так вот, таблицы не позволят сократить этот порядок. Это было бы и противоречиво тезису о «необратимости» хеш-функций. Все что могут таблицы — это хранить некоторую предвычисленную (за время, большее времени прямого перебора!) информацию, позволяющую для каждого конкретного значения найти соответствующий ему пароль довольно быстро.
Алгоритм предвычисления
Будем записывать в таблицу пары из двух хеш-значений si и ei. Много-много таких пар.
Так, стоп, что за r? А это такая специальная функция редукции. Она отображает хеш-значение функции f обратно в алфавит A^n по любому закону, но по возможности сохраняя инъективность (от разных аргументов функция должна давать разные значения).
Если на время забыть способ получения значений то их можно записать в цепочку:
si → si 1 → si 2 →… → si m → ei, где m длина цепочки, одинаковая для всех цепочек одной таблицы.
Сложность получения одной пары O(m), всего в таблице N пар, соответственно на генерацию таблицы будет затрачено O(N*m) времени. На сохранение на диск O(N) памяти. А пароль к любому из промежуточных значений si k может быть найден за O(m).
Перевод на «человеческий язык» будет звучать как-то так: для того чтобы уметь восстанавливать любой пароль алфавита A^n потребуется порядка A^n/5000 (для m = 5000) байт места на диске, порядка 5000 шагов алгоритма восстановления.
Чем больше предвычислили, тем большее число паролей можем восстановить, за то же время. Но и «весить» такие таблицы будут больше. Вот и time-memory trade off.
Крайние случаи просты: для m=1 нам потребуется сохранить на диск все хеш-значения заданного алфавита, а это очень много. Но и время восстановления будет O(1) (на самом деле O(log(|A|^n) из-за применения поиска, ну да ладно).
А для m=|A|^n, таблица займет всего н-надцать байт, но и поиск займет столько же времени, сколько без таблицы. Да еще и может не увенчаться успехом из-за вероятностного характера таблицы (ой, зря я это сказал, придется потом отдуваться).
Использование таблицы
Отлично, пусть у нас есть то самое хеш-значение y и таблица из пар (s0, e0); (s1, e1);… (sN, eN).
На первой итерации алгоритма мы поищем значение y среди конечных точек цепочек: ei.
Пусть нам повезло, y = ek для какого-нибудь k. Тогда мы регенерируем цепочку, начиная с соответствующего sk: а ведь идущий перед ek элемент sk N-1 обладает по построению замечательным свойством: f ( r ( sk N-1 ) ) = ek = y, а значит r ( sk N-1 ) искомый пароль!
Пусть не повезло, тогда мы вычисляем y1 = f ( r ( y ) ). И невезение наше повторяется, yi = ((f ○ r) ^ i) (y), это я так записал i раз подряд примененные f и r по очереди (так же как в цепочках в таблице). Стоит отметить, что нет смысла считать yN+1 и далее — даже если они найдутся в таблице, то таблица нам не поможет. Значит здесь максимум N шагов, на каждом из которых мы считаем yi и ищем среди ek. И если, наконец, оно найдется:
Стрелочки здесь обозначают всё то же — композицию f и r. А значит, r ( sk v ) пароль для y!
Вот и объяснение, почему считать yN и дальше не нужно: «нижня» цепочка должна быть короче верхней, мы обращаемся к предыдущему относительно y элементу.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как использовать радужные таблицы для взлома паролей Wi-Fi в Hashcat и John the Ripper
Радужные таблицы для брут-форса Wi-Fi паролей
Радужные таблицы — это предварительно рассчитанные хеши, которые используются для очень быстрого восстановления паролей из добытого хеша. Они представляют собой базы данных, в которых паролю соответствует вычисленный хеш.
То есть по радужной таблице ищется хеш, если он найден, то смотрим, какой пароль ему соответствует. Поиск по базе данных выполняется очень быстро. Благодаря ему становится возможной на первый взгляд невозможная операция: восстановление данных из контрольной суммы, например, из хеша MD5 мы можем получить исходную строку, для которой была вычислена контрольная сумма MD5.
В результате появления концепции радужных таблиц, теперь повсеместно распространено хеширование с солью и многократное (итерированное) хеширование.
Соль — это дополнительные уникальные данные, которые добавляются к паролю. В результате радужные таблицы становятся непригодными. Соль не является секретной, может храниться в открытом виде. Это не мешает ей делать непригодными радужные таблицы.
Итерация — это многократное хеширование, то есть когда полученные в результате хеширования данные хэшируются ещё раз и так много раз (сотни или десятки тысяч итераций не редкость).
Итак, что по поводу радужных таблиц для взлома Wi-Fi паролей? Дело в том, что это изначально алгоритм с солью — роль соли выполняет название точки доступа. То есть можно рассчитать радужную таблицу, но она будет пригодна только для точки доступа с определённым названием.
Какие преимущества использования радужных таблиц для брут-форса Wi-Fi?
Вычисление радужных таблиц занимает ровно столько же времени сколько и брут-форс. Но поиск по созданной радужной таблице занимает доли секунды. Отсюда следствие: если вы хотите проверить одно рукопожатие для Точки Доступа, то разницы между брут-форсом и использованием радужных таблиц нет.
Но всё меняется, если вы хотите проверить два и более рукопожатия для одной точки доступа. В этом случае вы можете проверить любое количество рукопожатий, затратив время как на одно. А это (проверка нескольких рукопожатий для одной ТД) не лишено смысла, ведь рукопожатия могут быть бракованными (составленными из нескольких), в результате не получится взломать пароль, даже если правильный пароль был проверен для такого бракованного рукопожатия.
Как уже было сказано, поиск по радужной таблице выполняется очень быстро и не требует серьёзных вычислительных ресурсов. То есть если вам нужно взломать Точку Доступа с известным именем, то вы можете предварительно рассчитать радужную таблицу для неё на мощном компьютере. А захватить и проверить по радужной таблице рукопожатие вы можете на маломощном (миниатюрном) оборудовании.
Из недостатков радужных таблиц — они занимают много места, намного больше чем просто файл паролей, на основе которой была вычислена радужная таблица, или маска, которая вообще не занимает места.
Виды радужных таблиц Wi-Fi. Состав радужных таблиц для взлома Wi-Fi
Главным элементом радужных таблиц для взлома Wi-Fi являются plainmasterkeys. Для их вычисления нужно название ТД (ESSID) и кандидат в пароли. Но: из plainmasterkeys невозможно извлечь пароль, с помощью которого он был вычислен (только если брут-форсом). Поэтому кроме plainmasterkeys в базе данных должны быть также исходные пароли.
Как именно это «оформить» программы решают по-своему. Среди знаменитых программ, которые уже давно используют радужные таблицы для взлома Wi-Fi, это Pyrit и coWPAtty. Причём Pyrit может использовать мощность видеокарты для выполнения вычислений, поэтому раньше справедливо назывался самым быстрым взломщиком Wi-Fi паролей. У Pyrit и coWPAtty разные форматы баз данных. Поскольку в настоящее время эти программы не очень актуальны, не будем на них останавливаться.
В настоящее время актуальными программами, которые могут использовать радужные таблицы для взлома Wi-Fi, являются Hashcat и John the Ripper. Обе эти программы могут использовать видеокарты. Но суть в том, что это неважно — эти программы только проверяют хеш перехваченного рукопожатия по радужной таблице. А саму радужную таблицу нужно создавать с помощью сторонней программы.
Hashcat и John the Ripper в качестве радужной таблицы принимают простой список plainmasterkeys, не содержащий соответствующих каждому PMK паролей! Запомним это…
Программа для генерации радужной таблицы Wi-Fi
Радужные таблицы Wi-Fi может создавать программа wlangenpmkocl из пакета hcxkeys.
Пакет hcxkeys включает две утилиты:
То есть разница между ними только в том, что wlangenpmkocl использует видеокарту, а wlangenpmk использует центральный процессор. Конечно же, предпочтительнее использовать версию для видеокарты (то есть wlangenpmkocl). Версия wlangenpmk только для крайних ситуаций — у вас нет дискретной видеокарты или вы не можете установить её драйвер для полноценной поддержки OpenCL
Как установить hcxkeys
Чтобы использовать wlangenpmkocl, установите драйверы для видеокарты, информацию об этом и о OpenCL вы найдёте в статьях:
Установка в Kali Linux
Если при выполнении команды make выведены следующие сообщения:
то это не ошибки — это информация. Компиляция всё равно должна завершиться успешно и можно продолжать.
Установка в BlackArch
Как создать радужную таблицу для взлома в Hashcat или John the Ripper
На этапе создания радужной таблицы рукопожатие или хеш не нужны. Нужно только название ТД, но название обязательно должно быть правильным.
К примеру, у меня есть захваченное рукопожатие, название ТД в нём можно посмотреть множеством способов, я воспользуюсь командой aircrack-ng:
Название показано в столбце ESSID, в моём случае это RT-WiFi_96.
Теперь нам нужно посмотреть номер устройства (видеокарты), которые мы укажем для использования в wlangenpmkocl. Если вы будете использовать wlangenpmk, то пропустите этот шаг.
Для вывода список OpenCL устройств используйте опцию -l:
Как мило — программа не только показала список устройств, но и написала, какие опции нужно указать, чтобы использовать то или иное железо:
Конечно же, я буду использовать GeForce GTX 1050 Ti, из представленного списка она самая мощная.
Теперь нужно запустить команду вида:
Для wlangenpmk всё точно также, но не нужно использовать опции -P и -D.
Скорость генерации около 100 тысяч хешей в секунду.
ВНИМАНИЕ: если в файле «ФАЙЛ-ВЫВОДА-PMK» уже есть строки, то файл будет дополнен, а не перезаписан!
Как в Hashcat использовать радужные таблицы для взлома Wi-Fi
Чтобы не запутаться, где какой файл указывать, разберёмся, как работают Hashcat и John с радужными таблицами. Эти программы работают по принципу «получен пароль → для него рассчитан хеш → хеш сравнивается с предоставленным». При работе с радужными таблицами в качестве «пароля» выступает хеш из радужной таблицы.
То есть мы будем работать с хешами двух типов: PMK и хеш рукопожатия. Значения PMK должны указываться в качестве кандидатов в пароли.
Теперь с помощью программы cap2hccapx из пакета hashcat-utils, нам нужно конвертировать захваченное рукопожатие в хеш, который может взламывать hashcat.
Установка hashcat-utils в Kali Linux:
Установка hashcat-utils в BlackArch:
Для конвертации используется команда вида:
То есть хеш сохранён в файл RT-WiFi_96.hash.
Теперь нужно запустить hashcat. В качестве режима взлома нужно указать -m 2501 (WPA-EAPOL-PMK).
В моём случае это следующая команда:
Проверка по почти 10 миллионам plainmasterkeys заняла меньше секунды.
Но радоваться пока рано, обычно взломанный пароль содержится после названия ТД через двоеточие, но посмотрим повнимательнее на нашу строку:
Там после двоеточия f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0 — это plainmasterkey, мы можем даже найти его в файле pmk.txt, но толку от этого мало.
Как восстановить пароль из plainmasterkey
Есть два способа получить пароль — я покажу вариант от автора программы и второй, который я придумал сам. Вы сами можете выбрать, который вам нравится больше.
Нам нужен инструмент wlanpmk2hcx из пакета hcxtools.
Установка в Kali Linux
Установка в BlackArch
Теперь нужно выполнить команду вида
В моём случае это команда:
А вы думали вам покажут пароль? Неа. Нам дали новый хеш и мы его будет опять брут-форсить (не забывайте, дальше будет мой собственный способ, в котором можно обойтись без этого).
Итак, нам нужно использовать hashcat с режимом хеша 12000 (PBKDF2-HMAC-SHA1). Новый хеш:
Запускаем команду вида:
ХЕШ обязательно поместите в кавычки или сохраните в файл и в строке команды укажите файл.
Скорость перебора 247.5 kH/s и через 6 секунд хеш взломан.
Посмотрим на строку:
В ней подобранным паролем является 22011995 — это и есть пароль от ТД Wi-Fi.
Последняя стадия явно лишняя — мы сделали ненужную работу, которую можно было бы не делать. Давайте разберёмся с этим.
Как пропустить этап взлома plainmasterkey
Мы использовали программу wlangenpmkocl с опцией -a, что означает вывод plainmasterkeys в файл. У программы есть также опция -A, которая позволяет генерировать файл со строками вида plainmasterkey:ПАРОЛЬ. Создадим такой файл:
«Небольшой» минус этого формата в том, что с таким файлом не может работать hashcat. Поэтому мы будем использовать такую конструкцию (считывается ФАЙЛ-PMK, из него берётся только PMK без пароля и отправляется по стандартному вводу в hashcat в качестве кандидата) :
У меня файл с plainmasterkeys формата plainmasterkey:ПАРОЛЬ имеет имя pmk.txt, хеш, извлечённый из хендшейка, помещён в файл RT-WiFi_96.hash, тогда команда следующая:
Опять всё взломано за 0 секунд.
И опять вместо пароля нам дан хеш:
В чём тогда разница? А разница в нашем файле pmk.txt, в котором каждому хешу соответствует его пароль!
То есть теперь мы выполним команду вида:
Тогда команда следующая:
То есть найден хеш и соответствующий ему пароль (22011995), который идёт после двоеточия.
Как в John the Ripper использовать радужные таблицы для взлома Wi-Fi
В John the Ripper всё очень похоже, рассмотрим два варианта — последовательный взлом PMK и хеша и взлом только одного PMK.
1-й вариант
Создаём радужную таблицу командой вида:
Предыдущая команда по вычислению PMK одинаковая с той, которую мы использовали для Hashcat. Но для конвертации рукопожатия в хеш для John the Ripper команда отличается. Причём программа wpapcap2john (которая конвертирует рукопожатия для взлома по маске или по словарю) не подойдёт для взлома по радужным таблицам. Подробнее о wpapcap2john смотрите в «Полном руководстве по John the Ripper. Ч.2: утилиты для извлечения хешей».
Нам нужно использовать программу hcxpcapngtool из пакета hcxtools.
Установка в Kali Linux
Установка в BlackArch
Для конвертации рукопожатия в хеш для взлома по радужным таблицам в John используйте команду вида:
Теперь, когда вычислена радужная таблица и сгенерирован хеш рукопожатия, в john запустим по ней проверку хеша рукопожатия. В качестве словаря нам нужно указать файл с вычисленными PMK, общий вид команды:
Будет выбран формат хеша wpapsk-pmk. Существует также формат хеша wpapsk-pmk-opencl, который отличается тем, что используются вычисления на видеокарте. На самом деле, OpenCL форматы запускаются значительно дольше (несколько секунд), а вычисление даже на wpapsk-pmk выполняется за доли секунды. Поэтому особого смысла указывать опцию —format=wpapsk-pmk-opencl нет. Но просто помните о такой возможности на случай очень больших радужных таблиц.
Итак, мои plainmasterkeys сохранены в файл pmk.txt, а хеш рукопожатия сохранён в файл RT-WiFi_96.john, тогда команда для поиска по радужной таблице следующая:
Совпадение найдено, об этом говорит строка:
Если вы что-то пропустили, то взломанный пароль/хеш можно посмотреть командой вида:
Теперь нужно запустить команду вида:
В моём случае это команда:
Применительно к john, нам дано имя алгоритма: pbkdf2-hmac-sha1 для взлома, а также хеш:
Предыдущая команда и её вывод нам уже знакомы по разделу с Hashcat. В справке сказано, что можно добавить к ней опцию -j, которая означает, сохранить вывод для john в файл:
Но у меня это не сработало — поэтому просто сохраним приведённый выше хеш в файл forjohn.hash.
Теперь нужно запустить команду вида:
Вместо формата PBKDF2-HMAC-SHA1-opencl (взлом на видеокарте) можно указать PBKDF2-HMAC-SHA1 (взлом на центральном процессоре).
У меня словарь имеет имя rockyou_cleaned.txt, а хеш помещён в файл forjohn.hash, поэтому команда следующая:
Наконец-то взломан пароль от ТД, это: 22011995
2-й вариант (пропуск брут-форса plainmasterkey)
Запускаем wlangenpmkocl с опцией -A:
Теперь нужно запустить команду вида:
Обратите внимание, что опция —wordlist заменена на опцию —stdin, которая означает считывать кандидаты в пароли из стандартного ввода.
В нашем файле pmk.txt каждому хешу соответствует его пароль — это благодаря опции -A, которую мы использовали с программой wlangenpmkocl.
То есть теперь мы выполним команду вида:
Тогда команда следующая:
Найден хеш и соответствующий ему пароль (22011995), который идёт после двоеточия.
Как по маскам создавать радужные таблицы для взлома Wi-Fi
Программа wlangenpmkocl вместо опции -i СЛОВАРЬ может получать список кандидатов в пароли из стандартного ввода. То есть следующая команда
полностью эквивалентна этой
ВНИМАНИЕ: помните о разнице опций -A и -a и выберите ту из них, которая вам подходит.
По этой причине можно генерировать кандидаты паролей в программах, поддерживающих маски и передавать их на вход wlangenpmkocl.
Для вывода кандидатов в пароли с помощью Hashcat используйте опцию —stdout в команде вида:
В этой команде hashcat генерирует пароли по маске ?d?d?d?d?d?d?d?d (пароли из восьми цифр) и из них рассчитываются PMK.
В качестве альтернативы Hashcat можно использовать Maskprocessor в команде вида:
В John the Ripper помощью опции —stdout вы можете вместо запуска взлома показать создаваемые кандидаты в пароли.
Команда, аналогичная предыдущим: