[116156]Улучшение #1 - Loops
Ваша петлевая структура кажется совершенно ненужной, если вы используете расширение скобки вместо этого, она может быть сгущена так:
Я показываю 4 символа только для того, чтобы заставить ее работать быстрее, просто добавьте дополнительный [116616]{a. .z}[116617] скобки для дополнительных символов длины пароля.
Пример запускается
5 символов
Это заняло ~426 минут. На самом деле [116618]Ctrl[116619]+[116620]C[116621] это, так что это еще не закончилось, но я не хотел больше ждать!
ПРИМЕЧАНИЕ:[116623] Оба этих запуска были на этом процессоре:
Улучшение #2 - Использование nice?
Следующим логическим шагом было бы [116624]nice[116625] вышеуказанные запуска, чтобы они могли потреблять больше ресурсов.
Но это только покажет. Одним из "недостатков" вашего подхода является повторный вызов [116626]openssl[116627]. С помощью [116628]{a..z}^5[116629] вы вызываете [116630]openssl[116631] 26^5 = 11881376 раз.
Одним из основных улучшений было бы сгенерировать паттерны [116632]{a..z}....[116633] и сохранить их в файл, а затем передать их как один раз в [116634]openssl[116635]. К счастью [116636]openssl[116637] имеет 2 ключевых свойства, которые мы можем использовать, чтобы получить то, что мы хотим.
Улучшение #3 - наша структура вызова openssl
Утилита командной строки [116638]openssl[116639] предоставляет переключатели [116640]-stdin[116641] и [116642]-table[116643], которые мы можем использовать здесь для однократного вызова [116644]openssl[116645] вне зависимости от того, сколько паролей мы хотим к нему передать. Эта единичная модификация снимет все накладные расходы, связанные с вызовом [116646]openssl[116647], выполнит работу, а затем выйдет из него, вместо этого мы оставим один экземпляр открытым на неопределенное время, передав ему столько паролей, сколько захотим.
Ключ [116648]-table[116649] также важен, так как он говорит [116650]openssl[116651] включить оригинальный пароль в версию с шифрами, чтобы мы могли довольно быстро работать над поиском нашего совпадения.
- Вот пример использования всего 3 символов, чтобы показать, что мы меняем:
- Так что теперь мы действительно можем обновить наш оригинальный скрипт [116652]pass.bash[116653] так:
- Теперь, когда мы запускаем его:
- Это массивное улучшение! Этот же самый поиск, который [116654]был[116655] занял более 426 минут, теперь выполнен за ~1 минуту! Если мы пробежимся, чтобы сказать "nnnnn", что примерно посередине [116656]{a..z}^5[116657] пробела в наборе символов. [116658]{a..n}[116659] это 14 символов, и мы берем 5 из них.
- Этот поиск занял ~1.1 минуту. [116660]ПРИМЕЧАНИЕ:[116661] Мы можем перебрать [116662]весь [116663] пробел из 5 символьных паролей также за ~1 минуту.
- Выводы
- Так что с реструктуризацией мы работаем намного быстрее. Этот подход масштабируется гораздо лучше, так как мы добавляем 6-й, 7-й и т.д. символ к общей длине пароля.
Предупреждаем, однако, что мы используем небольшой набор символов, в основном это только строчные символы алфавита. Если смешать все числа, как в обоих случаях, так и специальные символы, то обычно можно получить ~96 символов на позицию. Это может показаться несущественным, но это значительно увеличивает ваш пул:
- Добавление всех этих символов только что увеличило наше поисковое пространство на 2 порядка. Если мы поднимем длину пароля примерно до 10-12 символов, то это действительно сделает метод взлома грубой силы недоступным.
- Использование правильной соли, а также дополнительных NONCE'ов на протяжении всего построения хэшированного пароля может добавить еще больше камней преткновения.
Что еще?
- Вы упомянули использование [116664]Джона (Джона Потрошителя)[116665] или других инструментов для взлома. Вероятно, в настоящее время уровень техники был бы [116666]HashCat[116667].
- Там, где Джон - более узкая версия подхода, который вы пытаетесь использовать, HashCat поднимает его на другой уровень, привлекая использование GPU (до 128), чтобы действительно заставить ваши попытки взлома взлома взлететь.
Вы даже можете использовать [116668]CloudCrack[116669], который является хостируемой версией, и всего за 17 долларов США вы можете заплатить за попытку взлома пароля.
Ссылки
Real World Uses For OpenSSL
Да. По крайней мере, один процесс ждал 5,9 с. Увидел то же самое (5,3 секунды). Похоже, это был сломанный путь волоконно-оптического канала, который не был обнаружен как сломанный; он сработал (иначе симптом исчез) после отключения одного порта на коммутаторе fibrechannel: https://serverfault.com/questions/575447/server-hangs-randomly-without-log-entries