Прежде чем рассматривать особые случаи, такие как MD5, опишем изменения, которые следует внести в сам сценарий Crack. В листинге 12.1 показан стандартный фрагмент сценария, а в листинге 12.2 — исправленный фрагмент. Модификации связаны с тем, что вместо компилятора сс используется gcc. Соответственно, меняется переменная CFLAGS, и к процессу компиляции подключается библиотека crypt.
Листинг 12.1. Стандартные параметры компиляции в сценарии Crack
vanilla unix сс СС=сс
CFLAGS="-g -О $С5FLAGS"
LIBS=-lcrypt uncomment only if necessary to use stdlib crypt(),
e.g.: NetBSD MD5
gcc 2.7.2 CC=gcc
CFLAGS="-g -02 -Wall $C5FLAGS"
LIBS=-lcrypt uncomment only if necessary to use stdlib crypt(),
e.g.: NetBSD MD5
Листинг 12.2. Измененные параметры компиляции для Linux
dictgrps.conf
vanilla unix сс СС=сс?
CFLAGS="-g -О $C5FLAGS"
LIBS=-lcrypt uncomment only if necessary to use stdlib crypt(),
e.g.: NetBSD MD5
gcc 2.7.2 CC=gcc
CFLAGS="-g -02 -Wall $C5FLAGS"
LIBS=-lcrypt uncomment only if necessary to use stdlib crypt(),
e.g.: NetBSD MD5
После этих изменений уже можно приступать к компиляции программы. Но если планируется поддерживать алгоритмы хеширования MD5 и Bigcrypt, то перед первым запуском программы следует выполнить описанные ниже действия.
Включение поддержки паролей MD5
Чтобы настроить программу Crack на работу с паролями MD5, необходимо внести несложные изменения в дерево исходных кодов (листинг 12.3).
Листинг 12.3. Действия, необходимые для подготовки к отгадыванию паролей MD5
cd /usr/src/c50aMD5/src
mv libdes libdes.orig
cd util
cp elcid.c elcid.c.orig
cp elcid.c,bsd elcid.c
Примечание
В файле elcid.c определена переменная PLAINTEXTS IZE. Для паролей MD5 (в файле elcid.c, bsd) она равна 16. Это означает, что самый длинный пароль для отгадывания будет иметь 16 символов. Это значение можно увеличить до 32, но за счет существенного снижения производительности. Насколько существенного? Если учитывать только алфавитно- цифровые символы (a-z, A-Z, 0-9), то это 26 символов нижнего регистра, еще 26 — верхнего плюс 10 цифр, итого — 62 символа. Таким образом, общее число возможных 16-символьных алфавитно-цифровых паролей равно 6216, или 4,77х1028, тогда как общее число возможных 32-символьных алфавитно-цифровых паролей равно 6232, или 2,27х1057. Это существенное увеличение числа вариантов.