Честно говоря, John я беру не за скорость — hashcat с GPU тут вне конкуренции. Ценность John в другом: экосистема утилит *2john, которая умеет вытаскивать хеши из самых разных защищённых файлов. Это та часть инструментария которую ничем не заменишь.

Экосистема *2john

Набор скриптов для конвертации защищённых файлов в формат, который John (или hashcat) может взломать:

zip2john secret.zip > hash.txt
ssh2john id_rsa > hash.txt
keepass2john db.kdbx > hash.txt
office2john document.docx > hash.txt
pdf2john protected.pdf > hash.txt

Попался зашифрованный архив — zip2john. Нашли приватный SSH-ключ с парольной фразой — ssh2john. База паролей KeePass — keepass2john. Практически любой распространённый формат покрыт.

Базовый взлом

john hash.txt

Без флагов John сам пробует несколько режимов — single, потом словарь с правилами. Поглядеть взломанные:

john --show hash.txt

С явным словарём:

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

С правилами (мутации слов, похоже на hashcat rules):

john --wordlist=rockyou.txt --rules hash.txt

Linux-хеши

Классика: объединяем passwd и shadow и запускаем:

unshadow /etc/passwd /etc/shadow > combined.txt
john combined.txt

Режимы и форматы

--single — мутации имени пользователя, быстро, пробую всегда первым. --incremental — полный перебор по марковской модели, долго. --format=NT — явно указать формат если John не определяет автоматически. --list=formats — полный список поддерживаемых форматов, их несколько сотен.

Для параллельной работы на нескольких ядрах: --fork=4.

Когда брать John, а не hashcat

Если нужно вытащить хеш из нестандартного файла — John (вернее, его *2john утилиты). Для чистого перебора по большим спискам NTLM — hashcat с GPU быстрее. Связка «john для извлечения + hashcat для перебора» закрывает почти всё.