wtFAQ? - John the Ripper, практическое пособие

Discussion in 'Криптография, расшифровка хешей' started by Thanat0z, 26 Jul 2007.

  1. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    "Мы увидим чья стрела точней
    Чьи щиты прочней
    Чей расчет верней
    Этот спор будет решен" (с)​


    wtFAQ? - John the Ripper, практическое пособие​


    Cодержание:

    1. Вступление
    1.1 Чушь от автора (можно пропустить)
    1.2 Обозначения и прочие комментарии к статье​
    2. Краткая справка по JTR
    2.1 john.conf и принцип работы
    2.2 Режимы работы​
    3. Статистика (должен знать каждый, но вам решать)
    3.1 Множества и затраты времени (можно пропустить)
    3.2 Частые комбинации, словообразующие​
    4. Правила в JTR
    4.1 Перевод секции Wordlist
    4.2 Статистика по реальной базе (гляньте хоть мельком)
    4.3 Извращенное использование правил (для извращенцев ;))​
    5. Чарсеты
    6. External, builttin
    6.1 Создание специальных чарсетов​
    7. Соль и скорость
    7.1 Понятие скорости в JTR
    7.2 Соли и разница во времени​
    8. Пароли и хеши
    8.1 Генерёнка
    8.2 Фейк пароли
    8.3 Чудесные совпадения​
    9. Специальные возможности
    10. Ссылки
    11. О чем я не сказал
    12. Changelog



    1. Вступление
    1.1 Чушь от автора​




    Когда-то давно, наверное в начале весны мне предложили написать статью по JTR и правилам в нем, то есть объясняю правила и попутно объясняя и сравнивая правила в PassordsPro. Через пару дней я начал собирать материалы и тесты, но будучи очень ленивым человеком закинул это дело. Иногда у меня бывали просветления и у меня снова хватало интузиазма на 1-3 дня. В итоге к июлю месяцу поработав достаточно с джоном чтоб отличать правило от правила я решил дописать материал, но уже с точки зрения практического применения джона на реальных примерах в полевых условиях. К сожалению до отдыха сделать я это не успел и отложил к сентябрю, а на отдыхе мне стало так скучно, что я начал писать всё это дело с нуля, и за неимением некоторых материалов и тестов кое-что я упущу, но думаю в этом материале вы найдете то, что нигде не видели и что не знали.

    Почему JTR? Потому что на данный момент нет не одной известной мне программы, которая по своей функциональности может поспорить с джоном. Одна будет быстрее, но будет ограничена, другая красивая, но медленная, в третей еще что-то. Да и еще за джона платить не надо. Достаточно людей, которые занимаются расшифровкой не умеют работать с джоном, часто такое происходит по двум причинам - незнание англ языка и неприязнь к командной строке. Лично я не страдаю ни тем ни другим, и вообще люблю командную строку :) Постоянный житель на моем компе это Cygwin. Достаточно часто я не мог найти нужный мне софт или сделать что-то средствами CMD, зато всегда мог сделать через шелл скрипт. Для тех у кого пробелмы с англ, постараюсь что-то обьяснить, для тех у кого неприязнь к командной строке, попробуем ее отбить :)

    Сразу хочу выразить благодарности:
    X_Lex - за то что сподвиг меня на написание этого материала, за помощь в изучении JTR с самого начала
    Grey, GreenBear, hhover - за скрипты которые я использовал во время работы со статьей
    Tutton - за огромные базы реальных паролей, сразу же людям которые помогли мне когда-то в этом вопросе : ettee, c411k, -=lebed=-

    Материал основан на собственных знаниях и опытах и также не был бы возможен без материалов и помощи людей из WaPBBS Decrypt Clan за что им огромная благодарность.

    И еще, у меня не было лимонного или апельсинового сока во время написания и публикации статьи, я пил пиво и ел сыр Косичку, либо пил чай и ел шоколад с изюмом и орехами :)

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

    1.2 Обозначения и прочие комментарии к статье​
    John The Ripper - JTR, джон

    Важные замечания выделены отступом и красным знаком восклицания.

    Все примеры в статье использованы со специальной сборкой JTR от Maxx'a, версией под Windows. Это значит что основная часть функций и примеров в этой статье будет недоступна при работе с официальной версией (с оффициальной сборкой я вообще практически не работал :)) - данную версию брать здесь [thread=43156]Патчи, модификации, скрипты для John the Ripper и подбора паролей в целом[/thread]

    В статье будут упоминаться примеры работы только с DES и FreeBSD MD5 хешами - как основными жертвами JTR. Это сделано потому, что для работы с другими хешами достаточно софта, и потому что с перечисленными хешами есть некоторая специфика работы в JTR.

    У меня на компе есть john.md.exe и john.dessql.exe - для работы с разными типами хешей, в статье в общем случае будет упоминаться просто john

    2. Краткая справка о JTR
    2.1 john.conf и принцип работы​

    Я очень надеялся что не буду писать "для новичков", в плане "наберем cmd, в черном окошке напишем john -i:Alpha passwords", но видимо придеться учитывая некоторые вопросы которые поступили во время написания статьи - существует достаточно материала на русском, но люди все равно леняться читать. Все равно я постараюсь писать таким образом, предполагая что человек уже по крайней мере умеет запускать джона.

    На счет содержимого папочки run:
    john.conf - файл конфигурации
    password.lst - если верить описанию ;) то тут упомянуты самые популярные пароли с середины 90 годов.
    john.pot - в этом файле сохраняется в виде login : password то, что вы уже подобрали
    *.rec - файлы сессии. Они нужны для востановления работы сессии если вы ее прервали
    *.log - лог файл, тут всё ясно
    *.chr - чарсеты, некие "rainbow tables" джона, по ним совершается атака в режиме incremental по определенной закономерности

    Начнем вскрытие... сердцем джона или же мозгом, является его конфигурационный файл, вам часто придеться его редактировать. Крови не боитесь? Тогда открываем, нас ожидают пару банок хорошего мясного лечО :)

    Конфиг делится на секции, секции заключены в квадратные скобки. Например, [Options]. В секции Options вас будут интересовать только две опции

    Думаю тут и без знания англ можно было понять, но мало ли...Кстати комментарии выделяются с помощью # либо ;. Далее идут секции с заголовками:

    [Mask] - здесь наборы символов для режима перебора -mask
    [Builtin] - наборы символов для перебора с опцией -builtin (данный режим как и -mask есть только в версии которую мы рассматриваем)
    [List.Rules:Single] - набор правил для режима -single
    [List.Rules:Wordlist] - набор правил для режимa -wordlist
    [Incremental:*] - определение чарсетов для -incremental режима
    [List.External:*] - генераторы внешних переборщиков

    В каждом из этих блоков вы можете создавать свои наборы и правила, править и удалять что захотите, но секцию Single лучше не трогать. Не потому что джон вдруг перестанет работаеть без нее, а потому что правила в данной секции писались и тестировались достаточное время, чтобы можно было признать их авторитетность :), и потому что логины после нахождения пароля откидываются. То есть если вы нашли 100 паролей, то 100 логинов уже не смогут быть использованы в режиме -Single, очевидно это актуально когда логины разные и не придуманы вами для нумерации

    Допустим вы смогли запустить джона ;) но тут он вам выдал ошибку что хеши не загружены, очень распространенная ошибка у новичков
    ! Минимальный формат который понимает джон имеет вид login:hash. Если в конце хеша есть пробел, хеш не будет воспринят​

    И так, вы запустили джона, что же происходит дальше?
    1) из файла (дальше passfile) загружаются хеши
    2) из john.pot читаются уже найденные пароли
    3) идет сравнение хешей из этих двух файлов между собой, если совпадение найдено, то хеш выкидывается из перебора
    ! Расспространенное заблуждение, что если вы однажды нашли какой-то пароль, то в следующий раз если он будет в переборе, то он будет моментально найден. Это верно только для алгоритмов без соли!!! То есть, если у вас уже найден пароль hotdog, то дав джону хеш этого пароля с другой солью, джон его не найдет в своем pot файле​
    4) в результате в памяти будет сформирован список хешей для перебора. К примеру, подобное формирование списка для 400 000 хешей может занять около минуты
    5) производится перебор по тому режиму что вы задали - допустим атака по словарю

    2.2 Режимы работы

    Режим Single.
    Code:
    john -single passfile
    Данный режим надо прогонять всегда первым, потому что это очень быстрая операция, но смысл в этом есть только в том случае, если вы имеете реальные логины, то есть логины выступают словарем в данном случае, и используются с правилами, которые записаны в секции [List.Rules:Single]

    Режим Wordlist.
    Code:
    john -w=dictionary.txt -rules passfile
    john -w:dictionary.txt --rules=SomeRules passfile
    В данном режиме Джон использует словарь и правила из секций [List.Rules:*] которую вы указали
    Если вы указываете просто -rules, то будут использоваться стандартные правила секции [List.Rules:Wordlist].
    Если вы указываете -rules:SomeRules, то будут использоваться правила секции [List.Rules:SomeRules].

    Обратите внимание что в Джоне возможен разный синтаксис
    Code:
    -w:dict.txt
    -w=dict.dic
    -rules:test
    --rules=big
    Режим -Incremental.
    Code:
    john -i:Alpha passfile
    Брутфорс, только не тупой в стиле счетчика, то есть не 1,2,3....99,100, а брутфорс по определенным закономерностям, "интеллектуальный". Закономерности определяются файлами *.chr.

    Режим -Builtin.
    Code:
    john -i=uld8 -builtin=ld passfile
    Режим перебора по встроенному набору
    -i=uld8 обозначает, что перебор будет осуществляется по чарсету uld, длиной в 8 символов
    -builtin=ld обозначает, что по данному чарсету будут генерироваться слова из смешанного множества ld. (в слове будут И буквы И цифры)

    Режим -External.
    Code:
    john -e=Paralel01 passfile
    Режим генератора внешних переборщиков - генерация слов будет осуществляться в соответствии с правилами, описанными в секции [List.External:paralel01]

    Режим -Mask.
    Code:
    john -mask=\u\l\l\d\d\d passfile
    Режим перебора по маске, в данном примере будут генериться слова по типу Fuk666


    Подитожим:
    Режим -mask - перебор по шаблону, допустим первая буква заглавная, другие прописные
    Режим -external - перебор по специальным правилам. Часто используется как фильтр при генерации чарсета
    Режим -incremental - перебор по заранее созданным чарсет файлам, в которых учтена частота использования и позиции символов, что предоставляет некую интеллектуальность перебора, предугадывание.
    Режим -builtin - перебор по встроенному набору, нужно лишь наличие строки описания набора в конфиге

    Еще бы хотелось напомнить что лучше работать всегда с сессиями, чтоб у вас была возможность всегда восстановить атаку и чтоб без проблем запустить 2 и более джона. Делается это так:
    Code:
    john -session=name i:Alpha passfile
    восстановление сессии:
    Code:
    john -restore=name
    Стоит заметить, что следующие пары запусков джона делают одно и тоже - не полное имя комманды является ее синонимом
    Code:
    john -single passfile
    john -Si passfile
    
    john -restore=name
    john -restor=name
    
    3. Статистика
    3.1 Множества и затраты времени​




    Множество - совокупность символов. Алфавит это множество буков. С какими множествами работает дешифровщик?
    Code:
    u (26) = ABCDEFGHIJKLMNOPQRSTUVWXYZ
    l (26) = abcdefghijklmnopqrstuvwxyz
    s (32) = !@#$%^&*()`~-_=+\|[]{};:'",.<>/?
    d (10) = 0-9
    Вы должны к ним привыкнуть и запомнить. В скобках указано количество символов множества, всего 94 символа (с пробелом будет 95).

    Далее приведена таблица, в которой указано количество комбинаций в множестве, сколько займет времени прохождение этого множества. Взято для 1 DES зеша со скоростью 657700.
    В таблице alpha 6 это lu6.

    Code:
    [B]множество[/B] 	 | [B]комбинаций[/B] 	 | [B]в секундах[/B] 	 | [B]в h:m:s [/B]
    ===================================================================
    low alpha 4	 | 456976	 | 0.694809183518| 	0:00:00
    low alpha 5	 | 11881376	 | 18.0650387715 | 	0:00:18
    low alpha 6	 | 308915776	 | 469.691008058 | 	0:07:49
    low alpha 7	 | 8031810176	 | 12211.9662095 | 	3:23:31
    low alpha 8	 | 208827064576  | 317511.121447 | 	[COLOR="Red"][B]88:11:51[/B][/COLOR]
    low alpha 9	 | 5429503678976 | 8255289.15763 | 	95 days
    ------------------------------------------------------------------------
    alpha 4		 | 7311616	 | 11.1169469363 | 	0:00:11
    alpha 5		 | 380204032	 | 578.081240687 | 	0:09:38
    alpha 6		 | 19770609664	 | 30060.2245157 | 	8:21:00
    alpha 7		 | 1028071702528 | 1563131.67482 | 	[COLOR="Red"][B]18 days[/B][/COLOR]
    alpha 8		 | 53459728531456| 81282847.0906 | 	941 days
    ------------------------------------------------------------------------
    digits 4	 | 10000	 |0.0152045005322| 	0:00:00
    digits 5	 | 100000	 | 0.152045005322| 	0:00:00
    digits 6	 | 1000000	 | 1.52045005322 | 	0:00:01
    digits 7	 | 10000000	 | 15.2045005322 | 	0:00:15
    digits 8	 | 100000000	 | 152.045005322 | 	0:02:32
    digits 9	 | 1000000000	 | 1520.45005322 | 	0:25:20
    ------------------------------------------------------------------------
    low digits 4	 | 1679616	 | 2.55377223658 | 	0:00:02
    low digits 5	 | 60466176	 | 91.935800517  | 	0:01:31
    low digits 6	 | 2176782336	 | 3309.68881861 | 	0:55:09
    low digits 7	 | 78364164096	 | 119148.79747  | 	[B][COLOR="Red"]33:05:48[/COLOR][/B]
    low digits 8	 | 2821109907456 | 4289356.70892 | 	50 days
    ------------------------------------------------------------------------
    alpha digits 4	 | 14776336      | 22.4666808575 | 	0:00:22
    alpha digits 5	 | 916132832 	 | 1392.93421317 | 	0:23:12
    alpha digits 6	 | 56800235584	 | 86361.9212164 | 	23:59:21
    alpha digits 7	 | 3521614606208 | 5354439.11541 | 	[COLOR="#ff0000"][B]62 days[/B][/COLOR]
    alpha digits 8	 |218340105584896| 331975225.156 | 	3842 days
    ------------------------------------------------------------------------
    low special 4	 | 11316496	 | 17.2061669454 | 	0:00:17
    low special 5	 | 656356768	 | 997.957682834 | 	0:16:37
    low special 6	 | 38068692544	 | 57881.5456044 | 	16:04:41
    low special 7	 | 2207984167552 | 3357129.64505 | 	[COLOR="#ff0000"][B]38 days[/B][/COLOR]
    low special 8	 |128063081718016| 194713519.413 | 	2253 days
    ------------------------------------------------------------------------
    all 4		 | 78074896	 | 118.708979778 | 	0:01:58
    all 5		 | 7339040224	 | 11158.6440991 | 	3:05:58
    all 6		 | 689869781056	 | 1048912.54532 | 	[COLOR="#ff0000"][B]12 days[/B][/COLOR]
    all 7		 | 64847759419264| 98597779.2599 | 	1141 days
    all 8		 |6095689385410816| 9268191250.43| 	107270 days
    [SIZE=3]

    3.2 Частые комбинации, словообразующие​
    [/SIZE]
    Частота встречаемости букв в англ, французском, немецком, испанском языках. Красным выделено первые пять самых частых букв в англ языке

    Code:
      |  Eng  |  Fr   |  De  |  Sp  |
    =================================
    [COLOR="Red"]a | 8.167 | 7.636 | 6.51 |12.53 | [/COLOR]
    b | 1.492 | 0.901 | 1.89 | 1.42 | 
    c | 2.782 | 3.260 | 3.06 | 4.68 | 
    d | 4.253 | 3.669 | 5.08 | 5.86 | 
    [COLOR="#ff0000"]e |12.702 |14.715 |17.40 |13.68 | [/COLOR]
    f | 2.228 | 1.066 | 1.66 | 0.69 | 
    g | 2.015 | 0.866 | 3.01 | 1.01 | 
    h | 6.094 | 0.737 | 4.76 | 0.70 | 
    [COLOR="#ff0000"]i | 6.966 | 7.529 | 7.55 | 6.25 | [/COLOR]
    j | 0.153 | 0.545 | 0.27 | 0.44 | 
    k | 0.772 | 0.049 | 1.21 | 0.00 | 
    l | 4.025 | 5.456 | 3.44 | 4.97 | 
    m | 2.406 | 2.968 | 2.53 | 3.15 | 
    n | 6.749 | 7.095 | 9.78 | 6.71 | 
    [COLOR="#ff0000"]o | 7.507 | 5.378 | 2.51 | 8.68 | [/COLOR]
    p | 1.929 | 3.021 | 0.79 | 2.51 | 
    q | 0.095 | 1.362 | 0.02 | 0.88 | 
    r | 5.987 | 6.553 | 7.00 | 6.87 | 
    s | 6.327 | 7.948 | 7.27 | 7.98 | 
    [COLOR="#ff0000"]t | 9.056 | 7.244 | 6.15 | 4.63 | [/COLOR]
    u | 2.758 | 6.311 | 4.35 | 3.93 | 
    v | 0.978 | 1.628 | 0.67 | 0.90 | 
    w | 2.360 | 0.114 | 1.89 | 0.02 | 
    x | 0.150 | 0.387 | 0.03 | 0.22 | 
    y | 1.974 | 0.308 | 0.04 | 0.90 | 
    z | 0.074 | 0.136 | 1.13 | 0.52 | 
    Для англ языка имеем следующее:

    Самые частые буквы в начале слова
    T, O, A, W, B, C, D, S, F, M, R, H, I, Y, E, G, L, N, O, U, J, K
    Самые частые буквы вторые с начала
    H, O, E, I, A, U, N, R, T
    Самые частые буквы третьи с начала
    E, S, A, R, N, I
    Самые частые буквы в конце слова
    E, S, T, D, N, R, Y, F, L, O, G, H, A, K, M, P, U, W
    Более половину слов заканчиваются на буквы
    E ,T, D, S
    Буквы которые чаще всего встречаются после Е
    R,S,N,D
    Самые частые биграммы
    TH, HE, AN, IN, ER, ON, RE, ED, ND, HA, AT, EN, ES, OF, NT, EA, TI, TO, IO, LE, IS, OU, AR, AS, DE, RT, VE
    Самые частые триграммы
    THE, AND, THA, ENT, ION, TIO, FOR, NDE, HAS, NCE, TIS, OFT, MEN
    Самые частые парные комбинации одной буквы
    SS, EE, TT, FF, LL, MM, OO

    Статистика самых частых комбинаций в начале и конце слова. Сделано по моему словарю в 20мб (ровно 2320000 слов) из настоящих баз, попались и генеренные пароли, но я обнаружил это слишком поздно что отфильтровать их. top15:

    Code:
    первые       | последние
    ==============================
    c | co | cra | 1 | er | 000
    s | cr | mar | 2 | 00 | 123
    m | ma | coo | 3 | an | man
    a | mi | con | s | on | ter
    b | al | cor | e | 01 | ing
    d | ch | ale | 9 | 23 | 001
    p | st | col | a | 11 | son
    t | ba | com | n | in | ers
    1 | sa | cro | 0 | 99 | ova
    k | ca | cio | 7 | 69 | ina
    l | an | cou | 5 | 12 | one
    r | ki | pro | 4 | es | 999
    j | pa | cre | 6 | en | 111
    g | da | and | 8 | 22 | ine
    n | ro | cha | r | 77 | ler
     
    #1 Thanat0z, 26 Jul 2007
    Last edited: 6 Aug 2007
    18 people like this.
  2. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    4. Правила в JTR
    4.1 Перевод секции Wordlist​

    Перевод сделан человеком по имени *FuriouS*

    Code:
    Правила вордлиста [List.Rules:Wordlist]
    =======================
    
     [B]1. Отклоняющие флаги[/B]
    -------------------
    
    -c	отклонить правило, если слово не чувствительно к регистру
    -8	отклонить это правило, если слово не использует 8-битовые знаки
    -s	отклонить это правило, если некоторые пароли не были разделены при загрузке
    
     [B]2. Коды позиций[/B]
    ----------------
    
    Коды позиций нумеруются с 0, и используются в правилах для следующих значений:
    
    0...9	для цифр 0...9
    A...Z	для букв 10...35
    *	для наибольшей длины слова
    -	для слова (максимальной длины - 1)
    +	для слова (максимальной длины + 1)
    
    Здесь "максимальная длина" означает наибольшую длину plaintext'a поддерживаемую данным форматом.
    Эти параметры также используются для определения других номерных параметров.
    
    [B] 3. Классы знаков[/B]
    -------------------
    
    ??	получает символ: '?'
    ?v	получает гласные: "aeiouAEIOU"
    ?c	получает согласные: "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"
    ?w	получает пробел: " \t"
    ?p	получает знаки пунктуации: ".,:;'\"?!`"
    ?s	получает символы "$%^&*()-_+=|\\<>[]{}#@/~"
    ?l	получает строчные буквы [a-z]
    ?u	получает Прописные буквы [A-Z]
    ?d	получает цифры [0-9]
    ?a	получает буквы [a-zA-Z]
    ?x	получает буквы и цифры [a-zA-Z0-9]
    
    Дополнение класса может быть определено его ПРОПИСНЫМ название. Класс - "? D"  соответствует всему, кроме цифр.
    
    [B] 4. Простые команды[/B]
    --------------------
    
    :	ничего не делать со словом
    l	конвертировать в нижний регистр
    u	конвертировать в верхний регистр
    c	зделать заглавной первую букву
    C	конвертировать в нижний регистр первую букву, и в верхний остальные буквы слова
    t	изменяет регистр всех букв на противоположный (Пример: WiTtEr -> wItTeR)
    TN	изменяет регистр на противоположный после символа под номером N (Пример: "T3" -> hugoboss -> hugOboss)
    r	реверсирует слово: "Fred" -> "derF"
    d	удваивает слово: "Fred" -> "FredFred"
    f	реверсирует слово и прибавляет к исходному: "Fred" -> "FredderF"
    {	сдвигает буквы в слове на 1 знак влево: "jsmith" -> "smithj" (на два знака {{, три {{{ и т.д.)
    }	сдвигает буквы в слове на 1 знак вправо: "smithj" -> "jsmith"
    $X	добавляет символ X в конец слова
    ^X	добавляет символ X в начало слова
    
    
    [B]5. Команды контроля длины слов[/B]
    -------------------------------
    
    <N	отклоняет слово если кол-во символов больше числа N (т.е. при N=7 и обработке словаря слова более 7 символов пропускаются)
    >N	отклоняет слово если кол-во символов меньше числа N
    'N	обрезает слово справа до количества символов =N
    
    [B] 6. Грамматические команды[/B]
    ---------------------------
    
    p	придает множественное число: "crack" -> "cracks", прим* (s,ies,es только в нижнем регистре)
    P	"crack" -> "cracked",  (ed только в нижнем регистре)
    I	"crack" -> "cracking",  (ing только в нижнем регистре)
    
    [B] 7. Команды вставки/удаления[/B]
    ------------------------------
    
    [	удаляет первый символ в слове
    ]	удаляет последний символ в слове
    DN	удаляет символ на позиции с номером N
    xNM	удаляет с начала слова N символов, оставляя из остатка слова М символов (Пример: WITTERIN ->x23 -> TTE)
    iNX	вставляет в слово после символа под номером N символ X (Пример: WITTER -> i3@ -> WIT@TER)
    oNX	заменяет символ идущий после номера N на X (Пример: WITTER -> o3@ -> WIT@ER)
    
    Для использования команды "[" или "]" необходимо перед ней поставить символ "\" (Пример: WITTER -> \[\[ -> TTER)
    
    [B] 8. Конвертирующие команды[/B]
    -----------------------------
    
    S	конвертирует слово если бы была нажата клавиши SHIFT: "Crack96" -> "cRACK(^"
    V	конвертирует гласные в нижний регистр, остальные буквы в верхний: "Crack96" -> "CRaCK96"
    R	конвертирует слово в смежные (справа) клавиши на клавиатуре : "Crack96" -> "Vtsvl07"
    L	конвертирует слово в смежные (слева) клавиши на клавиатуре : "Crack96" -> "Xeaxj85"
    
    [B] 9. Команды доступа к памяти[/B]
    ------------------------------
    
    M	запоминает слово
    Q	отклоняет слово если оно не изменилось (после определенных манипуляций)
    
    [B] 10. Классы команд[/B]
    --------------------------
    
    sXY	заменить в слове символы X на символы Y (Пример: s$G -> Wi$kY -> WiGkY)
    s?CY	заменить в слове класс знаков (п.3) C на символ(ы) Y
    @X	удаляет все символы X из слова (Пример: @[Sa&] для слова FiShaR&t -> FihRt)
    @?C	удаляет все классы знаков (п.3) C из слова (Пример: @?v для слова FiShaR&t -> FShR&t)
    !X	отклонить слово если оно содержит символ(ы) X
    !?C	отклонить слово если оно содержит классы C
    /X	отклонить слово если оно не содержит символ(ы) X
    /?C	отклонить слово если оно не содержит классы C
    =NX отклоняется слово, если на позиции N не символ X
    =N?C отклонить слово если на позиции N не символы класса C
    (X	отклонить слово если первый символ не X
    (?C	отклонить слово если первый символ не один из класса C
    )X	отклонить слово если последний символ не X
    )?C	отклонить слово если последний символ не из класса C
    %NX	отклонить слово если оно не содержит количество =N символов X
    %N?C	отклонить слово если оно не содержит количество =N класса C
    
    [B]  Правила препроцессора[/B]
    -------------------------
    
    preprocessor используется, чтобы комбинировать (объединить) правила в одну исходную линию.
    Например, если Вы хотите заставить Джона пробовать нижний регистр букв в слове с цифрами добавленными в конец, вы могли бы написать правило для каждой цифры, 10 общих правил. Теперь представьте добавлять в конец слова двузначные числа - файл конфигурации стал бы большим и уродливым.
    
    С использованием препроцессора можете делать эти правила более просто и компактно. Просто пишите правило в линию, содержащую части этих правил, описанные выше, в скобках. Тогда preprocessor произведет сборку правил воедино. Для примера описанного выше, правила будут ' l$ [0-9] ' (переводится слово в нижний регистр и добавляется в конец слова цифра от 0 до 9, аналогично и ' l$ [0-9] $ [0-9] ' (переводится слово в нижний регистр  и добавляются в конец две цифры). Вы можете комбинировать(объединять) их с
    перечень знаков, подобно ' [aeiou] ' тогда будут использоваться гласные, и ' [aeiou0-9] ' будет использоваться гласные и цифры. Если вы должны попробовать сначала гласные, а затем весь другие буквы, вы можете использовать ' [aeioua-z] ' - тогда preprocessor не производит дубликат, управляя формированием слов.
    
    Некоторые знаки контроля в правилах, например '[', открывают диапазон символов, '-' отмечает диапазон внутри списка, и т.д). Для их использования вы должны подставить перед ними символ '\',  если вы хотите поместить их внутри правила без того, чтобы использовать их специальное значение. Также  приставка ':' обозначит для препроцессора начало новой секции.
    4.2 Статистика по реальной базе

    А теперь посмотрим статистику, какое правило сколько паролей вскрывает. Условия теста следующие:
    1) в базе 446684 уникальных реальных пароля одного крупного портала (брал md5 чтобы сократить время для вычеслений)
    2) пароли длинной 4 и менее символов в базе не встречаются
    3) в паролях не встречаются спецсимволы
    4) использовались модифицированные словари, не помню откуда я их качал, но имеют название они типа lenght04.txt.
    5) в словарях все слова в нижнем регистре (кроме словарей на 2 и 3 символа, там есть комбинации с заглавными буквами)

    Сначала я пытался прогнать правила которые изменяют слово, а потом по словарю без изменений. Что это значит? Что сначала я допустим прогнал базу по словарю длинной в 3 и правилом double, и только потом просто прогнал словарем в 6 символов. В следующей таблице будет отображена статистика поочередного использования правил, то есть я не затирал pot-файл, а дальше продолжал атаку. В конце использованы несколько стандартных правил, а в середине правила которые я применил на основе статистики и своих наблюдений. К примеру вы наверное достаточно часто видели слова с окончаниями на man, ey, ter или началом на blue, red, crazy и тд и тп.
    Формат таблицы: словарь, найденных паролей, затраченное время. Правило указано в той же строке, где написано сколько паролей загружено.

    Code:
    |============= Loaded 446684 password hashes with rule ":"
    | 05 | 7326  | 05:29 
    | 06 | 11093 | 08:44 
    | 07 | 8145  | 06:17 
    | 08 | 6384  | 05:04
    |============= Loaded 413736 password hashes with rule "d"
    | 03 | 1047  | 00:49 
    | 04 | 1504  | 01:18 
    | 05 | 287   | 00:33 
    | 06 | 63    | 00:31 
    | 07 | 9     | 00:32 
    | 08 | 1     | 00:35 
    |============= Loaded 410825 password hashes with rule "u"
    | 05 | 978   | 01:11 
    | 06 | 1362  | 01:36 
    | 07 | 848   | 01:13 
    | 08 | 554   | 01:00
    |============= Loaded 407083 password hashes with rule "c"
    | 05 | 1030  | 01:17 
    | 06 | 1589  | 01:48 
    | 07 | 1091  | 01:24 
    | 08 | 785   | 01:12 
    |============= Loaded 402588 password hashes with rule "l"
    | 05 | 4     | 00:19 
    | 06 | 4     | 00:27 
    | 07 | 0     | 00:29 
    | 08 | 1     | 00:32 
    |============= Loaded 402579 password hashes with rule "C"
    | 05 | 3     | 00:20 
    | 06 | 3     | 00:27 
    | 07 | 2     | 00:30 
    | 08 | 1     | 00:32 
    |============= Loaded 402570 password hashes with rule "r"
    | 05 | 461   | 00:38 
    | 06 | 467   | 00:46 
    | 07 | 146   | 00:35 
    | 08 | 64    | 00:34 
    |============= Loaded 401432 password hashes with rule "f"
    | 03 | 100   | 00:09 
    | 04 | 40    | 00:14 
    | 05 | 5     | 00:20 
    | 06 | 2     | 00:27 
    |============= Loaded 401285 password hashes with rule "p"
    | 03 | 8     | 00:05 
    | 04 | 248   | 00:22 
    | 05 | 396   | 00:36 
    | 06 | 183   | 00:34 
    | 07 | 188   | 00:37 
    | 08 | 259   | 00:43 
    |============= Loaded 400003 password hashes with rule "P"
    | 03 | 29    | 00:06 
    | 04 | 70    | 00:15 
    | 05 | 49    | 00:21 
    | 06 | 24    | 00:27 
    | 07 | 38    | 00:31 
    | 08 | 25    | 00:33 
    |============= Loaded 399768 password hashes with rule "I"
    | 03 | 38    | 00:06 
    | 04 | 31    | 00:13 
    | 05 | 40    | 00:20 
    | 06 | 40    | 00:28 
    | 07 | 17    | 00:29 
    | 08 | 10    | 00:32
    
    Специальные правила
    Code:
    |============= Loaded 399592 password hashes with rule "$m$a$n"
    | 02 | 25    | 00:01 
    | 03 | 204   | 00:13 
    | 04 | 323   | 00:26 
    | 05 | 260   | 00:30 
    | 06 | 162   | 00:33 
    | 07 | 37    | 00:30 
    | 08 | 9     | 00:32 
    |============= Loaded 398572 password hashes with rule "c$m$a$n"
    | 02 | 2     | 00:00 
    | 03 | 13    | 00:06 
    | 04 | 26    | 00:13 
    | 05 | 19    | 00:20 
    | 06 | 14    | 00:27 
    | 07 | 4     | 00:29 
    |============= Loaded 398494 password hashes with rule "$e$i$n"
    | 03 | 13    | 00:05 
    | 04 | 8     | 00:12 
    | 05 | 3     | 00:19 
    | 06 | 2     | 00:26 
    |============= Loaded 398468 password hashes with rule "c$e$i$n"
    | 02 | 1     | 00:00 
    |============= Loaded 398467 password hashes with rule "$e$y"
    | 03 | 39    | 00:06 
    | 04 | 125   | 00:17 
    | 05 | 39    | 00:20 
    | 06 | 8     | 00:27 
    | 07 | 2     | 00:29 
    |============= Loaded 398254 password hashes with rule "c$e$y" 
    | 03 | 2     | 00:05 
    | 04 | 8     | 00:12 
    | 05 | 5     | 00:19 
    |============= Loaded 398239 password hashes with rule "u$e$y" 
    | 03 | 2     | 00:05 
    | 04 | 8     | 00:12 
    | 05 | 4     | 00:19 
    |============= Loaded 398225 password hashes with rule "$i$n" 
    | 03 | 30    | 00:06 
    | 04 | 143   | 00:18 
    | 05 | 61    | 00:22 
    | 06 | 34    | 00:30 
    | 07 | 10    | 00:29 
    | 08 | 3     | 00:32 
    |============= Loaded 397944 password hashes with rule "^d^e^r" - reddog, redsky, redcadilac
    | 02 | 16    | 00:00 
    | 03 | 65    | 00:07 
    | 04 | 101   | 00:16 
    | 05 | 88    | 00:23 
    | 06 | 49    | 00:28 
    | 07 | 20    | 00:30 
    | 08 | 4     | 00:32 
    |============= Loaded 397601 password hashes with rule "^d^e^r^[0-9]" - 1remikie, 5redhommie
    | 03 | 2     | 00:53 
    | 04 | 8     | 02:04 
    | 05 | 5     | 03:17 
    | 06 | 5     | 04:29 
    |============= Loaded 397581 password hashes with rule "$1$9$[0-9]$[0-9]" - money1990, katie1954
    | 02 | 544   | 00:49 
    | 03 | 921   | 09:34 
    | 04 | 1157  | 21:40 
    | 05 | 555   | 33:49 
    | 06 | 361   | 37:32 
    | 07 | 117   | 47:38 
    | 08 | 60    | 51:40 
    |============= Loaded 393866 password hashes with rule "{" 
    | 05 | 319   | 00:33 
    | 06 | 257   | 00:37 
    | 07 | 63    | 00:31 
    | 08 | 41    | 00:33 
    |============= Loaded 393186 password hashes with rule "{{"  
    | 05 | 272   | 00:30 
    | 06 | 208   | 00:35 
    | 07 | 35    | 00:30 
    | 08 | 10    | 00:32 
    |============= Loaded 392661 password hashes with rule "{{{" 
    | 04 | 199   | 00:31 
    | 05 | 312   | 00:47 
    | 06 | 76    | 00:32 
    | 07 | 27    | 00:32 
    |============= Loaded 392047 password hashes with rule "{{{{" 
    | 05 | 201   | 00:28 
    | 06 | 146   | 00:32 
    | 07 | 80    | 00:32 
    | 08 | 102   | 00:36 
    |============= Loaded 391518 password hashes with rule "{{{{{"
    | 06 | 234   | 00:36 
    | 07 | 38    | 00:30 
    | 08 | 29    | 00:32 
    |============= Loaded 391217 password hashes with rule "{{{{{{" 
    | 07 | 77    | 00:32 
    | 08 | 11    | 00:31 
    |============= Loaded 391129 password hashes with rule "{{{{{{{" 
    | 08 | 33    | 00:32 
    |============= Loaded 391096 password hashes with rule "]" 
    | 06 | 570   | 00:44 
    | 07 | 750   | 00:57 
    | 08 | 376   | 00:44 
    |============= Loaded 389400 password hashes with rule "]]" 
    | 07 | 334   | 00:36 
    | 08 | 481   | 00:44 
    |============= Loaded 388585 password hashes with rule "]]]" 
    | 08 | 188   | 00:24 
    |============= Loaded 388397 password hashes with rule "R"
    | 05 | 27    | 00:20 
    | 06 | 16    | 00:26 
    | 07 | 1     | 00:28 
    | 08 | 1     | 00:30 
    |============= Loaded 388352 password hashes with rule "L" 
    | 05 | 69    | 00:22 
    | 06 | 44    | 00:28 
    | 07 | 2     | 00:29 
    | 08 | 0     | 00:31 
    |============= Loaded 388327 password hashes with rule "$[0-9]" 
    | 04 | 1891  | 03:38 
    | 05 | 4735  | 06:36 
    | 06 | 3790  | 06:51 
    | 07 | 3539  | 07:01 
    | 08 | 1032  | 05:38 
    |============= Loaded 373250 password hashes with rule "-c <+>2!?Acr" 
    | 05 | 3     | 00:18 
    | 06 | 6     | 00:24 
    | 07 | 4     | 00:26 
    | 08 | 2     | 00:28 
    |============= Loaded 373235 password hashes with rule "-c >2!?AMrQc" 
    | 05 | 11    | 00:18 
    | 06 | 5     | 00:24 
    | 07 | 2     | 00:26 
    | 08 | 3     | 00:29 
    |============= Loaded 373214 password hashes with rule "-c <*>2!?Acp" 
    | 04 | 4     | 00:12 
    | 05 | 18    | 00:18 
    | 06 | 8     | 00:23 
    | 07 | 7     | 00:25 
    | 08 | 26    | 00:28 
    |============= Loaded 373151 password hashes with rule "-c <*>2!?Ac[PI]" 
    | 03 | 4     | 00:09 
    | 04 | 4     | 00:22 
    | 05 | 5     | 00:35 
    | 06 | 1     | 00:48 
    | 07 | 2     | 00:52 
    | 08 | 1     | 00:57 
    После применения правил осталось 373134 паролей.

    А теперь без разбора каждого правила посмотрим сколько паролей у нас найдется через стандартные правила, то есть при обычном запуске -rules

    Code:
    |============= Loaded 446685 password hashes with standart rules
    | 03 | 1444   | 05:34
    | 04 | 5737   | 16:15 
    | 05 | 16674  | 29:44 
    | 06 | 19068  | 37:57 
    | 07 | 14365  | 33:29 
    | 08 | 8607   | 31:01 
    Итого осталось 380790 хешей.

    Ну, а теперь посмотрим сколько паролей можно поднять с необработанной базы, нестандратными правилами. После каждого правила john.pot затирался (кажется :), но на самом деле, тут лишь пару правил друг друга перекрывают, и это не столь важно). Уклон делался на частые состовляющие имен, фамилий, и просто частые комбинации


    Code:
    |============= Loaded 446685 password hashes with rule "$m$a$n"
    | 02 | 51  | 00:02 
    | 03 | 392 | 00:22 
    | 04 | 514 | 00:34 
    | 05 | 395 | 00:38 
    | 06 | 162 | 00:36 
    | 07 | 37  | 00:34 
    | 08 | 9   | 00:40 
    |==== [COLOR="#ff0000"]1560[/COLOR] 
    |
    |============= Loaded 446685 password hashes with rule "$e$r$s"
    | 02 | 9   | 00:00 
    | 03 | 115 | 00:10 
    | 04 | 209 | 00:22 
    | 05 | 113 | 00:26 
    | 06 | 14  | 00:30 
    | 07 | 8   | 00:32 
    | 08 | 6   | 00:35 
    |==== [COLOR="#ff0000"]474[/COLOR]
    |
    |============= Loaded 446685 password hashes with rule "$t$e$r" 
    | 02 | 37  | 00:01 
    | 03 | 204 | 00:14 
    | 04 | 188 | 00:21 
    | 05 | 146 | 00:28 
    | 06 | 36  | 00:31 
    | 07 | 7   | 00:33 
    | 08 | 8   | 00:36 
    |==== [COLOR="#ff0000"]626[/COLOR]
    |
    |============= Loaded 446685 password hashes with rule "$e$r" 
    | 03 | 337 | 00:19 
    | 04 | 1140| 01:02 
    | 05 | 498 | 00:44 
    | 06 | 179 | 00:39 
    | 07 | 64  | 00:36 
    | 08 | 75  | 00:40 
    |==== [COLOR="#ff0000"]2293[/COLOR]
    |
    |============= Loaded 446685 password hashes with rule "$a$n" 
    | 03 | 219 | 00:15 
    | 04 | 407 | 00:33 
    | 05 | 199 | 00:30 
    | 06 | 80  | 00:33 
    | 07 | 16  | 00:33 
    | 08 | 8   | 00:35 
    |==== [COLOR="#ff0000"]929[/COLOR]
    |
    |============= Loaded 446685 password hashes with rule "$e$n" 
    | 03 | 152 | 00:12 
    | 04 | 382 | 00:29 
    | 05 | 112 | 00:26 
    | 06 | 50  | 00:31 
    | 07 | 11  | 00:32 
    | 08 | 13  | 00:36 
    |==== [COLOR="#ff0000"]720[/COLOR]
    |
    |============= Loaded 446685 password hashes with rule "$e$s" 
    | 03 | 221 | 00:15 
    | 04 | 338 | 00:27 
    | 05 | 152 | 00:29 
    | 06 | 80  | 00:33 
    | 07 | 23  | 00:34 
    | 08 | 20  | 00:36 
    |==== [COLOR="#ff0000"]834[/COLOR]
    |
    |============= Loaded 446685 password hashes with rule "^e^u^l^b" 
    | 02 | 12  | 00:00 
    | 03 | 46  | 00:08 
    | 04 | 96  | 00:18 
    | 05 | 52  | 00:24 
    | 06 | 28  | 00:31 
    | 07 | 4   | 00:32 
    | 08 | 1   | 00:35
    |==== [COLOR="#ff0000"]239[/COLOR]
    Кстати посмотрите какие слова нашло по словарю с применением правила "$e$n" - характерного окончания слов для языков германской группы (красным выделены имена и названия):

    То есть казалось бы по неосмысленным/обрезанным словам с использованием правил получились осмысленные, и более того собственные имена.
    Кстати на эти тесты, повторы, фильтрацию, оформление и прочие дополнительные действия я потратил 3 дня. Так что прежде чем сами захотите сделать такой же анализ, начинайте делать это с утра :) ближе к ночи сделаете.

    4.3 Извращенное использование правил - JTR как средство для создания и правки словарей
    Что делать когда делать нечего, а хочется чем-то заняться? о... я знаю о чем вы подумали, именно так могут назвать некоторые люди извращения, которые мы будем сейчас делать с JRT :)

    Иногда надо подправить словари или создать по определенным параметрам, часто под рукой нет специализированного софта или вы не обладаете знаниями в языках программирования чтобы самому написать скрипт/утилиту для этого, выход в этой ситуации сам JRT.

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

    Code:
    1746nvs
    1746nvs
    1747
    804861
    8048709648
    80487418456935946767439038870690
    8048769500
    804881872
    'eamonn
    1fish2fish
    [gunnar
    [istein
    [ngelholm
    \berg
    \degaard
    \deg}rd
    mdf
    mdf_documentor_iain_stevenson
    mdhazali
    mdi
    mdifficulty
    mdin
    me-my-mo-maig
    me/in
    me109s
    me110
    
    Когда словарь имеет размер в несколько десятков мегабайт, править подобные словари ручками напряжно. Что делать? - "снять штаны и бегать" (с) как было сказано в одной детской книжке нам не подходит, и поэтому мы открываем файлик john.conf и ставим указатель курсора перед текстом [List.Rules:Wordlist] - будем создавать свои правила для правки словариков (почему именно в этом месте? - просто для удобства)
     
    #2 Thanat0z, 6 Aug 2007
    Last edited: 6 Aug 2007
  3. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Code:
    [B][List.Rules:dic_wo_numbers][/B]
    !?d
    
    [B][List.Rules:dic_wo_s] [/B]
    !?s
    
    [B][List.Rules:dic_wo_p] [/B]
    !?p
    
    [B][List.Rules:dic_wo_u] [/B]
    !?u
    
    [B][List.Rules:dic_4des] [/B]
    <9
    
    [B][List.Rules:dic_cut8] [/B]
    '8
    
    [B][List.Rules:dic_cut8ex] [/B]
    '8Q
    
    [B][List.Rules:dic_u2l][/B]
    /?ul
    
    [B][List.Rules:dic_ad][/B]
    (?a)?d
    
    [B][List.Rules:dic_dsp][/B]
    !?d!?s!?p
    Пояснения:
    Code:
    [B]dic_wo_numbers[/B] - откинули слова, в которых есть цифры
    [B]dic_wo_s[/B]       - откинули слова, в которых есть спецсимволы
    [B]dic_wo_p[/B]       - откинули слова, в которых есть знаки пунктуации
    [B]dic_wo_u [/B]      - откинули слова, в которых есть прописные буквы
    [B]dic_4des[/B]       - откинули слова, в которых есть слова более 8 символов
    [B]dic_cut8[/B]       - обрезали слова до 8 символов
    [B]dic_cut8ex[/B]     - обрезали слова до 8 символов и оставили только их
    [B]dic_u2l[/B]        - слова с вхождением прописных букв стали теперь только со строчными буквами
    [B]dic_ad[/B]         - оставили слова которые начинаются с буков и заканчиваются цифрой
    [B]dic_dsp[/B]        - за раз откинули цифры, спецсимволы и пунктуацию.
    Не панацея от всех бед, но использовать можно.

    А если захотите к примеру словарик с годами, можно сделать так
    Code:
    john.md.exe -session=1 -mask:19\d\d -stdout
    5. Чарсеты

    Чарсет - файлы с расширением chr которые представляют собой схему/таблицу в которой согласно статистическим данным учитывается вероятность появления символов на какой-то позиции и в большом ряде случаев позволяет максимально сократить время нахождения пароля.
    Чарсеты используются во время режима incremental, слова выдаваемые чарсетом могут быть разными, взависимости от того по каким критериям он создавался. Чарсет генерируется на основе уже найденных паролей, то есть через файл john.pot. Если вы нашли только пароли qwerty и hotsex, то естественно чарсет на этой основе будет хиленьким, и мягко говоря бесполезным.
    Допустим у вас pot-ный файл в 1 мб. Тут совершенно очевидно что в нём пароли разной длины и из символов разных множеств. Чарсет составленный из всех множеств символов называется all.chr и есть в стандартной поставке. В конфиге его описание будет приблизительно такое

    Code:
    [Incremental:All]
    File = $JOHN/all.chr
    MinLen = 7
    MaxLen = 7
    CharCount = 95
    MinLen и MaxLen соответственно минимальная и максимальная длина для слов которые будут кандидатами в пароль, а CharCount = 95 количество символов.
    Стоит напомнить что в режиме incremental возможно получить слова максимальной длинной в 8 символов.
    Code:
    john -i:All -stdout > __charset-all.txt
    words: 3725912  time: 0:00:00:01 0%  w/s: 2620K  current: abe8014
    Session aborted
    Фрагмент файла __charset-all.txt
    Code:
    aporidt
    aporian
    aporial
    aporiam
    aporia1
    aporias
    aporia2
    aporiac
    aporia!
    Посмотрев на этот фрагмент (не увлекайтесь, за секунду вы получите файл в 20-50 мб), вы можете спросить "множество из 95, а получаем слова только ld/ls". И вы будете правы - получаемые слова не обязательно будут содержать хотя бы один символ из множеств, с которыми он создан, и как это обойти, я покажу позже.

    В чем же особенность использования режим incremental? - в том что после того как будет попробована комбинация 123, то не обязательно следующими будет 124 и 125. Это для режима mask мы имеем некий линейный счетчик, а с чарсетами ситуация будет другая, на основе анализа john.pot который заложен в чарсете и будет предпринят следующий шаг.
    Code:
    aporian
    aporial
    aporiam
    aporia1
    как вы сами видите здесь нет линейности. Таким образом, пароли будут находиться взависимости от того, насколько часто встречалась та или иная комбинация символов в john.pot файле на момент создания чарсета.

    И так, имеем john.pot с найденными паролями. Сделаем свой чарсет.
    Code:
    john -make:_newcharset.chr
    Loaded 14581 plaintexts
    Generating charsets... 1 2 3 4 5 6 7 8 DONE
    Generating cracking order... DONE
    Successfully written charset file: _newcharset.chr (73 characters)
    
    если мы хоти его использовать, вносим в конфиг изменения:
    Code:
    [Incremental:charset1]
    File = $JOHN/_newcharset.chr
    MinLen = 5
    MaxLen = 7
    CharCount = 73
    Если мы укажем CharCount отличный от того, который был указан во время создания, то джон нас об этом предупредит.
    Во время генерации чарсета джон не смотрит в конфиг, так что вы можете после еще раз создать чарсет с таким же именем, он его просто перезапишет.
    Протестируем наш чарсет
    Code:
    john -i=charset1 passfile
    Следует отметить, что больше всего результатов incremental дает в начале атаки.
    Какие результаты дают чарсеты?
    Тестировалось на базе в 83к. Когда было найдено словарями и прочим всё основное, это около 8000 паролей (не уникальных), я создал чарсет по уже найденным паролям - pot.chr, а потом создал чарсет основанный на словаре имен - names.chr (вы спросите "как?" - оставайтесь с нами, и вы узнаете ;)). Результаты такие
    Code:
    1 час - 71 - pot.chr
    1 час - 48 - names.chr
    Или другой тест, берем чистую базу, и прогоняем ее словарем имен (от 5 символов) и чарсетом построенном на этом словаре.
    Code:
    Loaded 83139 password hashes with 4096 different salts (Traditional DES)
         найдено	|charset| dictionary 
    =====================================
     241 passwords	|  11m	|  03m 55s 
     211 passwords	|  10m	|  03m 25s 
     100 passwords	|  03m	|  01m 22s 
      58 passwords	|  01m	|  00m 40s
    Все 5 буквенные имена по словарю перебрало за 4m53s, кстати.

    Не много по сравнению со всей базой, но хоть какой-то результат когда уже выхода паролей нет. Не особо смотрите на время, когда вы столкнетесь с базой в сотни тысяч DES хешей со всеми 4096 солями, вам 1 час покажется мелочью. Из этой базы за 3 не полных суток основными правилами и словарями было найдено в районе 12-15к паролей. Для md5 проще, за несколько часов из базы в 100к хешей я нахожу от 30% паролей.

    6. External, builtin
    External - внешние переборщики
    Как вам уже известно, джон может работать в разных режимах. Один из них External. В чем же его особенность? - в том что он создает слово (wordlist, к примеру воздействует на что-то).

    Вы видели когда-нибудь пароли типа qweasd123 или ui78op90? Это последовательности на клавиатуре, как правило близкие по расположению клавишь. Можно сесть, открыть перед собой текстовый файлик, и возможно через сутки вы забьете туда что-то стоящее. Правда у вас будет болеть спина, руки, и e вас перед глазами постоянно будет вид вашей клавы, на которую вы пялились добрых 20 часов. Совсем как у меня после написания этого материала :)
    В одной из официальных версий JTR в конфиг был включен переборщик Keyboard, с его помощью как раз можно найти такие пароли. Этот переборщик (и Keyboard_nospec) вы можете найти в соседней теме, или прямые линки кому лень искать:
    forum.antichat.ru/showpost.php?p=428429&postcount=3
    forum.antichat.ru/showpost.php?p=428429&postcount=4
    В чем разница между ними? - Keyboard_nospec генерирует пароли без спецсимволов - только цифры и строчные буквы. Обратите внимание на параметр fuzz - время перебора больше, но и пароли сложнее находит.

    Вот небольшой фрагмент из того что нашлось через эти переборщики:
    Code:
    1234rg           (<Unnamed>)
    2qwer4           (<Unnamed>)
    2qwer4           (<Unnamed>)
    2q2w3e           (<Unnamed>)
    vfr45            (<Unnamed>)
    w1234            (<Unnamed>)
    rgbgf            (<Unnamed>)
    zsedc            (<Unnamed>)
    cfert            (<Unnamed>)
    bvder            (<Unnamed>)
    5tgfr4           (<Unnamed>)
    7u7u7u           (<Unnamed>)
    90polo           (<Unnamed>)
    ert56y           (<Unnamed>)
    asdsw2           (<Unnamed>)
    Вот результаты выполнения для Keyboard_nospec на уже предварительно обработанной базе DES в ~70к

    для 5 символов
    Code:
    fuzz: 0 - guesses: 1  time: 0:00:00:27  c/s: 11730K  trying: mju7u - mjmjm
    fuzz: 1 - guesses: 5  time: 0:00:05:37  c/s: 11700K  trying: mko9i - mkmkm
    для 6 символов
    Code:
    fuzz: 0 - guesses: 5  time: 0:00:01:36  c/s: 11694K  trying: mjuikj - mjmjmj
    fuzz: 1 - guesses: 12  time: 0:00:37:18  c/s: 11638K  trying: mkmkjh - mkmkmk
    для 7 символов тестировал только с fuzz=0
    Code:
    guesses: 1  time: 0:00:05:34  c/s: 11683K  trying: mjmnhyt - mjmjmjm
    6.1 Создание специальных чарсетов - фильтры

    И так, вернемся к incremental и созданию специальных чарсетов.
    Вы хотите перебирать по чарсету All, но вам не нравится, что этот чарсет перекрывает чарсет Alpha и Digits. С одной стороны хорошо - вы захватываете чуть большое множество паролей, но с другой стороны выполняете возможно лишнюю работу, а если вы точно знаете что должны быть строчные буквы в пароле? У вас есть два решения

    1)
    Code:
    john -make=charset.chr -e=Filter_Alpha
    Что случится после выполнения это команды? В чарсет попадут только те слова, которые были из буков, и ничего более. Посмотрите в конфиг, там есть несколько фильтров, которые могут вам пригодиться.

    2)
    Code:
    john -make=low.chr -builtin=l
    Вот мы и добрались до загадочного набора builtin. В данном случае мы делаем тоже самое что и в первом примере, но используем множество l.
    Таким образом создавая свои множества простым перечислением нужных символов, вы можете обойтись без внешних переборщиков. Описание секции Builtin в самом начале конфига.

    А теперь посмотрите на следующие примеры, и оцените какие возможности открываются за счет внешних переборщиков и builtin
    Code:
    john -make=Some -builtin=ud
    john -i=All -e=Filter_Alpha
    john -i=All -builtin=v    
    (v = aeijou)
    
    Стоит заметить, что когда вы используете конструкцию типа -e:mixed (где mixed к примеру lds) или -builtin:lds, то результатом будет именно общее множество, то есть "l AND d AND s", пример
    Code:
    suxx5!
    d1ngo%
    $akura11
    
    Зачем вам lds? Простой пример - корпоративная политика в фирме, которая говорит, что пароль должен быть обязательно вида "password;01". Кстати замечание по этому поводу - лично свидетель того, что многие пользователи из-за своей лени не далеко уходят от этого пароля, к примеру они каждую неделю меняют его просто на что-то типа "password;02" то есть меняют только последнюю цифру или незначительно его изменяют.

    Еще пример. Представим что вы регулярно сидите в комп-клубе. И там есть паренек-гопарек, каждый день он отбирает у малышей в клубе деньги, и сидит ночами на порносайтах под мемберскими аккаунтами. Так как вы человек мирный, лицо бить ему не будете, но справедливость должна восторжествовать, вы должны что-то сделать и вы уже добыли его хеши от порносайтов. Понаблюдаем за ним - он целую ночь сидит согнувшись над столом, правая рука что-то делает под столом, а левая на клаве. Куда бы вы положили левую руку на клаве? Могу предположить что явно не с правой стороны.
    "Ага, - думаете вы - чертов онанист, наверное, пароль набирает легкий и левой рукой".

    Смотрим на клаву и вспоминаем статистику паролей которые вы видели. Создаем какие-то множества в builtin, тут уже всё зависит от вашей фантазии и какой статистикой она подкормлена, к примеру:
    Code:
    [Builtin]
    z=12345qazwsxedc
    x=wersdf12345
    q=qwerty12345
    Еще раз посмотрите на клаву и вспомните частые пароли типа qwe123qaz.
    Готовим танки:
    Code:
    john -make=z -builtin=z
    john -make=x -builtin=x
    john -make=q -builtin=q
    Создали чарсеты, в них вышло по 12 и 14 символов, не так много, затраты времени по расшифровке будут мизерными, можно сравнивать с множеством digits.
    В бой:
    Code:
    john.des.exe -i=z pornogop.txt
    Loaded 10 password hashes with 10 different salts (Traditional DES [64/64 BS MMX])
    guesses: 0  time: 0:00:00:04 0%  c/s: 11110K  trying: 1qazewx - 2wesws
    qezz132 (Pornogop1)
    И вот не прошло и минуты у вас есть один из паролей. А на утро уже все дети смотрят халявную порнуху - в итоге все рады, плохой человек наказан, а вы радуетесь новым достижениям.

    7. Соль и скорость
    Когда я писал материал "Заметки: какой брутер выбрать" я допустил серьезную ошибку, повелся на циферки в джоне, и по аналогии с другими программами счел что скорость показывается в пароль/секунда и что чем больше хешей, тем скорость больше. Спасибо что sic57005 и segamegasega обратили на это внимание. Но я был молод и глуп, и вообще это было давно и не правда :) Сегодня я попробую исправить свои ошибки в этом плане.

    7.1 Понятие скорости в JTR​

    И так, что же кроется за волшебными символами c/s в джоне? На сайте джона можно найти следующее
    Учитывая это и то что я смог найти по этой проблеме могу русским языком сказать следующее :
    1) реальную скорость можно узнать лишь опцией -test, но и этот метод показывает очень странные цифры :)
    2) c/s - это комбинаций/сравнений в секунду
    3) скорость, которая показывается во время работы джона, есть пункт 2
    4) сравнения в секунду значит - зашифровать и сравнить, не просто зашифровать
    5) во время работы высчитывается средняя скорость
    6) по завершению высчитывается общая суммарная скорость​

    То что показывается во время работы джона можно приблизительно представить формулой
    Code:
    Vo = Vt * Х
    
    Х = количество хешей
    Vt = скорость перебора в режиме -test, то есть 1 хеш
    
    То есть можно сказать что:
    Vo - это относительная скорость скорость (учитывает что надо сделать Х проверок, чтобы проверить один хеш после операции crypt)
    Vt - это абсолютная скорость (определяется быстротой операции crypt)
    
    Цифры из реальности:
    Code:
    john.dessql.exe -test
    
    Benchmarking: Traditional DES [64/64 BS MMX]... DONE
    Only one salt:  643782 c/s
    Only one salt:  645267 c/s
    Only one salt:  649967 c/s
    Три теста показали разную скорость, на самом деле с такими цифрами, погрешность терпимая

    На практике:
    Code:
    john.dessql.exe -mask:\d\d\d\d\d\d\d 111des.txt
    Loaded 1 password hash (Traditional DES [64/64 BS MMX])
    time: 0:00:00:15 100%  c/s: 649730
    time: 0:00:00:15 100%  c/s: 655050
    time: 0:00:00:15 100%  c/s: 652400
    time: 0:00:00:15 100%  c/s: 653722
    time: 0:00:00:15 100%  c/s: 654407
    time: 0:00:00:15 100%  c/s: 651720
    time: 0:00:00:15 100%  c/s: 651720
    time: 0:00:00:15 100%  c/s: 654407
    time: 0:00:00:15 100%  c/s: 652400
    time: 0:00:00:15 100%  c/s: 656426
    Посмотрим с freebsd md5, алгоритм медленней, и нету таких погрешность как у DES в несколько тысячь
    Code:
    john.md.exe -test -format=md5
    Benchmarking: FreeBSD MD5 [32/32]... DONE
    Raw:    5390 c/s
    Raw:    5282 c/s
    Raw:    5322 c/s
    Raw:    5308 c/s
    Raw:    5391 c/s
    Raw:    5391 c/s
    Raw:    5363 c/s
    Raw:    5391 c/s
    Raw:    5335 c/s
    Raw:    5377 c/s
    Raw:    5391 c/s
    Raw:    5391 c/s
    Raw:    5391 c/s
    Практика:
    Code:
    john.md.exe -mask:\d\d\d\d\d 111md.txt
    Loaded 1 password hash (FreeBSD MD5 [32/32])
    time: 0:00:00:18 100%  c/s: 5329
    time: 0:00:00:18 100%  c/s: 5369
    time: 0:00:00:18 100%  c/s: 5373
    time: 0:00:00:18 100%  c/s: 5373
    time: 0:00:00:18 100%  c/s: 5369
    time: 0:00:00:18 100%  c/s: 5369
    time: 0:00:00:18 100%  c/s: 5369
    time: 0:00:00:18 100%  c/s: 5373
    time: 0:00:00:18 100%  c/s: 5369
    time: 0:00:00:18 100%  c/s: 5373
    
    john.md.exe -mask:\d\d\d\d 111md.txt
    Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32])
    time: 0:00:00:37 100%  c/s: 5335
    time: 0:00:00:37 100%  c/s: 5375
    time: 0:00:00:37 100%  c/s: 5360
    time: 0:00:00:37 100%  c/s: 5373
    time: 0:00:00:37 100%  c/s: 5375
    
    Лично для меня главное не та скорость что показывается во время работы, а то время какое я в итоге затрачу.

    7.2 Соли и разница во времени​

    А теперь посмотрим, что быстрее, 5 раз по 1, или 1 раз по 5?

    Code:
    Loaded 1 password hash (Traditional DES [64/64 BS MMX])
    time: 0:00:00:15 100%  c/s: 657764
     
    Loaded 2 password hashes with 2 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:29 100%  c/s: 679417
     
    Loaded 3 password hashes with 3 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:43 100%  c/s: 687426
    
    Loaded 4 password hashes with 4 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:57 100%  c/s: 691706
     
    Loaded 5 password hashes with 5 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:01:12 100%  c/s: 692492
    Что это значит? Что если бы мы подбирали отдельно 5 хешей, мы бы затратили времени на это 01:15, а если за раз все пять, то 01:12.

    Но при этом обратите внимание:
    Code:
    john.dessql.exe -mask:\d\d\d\d\d\d 1.txt
    Loaded 1 password hash (Traditional DES [64/64 BS MMX])
    time: 0:00:00:01 100%  c/s: 621118
    
    Loaded 100 password hashes with no different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:01 100%  c/s: 60386K
    
    Loaded 4 password hashes with 4 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:05 100%  c/s: 682710
    
    Loaded 20 password hashes with 4 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:05 100%  c/s: 3359K
    
    Loaded 20 password hashes with 8 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:11 100%  c/s: 1729K
    
    Loaded 20 password hashes with 12 different salts (Traditional DES [64/64 BS MMX])
    time: 0:00:00:17 100%  c/s: 1160K
    Время на 100 хешей = времени на 1 хеш, при условии что одна соль.
    Поэтому иногда удобней брать, к примеру, 5 солей и пусть хешей будет 1000, зато времени займет как на подбор для 5 и результаты даст быстрее.

    Но как разделить хеши по солям, если у вас их более 10к? Для этого есть спец скрипты, которые я позже выложу, либо использовать встроенную опцию -salts, но что-то мне не понравилось с ней работать.
     
    #3 Thanat0z, 6 Aug 2007
    Last edited: 6 Aug 2007
    beginner2010, злюка and zl0ba like this.
  4. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    8. Пароли и хеши
    8.1 Генерёнка​

    Что я называю генерёнкой? Пароли или логины которые созданы не человеком, а специальным образом сгенерированы каким-то алгоритмом. Такое часто может встречаться на учетках провайдеров, в корпоративных компаниях, порносайтах тд и тп.

    Пример 1.
    Представьте что у вас база в 100к. За сутки подбора у вас где-то только 100-200 паролей. Анализируя найденные пароли вы видите что они к примеру из 7 символов, содержат как буквы так и цифры, при этом цифра если есть, то всегда последняя, первая буква к примеру всегда "c", анализируя найденный пароли далее, вы составляете маску. К примеру:
    Code:
    c\a\a\l\k\l\z
    где
    Code:
    a = aeiou
    l = abcdefghijklmnopqrstuvwxyz
    k = kcsbd
    z = abcdefghijklmnopqrstuvwxyz0987654321
    Прогнав через эту маску вы за пару часов получаете пару тысяч новых паролей. Ну и снова анализ, поиск закономерностей. В плане генерёнки, все может быть достаточно трудным, достаточно редко можно определить точно закономерность чтоб использовать чарсеты, поэтому чаще против генеренки используют именно маски. Но и не только по этой причине. Расскажу о некоторой очень важной особенности чарсетов:
    ! джон в чарсеты записывает не просто положение и частоты выпадения того или иного символа, а именно комбинации символов, он не учитывает какое количество паролей вскрылось при той или иной расстановке символов, и периодически меняет последовательность и порядок символов.​
    То есть если вы попытаетесь сгенерить чарсет согласно той маске что я привел, через какой-то промежуток времени вы обратите внимание, что первая буква слова совсем не "c".

    Пример 2.
    Есть база, есть очень мало вскрытых паролей. И вдруг анализируя найденные пароли, вы замечаете что они как и логины очень схожи. Тут мы можем предположить что алгоритм генерации логинов и паролей совпадает. Но 100-200 паролей недостаточно чтоб сгенерить чарсет и хорошо покрыть множество из паролей в 6-7 символов из dlu. И тут вы вспоминаете что я обещал вам объяснить как генерить чарсеты не просто по john.pot, а по словарям.

    ! Во время генерации чарсета, джон анализирует найденные пароли из файла john.pot. Как он это делает, как он отличает пароли? Отличает просто - для анализа он берет то, что находится после ":", то есть по правую сторону, а то что слева игнорирует. ​
    А теперь вспомните о чем мы говорили - у нас есть 100к логинов... понимаете на что я намекаю? Подумайте минуту сами, не читайте текст внизу ;) Если за минуту не догадаетесь, читайте :)





    Что мы делаем, мы подсунем джону наши логины, как пароли, для того чтоб он по ним сгенерил чарсет. Делаем бекап файла john.pot либо используем джона из другой папки. Создаем john.pot вида

    Code:
    :login1
    :login2
    :login3
    
    и так все 100к. Генерим чарсет. Возвращаемся к старому john.pot и стартуем атаку по нашему чарсету... и если наши предположения были правильные вы не будете успевать запоминать новые подобранные пароли, которые у вас будут появляться на мониторе.

    8.2 Фейк пароли
    После того как с базы 82к я подобрал более 12к паролей, я решил поиграться с солями, для тех кто забыл - для DES 4096 солей. Пустил под скрипт статистики, увидел следующую картину
    Code:
    1607 RH
    600 DK
    308 zo
    277 22
    168 as
    150 13
    92 po
    86 al
    79 SN
    74 10
    72 04
    70 aw
    65 TL
    62 09
    62 08
    61 EI
    57 FJ
    Обрадовавшись как малый засренец скопировал хеши с солью RH в файл и запустил джона, но меня ждал облом, за 1-2 часа не одного попадания. Открыл john.pot и поискал что есть с этой солью
    Code:
    RHdYjskn1eqKw:052788
    RHuk6hEr.FZL.:nfy.irf
    RHmcY0QzIuSOM:thor69
    RH9Pf1Ut/yKvE:lechn
    RHsatyO2s6ypo:MJANE
    RHl43JCiICXQg:furn98
    RHc8ysSQcGvmo:beavis46
    Всего 7 паролей из 1607. Мягко говоря просто невозможно чтоб за пару часов своими правилами и словарями я не нашел не одного пароля. Отсюда я сделал вывод что это подстава. Либо там все пароли в национальных кодировках, либо это просто генеренка, то есть специально сгенеренные хеши, для отвода глаз. Мне подобное попадается впервые, так что я был очень удивлен такой ситуации. Попросил помощи у знакомых дешифровщиков и никто не смог мне сказать дельного что это такое.

    Бывает еще ситуация что у вас полно DES хешей, и вы бы давно должны были их расшифровать, но у вас ничего не получается. Возможно вам попались "хеши" authX. Они выглядят как DES, но не могут содержать "/" и ".", и первые 2 символа цифры.

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

    Выжав 10% из базы, я уселся за анализ john.pot.
    1) Соль "22" - 277. В глаза сразу бросилось что основная часть найденных паролей из 6 символов была по маске, была вида \l\l\l123, а именно такое
    Code:
    fra123
    gus123
    pat123
    Запустил джон по маске \l\l\l\123 и вывалилось еще более 40 паролей такого типа. Скажите совпадение? Я не верю в такие совпадения, это закономерность. Между прочим по маске \l\l\l\d\d\d ничего не было более. Прогнав на l6 нашлись еще пароли вида
    Code:
    fabjff
    guijff
    ignfds
    marfds
    marjff
    
    Короче говоря давольно такие интересная соль получилась.
    Попадание 163/277

    2) Соль "13" - 150
    Вижу такие хеши
    Code:
    13XVRkXlm1rAM:xuwe27
    13lGnMg5uFWyk:xeitl
    13YcKib0QQgmg:xlena
    13iHtoIeXJPdM:xpeic
    135AMpVP7xHUM:xkasse
    13FkLUn0ntjWU:xmelly
    13rUsHvsFDN8Q:xmicha
    13VhJaj/AQLO2:xmotba 
    8 паролей начинаются с "x" и имееют 6 или 5 символов. И такое совпадение только по этой соли. Делаю по маске x\l\l\l\l\l и подымаю еще пароли... далее думаю, а что если попробовать по типу xuwe27? - в итоге выпадает xflvo27.

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

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

    Ковыряя дальше pot файл, я заметил что по некоторым солям есть одно совпадение - соль совпадает с первыми 2 символами пароля. И тут у меня в памяти всплыло что я когда-то видел материал, что можно сделать такое же предположение, произвести атаку и поднять значительную часть паролей. Я не знаю почему так иногда получается, но как факт, что такое есть, чаще что происходит когда первые 2 символа цифры, либо строчные буквы. Слышал версию, что некоторые системы просто специально берут первые два символа пароля как соль. Не знаю правда это или нет, как по мне глупость, но покажу примеры того что я нашел, отталкиваясь от того что первые 2 символа совпадают с первыми двумя символами пароля. Стоит сказать что я делал не для всех солей... а там где была какая-то основа, то есть уже такие пароли были. И так списочек, а вы думайте, случайность или закономерность:
    Code:
    03031973
    03110311
    03009218
    03009652
    03202634
    08190819
    08061980
    08121965
    08096123
    11111111
    11011011
    11223344
    11121969
    11737526
    и тд и тп для цифр, самое заметное тут, что почти всегда все цифровые комбинации что были в этих солях, если не были из 8 символов, то все равно начинались как и соль.

    А вот замечательная соль "ya", попаданий 26/37 :
    Code:
    ya
    yamagari
    yamagari
    inzaghi1
    yahyayah
    yaaleemo
    yaalimad
    yaalimol
    yaalimou
    yafatima
    yaghazia
    yahooagu
    yahussai
    yaimamhu
    yawabigo
    yacht321
    yacht456
    yacht789
    yacht123
    
    Вы еще верите в совпадения? :)

    Соль "ta", попаданий 21/36
    Code:
    talbot
    tahataha
    tabassum
    tassaduq
    tamerc
    tapjpx
    taqtan
    tafseera
    tahasara
    tamvfivj
    tanweerf
    tarjelta
    tarolove
    tatazanj
    tauromag
    talarga
    taurus44
    tamara83
    И так далее и тому подобное. Думаю вам хватит доказательств, что иногда силой разума :) можно достигнуть того, что обычным бы перебором вы получили не скоро

    9. Специальные возможности

    На данный момент я вам много не расскажу, но что смогу поведаю

    Многоядерность. - Большинство современных программ для подбора паролей не умеют работать с многоядерными процами. Не исключение и John. Хотя есть специальная версия John Mpi. Пробовал я играться с ней, но у меня ничего не получилось. Проконсультировался с друзьями кто по специальности или по работе сталкивался с таким, в итоге мне сказали что потеря невелика - якобы все алгоритмы созданные чтоб научить прогу работать на два ядра, на самом деле загрузят полностью проц, и общий прирост будет в районе 75-90% в лучшем случае. Так что я поковырявши какое-то время эту версию забил на это дело, потому что есть альтернатива.

    А альтернатива эта в виде внешних переборщиков. И так, открываем конфиг, и опускаемся вниз, и видим что-то типа секции [List.External:parallel01], если же не видим, то вставляем следующее
    Code:
    [List.External:Parallel01]
    int node, total;   // This node's number, and node count
    int number;    // Current word number
    
    void init()
    {
     node = 1; total = 2;  // Node 1 of 2, change as appropriate
     number = node - 1;  // Speedup the filter a bit
    }
    
    void filter()
    {
     if (number++ % total)  // Word for a different node?
      word = 0;  // Yes, skip it
    }
    После вставляем еще раз, но уже называем Parallel02.
    Что здесь важно? Параметры:

    total - сколько у нас джонов работают
    node - номер джона

    В нашем случае, то есть если у нас 2 ядра на проце, то у нас
    total=2
    node=1 для Parallel01
    node=2 для Parallel02


    Как с этим работать?
    Code:
    john -external:Parallel01 -session=p1 -w:advlamer-sequences.txt --rules achat.txt
    john -external:Parallel02 -session=p2 -w:advlamer-sequences.txt --rules achat.txt
    В данном случае каждый Джон отожрет от проца сколько сможет, и в результате вы сможете получить практически 2 равноценных джона и загрузку проца в 100% и отдачей где-то 95% и более.
    ! Желательно для каждого джона указать в taskmanager по ядру​
    Можно использовать и для расспределенки. Ставим, к примеру total=25 и ищем 24 друзей, кто бы с вами занялся брутом :)

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

    Но вот все равно вам названия и линки (возможно некоторые уже неактуальны), если будет очень надо, думаю разберетесь

    1. Bob the Butcher
    http://btb.banquise.net/
    2. DJohn
    http://ktulu.com.ar/en/djohn.php
    3. JohnNet
    http://www.kraeh.info/
    http://kraeh.info/files/JohnNet.rar
    4. Johndarme
    http://heanet.dl.sourceforge.net/sourceforge/johndarme/johndarme-1.0-beta.zip

    10. Ссылки

    Страничка Джона на openwall.com
    По реализации MPI (смотрите еще http://cse.unl.edu/~rlim/jtr-mpi/)
    Работа по анализу текстов на русском
    Статья в WikipediaEn по частоте использования буков
    Статистика по частоте использования букв (англ)

    Мало использовал источников, так что буду рад линкам

    11. О чем я не сказал

    В данный момент я не имею технической возможности написать о работе с GUI оболочками, не стал упоминать о том, что JTR может быть альтернативой PasswordsPro для подбора паролей к хешам от IPB2. Не стал упоминать о работе с национальными кодировками.
    И временно, на сегодня или пару дней решил не вставлять в статью главу 4.4 Продвинутые правила, решил ее доработать, или уже написать отдельно материал по этой теме.
    Надеюсь что со временем мне повезет с John MPI и сетевыми версиями чтоб я мог дополнить этот материал
     
    #4 Thanat0z, 6 Aug 2007
    Last edited: 6 Aug 2007
  5. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    12. Changelog
    06.08.2007 - временно убрал главу "4.4 Продвинутые правила"


    Зарезервированное место для продолжения статьи. Просьба модераторам не объединять сообщения

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

    Сообщения типа "клевая статьи" и "+1" буду удалять :) Короче рад буду обоснованной критике и пожеланиям
     
    #5 Thanat0z, 6 Aug 2007
    Last edited: 6 Aug 2007
    Alexmeh, FeraS, $n@ke and 4 others like this.
  6. ramka4a

    ramka4a New Member

    Joined:
    27 Sep 2016
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Привет всем. Как можно установит правило чтобы переброла парол только на англиском и максимум 7, минимум 5