Патчи, модификации, скрипты для John the Ripper

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

  1. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Патчи, модификации, скрипты для John the Ripper и подбора паролей в целом

    В данной теме я буду выкладывать различные сборки джона, интересные патчи и скрипты облегчающие работу с JTR которые найду в инете или сам додумаюсь :)

    Просьба: вопросы задавать в теме [thread=32327][Задай Вопрос - Получи Ответ][/thread]


    + полезные скрипты в общем плане для дешифровки (updated 04.08.2007)
    ================================================================

    Лично я, постонно работаю с патченной сборкой джона версии 1.7 с оптимазиацией под разные процы.

    Скачать можно отсюда - __http://rapidshare.com/files/39513349/_john_mod_by_Maxx.rar

    Модификации сделаны человеком по имени Maxx c www.wapbbs.com.

    Из отличительных особенностей с официальной версией:
    1) работа с хешами Mysql 3.23, sha-1, rawMD5
    2) режим -mask - режим перебора по маске
    К примеру
    Code:
    john -mask:\d\d\d\d\
    , где \d - digits
    3) режим -builtin - режим перебора по встроенному набору
    4) ключик -uncracked (противоположный -show)
    5) ехе'шники под разные типы процов

    Стоит заметить что данная модификация джона быстрее официальной
     
    #1 Thanat0z, 27 Jun 2007
    Last edited: 15 Sep 2008
    8 people like this.
  2. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Измерение и сравнение скорости работы

    Возьмем сборку JRT и внимательно посмотрим на содержимое. В папке run вы можете наблюдать много ехе файлов. Вы их уже могли видеть, если читали мою статью про того какой софт выбрать для брута хешей :) Так вот, сейчас еще раз посчитаем скорость работы их.

    ЗЫ кстати в папке лежит два файлика
    john.conf_default
    john.conf
    .
    Тот что не default мой личный, пока что отложите его в сторону, он нам пригодится после :)


    Для подсчета скорости нам понадобятся скрипты.
    Первый скрипт мы назовем script_test_speed.pl:
    Code:
    #(c) Maxx
    #!/usr/bin/perl
    use strict;
    my %result;
    
    for my $john (sort <run\\john.*.exe>)
    {
    	next unless $john =~ /john\.(.+)\.exe/;
    	my $arch = $1;
    	
    	print STDERR "testing $arch...\n";
    	print "arch: $arch\n";
    	system("$john -test");
    }
    как видите из кода это Perl ;), и скрипт будет запускать из папки run ехе'шники джона в режиме -test. Скрипт должен запускаться из главной папки джона, не из папки run:

    Code:
    26.06.2007  22:20    <DIR>          doc
    26.06.2007  22:55    <DIR>          run
    26.06.2007  22:52             1*062 [COLOR=White]script_parse_result.pl[/COLOR]
    26.06.2007  22:55               237 [COLOR=White]script_test_speed.pl[/COLOR]
    запускать будем как
    Code:
    perl script_test_speed.pl > result1.txt
    После запустим второй скрипт script_parse_result.pl:
    Code:
    #(c) Maxx
    #!/usr/bin/perl
    use strict;
    my @result;
    undef $/;
    my $text = <>;
    
    for my $archset (split /arch:\s*/is, $text)
    {
    	next unless $archset =~ s/^(\S+)\s//s;
    	my $arch = $1;
    
    	for my $algset (split /Benchmarking:\s*/is, $archset)
    	{
    		next unless $algset =~ s/^(.+?)\s*[\(\[][^\n]+\n//s;
    		my $alg = $1;
    		
    		for my $typeset (split /\n/, $algset)
    		{
    			if ($typeset =~ m/^([^\:]+):\s*(\d+(\w)?)/)
    			{
    				my ($type, $speed) = ($1, $2);
    				$speed =~ s/K/000/;
    				$speed =~ s/M/000000/;
    			    push @result, [$alg, $type, $speed, $arch];
    			}
    		}
        }
    }
    
    my ($prevalg, $prevtype);
    for (sort
    	{
    		my $r;
    		return $r unless ($r = @{$a}[0] cmp @{$b}[0]) == 0;
    		return $r unless ($r = @{$a}[1] cmp @{$b}[1]) == 0;
    		return $r unless ($r = @{$b}[2] <=> @{$a}[2]) == 0;
    		@{$a}[3] cmp @{$b}[3];
    	}
    	@result)
    {
    	my ($alg, $type, $speed, $arch) = @{$_};
    	if ($prevalg ne $alg || $prevtype ne $type)
    	{
    		$prevalg  = $alg;
    		$prevtype = $type;
    		print "\n";
    	}
        printf("%s (%s): %9d (%s)\n", $alg, $type, $speed, $arch);
    }
    запускать будем так
    Code:
    perl script_parse_result.pl < result1.txt > result2.txt
    Получим в итоге результаты

    Code:
    [COLOR=Red]BSDI DES (Many salts):     29120 (athlon-4)[/COLOR]
    BSDI DES (Many salts):     29120 (athlon-xp)
    BSDI DES (Many salts):     29071 (athlon-tbird)
    BSDI DES (Many salts):     29071 (k6-3)
    BSDI DES (Many salts):     29071 (pentium-mmx)
    BSDI DES (Many salts):     29068 (athlon)
    BSDI DES (Many salts):     29068 (athlon-mp)
    BSDI DES (Many salts):     29068 (i386)
    BSDI DES (Many salts):     29068 (k6)
    BSDI DES (Many salts):     29068 (pentium4)
    BSDI DES (Many salts):     29020 (k6-2)
    BSDI DES (Many salts):     29020 (pentium2)
    BSDI DES (Many salts):     29020 (pentium3)
    BSDI DES (Many salts):     29020 (pentiumpro)
    BSDI DES (Many salts):     29016 (pentium)
    BSDI DES (Many salts):     28971 (i486)
    BSDI DES (Many salts):     28968 (i686)
    BSDI DES (Many salts):     28920 (i586)
    
    [COLOR=Red]BSDI DES (Only one salt):     28822 (pentium2)[/COLOR]
    BSDI DES (Only one salt):     28768 (athlon-4)
    BSDI DES (Only one salt):     28768 (athlon-mp)
    BSDI DES (Only one salt):     28768 (athlon-xp)
    BSDI DES (Only one salt):     28721 (athlon)
    BSDI DES (Only one salt):     28721 (i686)
    BSDI DES (Only one salt):     28721 (pentium)
    BSDI DES (Only one salt):     28721 (pentium-mmx)
    BSDI DES (Only one salt):     28721 (pentium4)
    BSDI DES (Only one salt):     28673 (pentium3)
    BSDI DES (Only one salt):     28673 (pentiumpro)
    BSDI DES (Only one salt):     28670 (athlon-tbird)
    BSDI DES (Only one salt):     28670 (i386)
    BSDI DES (Only one salt):     28670 (k6)
    BSDI DES (Only one salt):     28670 (k6-3)
    BSDI DES (Only one salt):     28573 (k6-2)
    BSDI DES (Only one salt):     28527 (i486)
    BSDI DES (Only one salt):     28524 (i586)
    
    [COLOR=Red]FreeBSD MD5 (Raw):      5841 (i386)[/COLOR]
    FreeBSD MD5 (Raw):      5841 (k6)
    FreeBSD MD5 (Raw):      5841 (k6-2)
    FreeBSD MD5 (Raw):      5841 (k6-3)
    FreeBSD MD5 (Raw):      5840 (i486)
    FreeBSD MD5 (Raw):      5825 (pentium)
    FreeBSD MD5 (Raw):      5808 (i586)
    FreeBSD MD5 (Raw):      5793 (i686)
    FreeBSD MD5 (Raw):      5793 (pentium-mmx)
    FreeBSD MD5 (Raw):      5777 (athlon-mp)
    FreeBSD MD5 (Raw):      5777 (athlon-tbird)
    FreeBSD MD5 (Raw):      5776 (athlon-4)
    FreeBSD MD5 (Raw):      5776 (pentium2)
    FreeBSD MD5 (Raw):      5776 (pentium3)
    FreeBSD MD5 (Raw):      5776 (pentiumpro)
    FreeBSD MD5 (Raw):      5761 (athlon-xp)
    FreeBSD MD5 (Raw):      5760 (athlon)
    FreeBSD MD5 (Raw):      5760 (pentium4)
    
    [COLOR=Red]Kerberos AFS DES (Long):    745608 (athlon-4)[/COLOR]
    Kerberos AFS DES (Long):    743493 (athlon-mp)
    Kerberos AFS DES (Long):    743493 (athlon-xp)
    Kerberos AFS DES (Long):    731307 (pentium2)
    Kerberos AFS DES (Long):    731307 (pentium3)
    Kerberos AFS DES (Long):    729399 (athlon-tbird)
    Kerberos AFS DES (Long):    729399 (i386)
    Kerberos AFS DES (Long):    729399 (pentiumpro)
    Kerberos AFS DES (Long):    727501 (athlon)
    Kerberos AFS DES (Long):    727375 (i686)
    Kerberos AFS DES (Long):    721618 (pentium4)
    Kerberos AFS DES (Long):    719637 (pentium)
    Kerberos AFS DES (Long):    717667 (pentium-mmx)
    Kerberos AFS DES (Long):    713880 (i586)
    Kerberos AFS DES (Long):    712062 (i486)
    Kerberos AFS DES (Long):    712062 (k6)
    Kerberos AFS DES (Long):    710133 (k6-3)
    Kerberos AFS DES (Long):    708214 (k6-2)
    
    [COLOR=Red]Kerberos AFS DES (Short):    279586 (athlon-4)[/COLOR]
    Kerberos AFS DES (Short):    279586 (athlon-mp)
    Kerberos AFS DES (Short):    279586 (athlon-xp)
    Kerberos AFS DES (Short):    279586 (i386)
    Kerberos AFS DES (Short):    279586 (i686)
    Kerberos AFS DES (Short):    279028 (pentium2)
    Kerberos AFS DES (Short):    278435 (athlon)
    Kerberos AFS DES (Short):    278398 (athlon-tbird)
    Kerberos AFS DES (Short):    278398 (k6)
    Kerberos AFS DES (Short):    277844 (pentium4)
    Kerberos AFS DES (Short):    277844 (pentiumpro)
    Kerberos AFS DES (Short):    277293 (k6-2)
    Kerberos AFS DES (Short):    277293 (pentium3)
    Kerberos AFS DES (Short):    277257 (pentium)
    Kerberos AFS DES (Short):    276708 (i486)
    Kerberos AFS DES (Short):    276708 (k6-3)
    Kerberos AFS DES (Short):    276708 (pentium-mmx)
    Kerberos AFS DES (Short):    276125 (i586)
    
    [COLOR=Red]MySQL 3.23 (Raw):  17367000 (i386)[/COLOR]
    MySQL 3.23 (Raw):  17048000 (i486)
    MySQL 3.23 (Raw):  17015000 (k6)
    MySQL 3.23 (Raw):  16912000 (k6-2)
    MySQL 3.23 (Raw):  16877000 (k6-3)
    MySQL 3.23 (Raw):  15947000 (pentium4)
    MySQL 3.23 (Raw):  15170000 (athlon)
    MySQL 3.23 (Raw):  15170000 (athlon-tbird)
    MySQL 3.23 (Raw):  14690000 (pentiumpro)
    MySQL 3.23 (Raw):  14666000 (i686)
    MySQL 3.23 (Raw):  14587000 (pentium3)
    MySQL 3.23 (Raw):  14313000 (athlon-mp)
    MySQL 3.23 (Raw):  14290000 (athlon-4)
    MySQL 3.23 (Raw):  14242000 (athlon-xp)
    MySQL 3.23 (Raw):  14242000 (pentium2)
    MySQL 3.23 (Raw):  13707000 (pentium)
    MySQL 3.23 (Raw):  13661000 (i586)
    MySQL 3.23 (Raw):  13661000 (pentium-mmx)
    
    [COLOR=Red]NT LM DES (Raw):   8356000 (pentiumpro)[/COLOR]
    NT LM DES (Raw):   8339000 (i686)
    NT LM DES (Raw):   8012000 (athlon-mp)
    NT LM DES (Raw):   7998000 (athlon-tbird)
    NT LM DES (Raw):   7983000 (athlon-xp)
    NT LM DES (Raw):   7982000 (athlon)
    NT LM DES (Raw):   7982000 (athlon-4)
    NT LM DES (Raw):   7895000 (pentium3)
    NT LM DES (Raw):   7866000 (pentium2)
    NT LM DES (Raw):   7794000 (i386)
    NT LM DES (Raw):   7780000 (pentium4)
    NT LM DES (Raw):   7752000 (pentium)
    NT LM DES (Raw):   7683000 (i586)
    NT LM DES (Raw):   7683000 (pentium-mmx)
    NT LM DES (Raw):   7547000 (k6-3)
    NT LM DES (Raw):   7534000 (k6)
    NT LM DES (Raw):   7494000 (i486)
    NT LM DES (Raw):   7443000 (k6-2)
    
    [COLOR=Red]OpenBSD Blowfish (Raw):       356 (i686)[/COLOR]
    OpenBSD Blowfish (Raw):       356 (pentium2)
    OpenBSD Blowfish (Raw):       355 (athlon)
    OpenBSD Blowfish (Raw):       355 (k6)
    OpenBSD Blowfish (Raw):       355 (pentiumpro)
    OpenBSD Blowfish (Raw):       354 (athlon-4)
    OpenBSD Blowfish (Raw):       354 (athlon-mp)
    OpenBSD Blowfish (Raw):       354 (athlon-tbird)
    OpenBSD Blowfish (Raw):       354 (athlon-xp)
    OpenBSD Blowfish (Raw):       354 (i586)
    OpenBSD Blowfish (Raw):       354 (pentium)
    OpenBSD Blowfish (Raw):       354 (pentium-mmx)
    OpenBSD Blowfish (Raw):       354 (pentium4)
    OpenBSD Blowfish (Raw):       353 (pentium3)
    OpenBSD Blowfish (Raw):       352 (i386)
    OpenBSD Blowfish (Raw):       352 (i486)
    OpenBSD Blowfish (Raw):       352 (k6-2)
    OpenBSD Blowfish (Raw):       352 (k6-3)
    
    [COLOR=Red]Raw MD5 (Raw):   3339000 (i386)[/COLOR]
    Raw MD5 (Raw):   3329000 (pentium4)
    Raw MD5 (Raw):   3302000 (i486)
    Raw MD5 (Raw):   3297000 (k6)
    Raw MD5 (Raw):   3276000 (athlon)
    Raw MD5 (Raw):   3276000 (athlon-mp)
    Raw MD5 (Raw):   3276000 (athlon-tbird)
    Raw MD5 (Raw):   3276000 (k6-2)
    Raw MD5 (Raw):   3276000 (k6-3)
    Raw MD5 (Raw):   3276000 (pentium)
    Raw MD5 (Raw):   3266000 (athlon-4)
    Raw MD5 (Raw):   3266000 (athlon-xp)
    Raw MD5 (Raw):   3256000 (i586)
    Raw MD5 (Raw):   3246000 (pentium-mmx)
    Raw MD5 (Raw):   3226000 (pentium3)
    Raw MD5 (Raw):   3216000 (i686)
    Raw MD5 (Raw):   3216000 (pentium2)
    Raw MD5 (Raw):   3206000 (pentiumpro)
    
    [COLOR=Red]SHA1 (Raw):   2849000 (pentium4)[/COLOR]
    SHA1 (Raw):   2818000 (pentium)
    SHA1 (Raw):   2803000 (pentium-mmx)
    SHA1 (Raw):   2796000 (i486)
    SHA1 (Raw):   2795000 (i586)
    SHA1 (Raw):   2788000 (i386)
    SHA1 (Raw):   2788000 (k6)
    SHA1 (Raw):   2788000 (k6-3)
    SHA1 (Raw):   2781000 (athlon)
    SHA1 (Raw):   2781000 (athlon-tbird)
    SHA1 (Raw):   2781000 (k6-2)
    SHA1 (Raw):   2774000 (pentium2)
    SHA1 (Raw):   2767000 (athlon-mp)
    SHA1 (Raw):   2766000 (pentium3)
    SHA1 (Raw):   2759000 (athlon-4)
    SHA1 (Raw):   2759000 (athlon-xp)
    SHA1 (Raw):   2745000 (pentiumpro)
    SHA1 (Raw):   2744000 (i686)
    
    [COLOR=Red]Traditional DES (Many salts):    894778 (athlon)[/COLOR]
    Traditional DES (Many salts):    894778 (athlon-4)
    Traditional DES (Many salts):    894778 (athlon-mp)
    Traditional DES (Many salts):    894778 (athlon-tbird)
    Traditional DES (Many salts):    894778 (athlon-xp)
    Traditional DES (Many salts):    894778 (k6)
    Traditional DES (Many salts):    894778 (pentium)
    Traditional DES (Many salts):    894778 (pentium-mmx)
    Traditional DES (Many salts):    894778 (pentium2)
    Traditional DES (Many salts):    894778 (pentium3)
    Traditional DES (Many salts):    894778 (pentium4)
    Traditional DES (Many salts):    893348 (i386)
    Traditional DES (Many salts):    893253 (k6-3)
    Traditional DES (Many salts):    891829 (i486)
    Traditional DES (Many salts):    891734 (pentiumpro)
    Traditional DES (Many salts):    890314 (i586)
    Traditional DES (Many salts):    890314 (i686)
    Traditional DES (Many salts):    888899 (k6-2)
    
    [COLOR=Red]Traditional DES (Only one salt):    838848 (athlon)[/COLOR]
    Traditional DES (Only one salt):    836338 (athlon-tbird)
    Traditional DES (Only one salt):    836338 (k6-3)
    Traditional DES (Only one salt):    836172 (athlon-4)
    Traditional DES (Only one salt):    836172 (athlon-mp)
    Traditional DES (Only one salt):    836172 (athlon-xp)
    Traditional DES (Only one salt):    836172 (i386)
    Traditional DES (Only one salt):    836172 (k6)
    Traditional DES (Only one salt):    836172 (pentium4)
    Traditional DES (Only one salt):    833679 (k6-2)
    Traditional DES (Only one salt):    833679 (pentium)
    Traditional DES (Only one salt):    833679 (pentium3)
    Traditional DES (Only one salt):    833679 (pentiumpro)
    Traditional DES (Only one salt):    831200 (i686)
    Traditional DES (Only one salt):    831200 (pentium-mmx)
    Traditional DES (Only one salt):    831036 (pentium2)
    Traditional DES (Only one salt):    825962 (i486)
    Traditional DES (Only one salt):    825962 (i586)
    
    Получив эти данные, вы можете выбрать для повторного тестирования более понравившиеся для вас сборки. Вот допустим я для повторного тестирования скорости могу выбрать сборки i386, athlon-4, athlon. Повторное тестирование нужно для того, чтоб учитывать погрешности связанные с тем, что вы можете во время тестирования занимать память и проц другими задачами. Грубо говоря, режим -test не совсем точен. Самая лучшая проверка это практика. Кстати имея результаты сравнения скорости, имет смысл переименовать некоторые ехе'шники по типам хешей. Вот для примера, сборку pentium можно переименовать в john-sha1, и после вы не забудете, что именно эта сборка более подходит для брута sha-1 хешей.
     
    #2 Thanat0z, 27 Jun 2007
    Last edited: 27 Jun 2007
    2 people like this.
  3. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Генератор Keyboard_nospec для секции внешних переборщиков. Позволяет находить пароли состоящие из последовательностей буков и цифр, типа:

    tgfghg
    tgfghj
    tgfghy
    we3edfgh
    we3edfgt
    we3edfgb


    Code:
    [List.External:Keyboard_nospec]
    int maxlength, length; // Maximum passwords length to try, current length
    int fuzz; // The desired "fuzz factor", either 0 or 1
    int id[15]; // Current character indices for each position
    int m[0x400], mc[0x80]; // The keys matrix, counts of adjacent keys
    int f[0x40], fc; // Characters for the first position, their count
    
    void init()
    {
    int minlength;
    int i, j, c, p;
    int k[0x40];
    
    minlength = 5; // Initial passwords length to try
    maxlength = 9; // Maximum passwords length to try, up to 15
    fuzz = 0; // "Fuzz factor", set to 0 for much quicker runs
    
    /*
    * This defines the keyboard layout, by default for a QWERTY keyboard.
    * Please note that the sizes of m[] and mc[] arrays assume 7-bit
    * characters and will need to be doubled for 8-bit characters such as
    * umlauts.
    */
    i = 0; while (i < 0x40) k[i++] = 0;
    i = 0; while (++i <= 9) k[i] = '0' + i;
    k[10] = '0'; 
    k[0x11] = 'q'; k[0x12] = 'w'; k[0x13] = 'e'; k[0x14] = 'r';
    k[0x15] = 't'; k[0x16] = 'y'; k[0x17] = 'u'; k[0x18] = 'i';
    k[0x19] = 'o'; k[0x1a] = 'p'; 
    k[0x21] = 'a'; k[0x22] = 's'; k[0x23] = 'd'; k[0x24] = 'f';
    k[0x25] = 'g'; k[0x26] = 'h'; k[0x27] = 'j'; k[0x28] = 'k';
    k[0x29] = 'l'; 
    k[0x31] = 'z'; k[0x32] = 'x'; k[0x33] = 'c'; k[0x34] = 'v';
    k[0x35] = 'b'; k[0x36] = 'n'; k[0x37] = 'm'; 
    
    i = 0; while (i < 0x80) mc[i++] = 0;
    fc = 0;
    
    /* rows */
    c = 0;
    i = 0;
    while (i < 0x40) {
    p = c;
    c = k[i++];
    if (!c) continue;
    f[fc++] = c;
    if (!p) continue;
    m[(c << 3) + mc[c]++] = p;
    m[(p << 3) + mc[p]++] = c;
    }
    f[fc] = 0;
    
    /* columns */
    i = 0;
    while (i < 0x30) {
    p = k[i++];
    if (!p) continue;
    j = 1 - fuzz;
    while (j <= 1 + fuzz) {
    c = k[i + 0x10 - j++];
    if (!c) continue;
    m[(c << 3) + mc[c]++] = p;
    m[(p << 3) + mc[p]++] = c;
    }
    }
    
    id[0] = 0;
    length = minlength;
    }
    
    void generate()
    {
    int i, p, maxcount;
    
    word[i = 0] = p = f[id[0]];
    while (++i < length)
    word[i] = p = m[(p << 3) + id[i]];
    word[i--] = 0;
    
    if (i) maxcount = mc[word[i - 1]]; else maxcount = fc;
    while (++id[i] >= maxcount) {
    if (!i) {
    if (length < maxlength) {
    id[0] = 0;
    id[length++] = 0;
    }
    return;
    }
    id[i--] = 0;
    if (i) maxcount = mc[word[i - 1]]; else maxcount = fc;
    }
    }
    
    void restore()
    {
    int i;
    
    /* Calculate the length */
    length = 0;
    while (word[length]) length++;
    
    /* Infer the first character index */
    i = -1;
    while (++i < fc) {
    if (f[i] == word[0]) {
    id[0] = i;
    break;
    }
    }
     
    #3 Thanat0z, 4 Aug 2007
    Last edited: 4 Aug 2007
    1 person likes this.
  4. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Генератор Keyboard для секции внешних переборщиков. Позволяет находить пароли состоящие из последовательностей символов (включая спецсимволы), типа:

    6ujij,.
    6ujij,j
    6ujij,k
    6ujij,l
    6ujijmn
    p[-[p[;
    p[-[p98
    p[-[p90
    p[-[p9p


    Code:
    [List.External:Keyboard]
    int maxlength, length;	// Maximum passwords length to try, current length
    int fuzz;		// The desired "fuzz factor", either 0 or 1
    int id[15];		// Current character indices for each position
    int m[0x400], mc[0x80];	// The keys matrix, counts of adjacent keys
    int f[0x40], fc;	// Characters for the first position, their count
    
    void init()
    {
    	int minlength;
    	int i, j, c, p;
    	int k[0x40];
    
    	minlength = 7;	// Initial passwords length to try
    	maxlength = 9;	// Maximum passwords length to try, up to 15
    	fuzz = 1;	// "Fuzz factor", set to 0 for much quicker runs
    
    /*
     * This defines the keyboard layout, by default for a QWERTY keyboard.
     * Please note that the sizes of m[] and mc[] arrays assume 7-bit
     * characters and will need to be doubled for 8-bit characters such as
     * umlauts.
     */
    	i = 0; while (i < 0x40) k[i++] = 0;
    	k[0] = '`';
    	i = 0; while (++i <= 9) k[i] = '0' + i;
    	k[10] = '0'; k[11] = '-'; k[12] = '=';
    	k[0x11] = 'q'; k[0x12] = 'w'; k[0x13] = 'e'; k[0x14] = 'r';
    	k[0x15] = 't'; k[0x16] = 'y'; k[0x17] = 'u'; k[0x18] = 'i';
    	k[0x19] = 'o'; k[0x1a] = 'p'; k[0x1b] = '['; k[0x1c] = ']';
    	k[0x1d] = '\\';
    	k[0x21] = 'a'; k[0x22] = 's'; k[0x23] = 'd'; k[0x24] = 'f';
    	k[0x25] = 'g'; k[0x26] = 'h'; k[0x27] = 'j'; k[0x28] = 'k';
    	k[0x29] = 'l'; k[0x2a] = ';'; k[0x2b] = '\'';
    	k[0x31] = 'z'; k[0x32] = 'x'; k[0x33] = 'c'; k[0x34] = 'v';
    	k[0x35] = 'b'; k[0x36] = 'n'; k[0x37] = 'm'; k[0x38] = ',';
    	k[0x39] = '.'; k[0x3a] = '/';
    
    	i = 0; while (i < 0x80) mc[i++] = 0;
    	fc = 0;
    
    	/* rows */
    	c = 0;
    	i = 0;
    	while (i < 0x40) {
    		p = c;
    		c = k[i++];
    		if (!c) continue;
    		f[fc++] = c;
    		if (!p) continue;
    		m[(c << 3) + mc[c]++] = p;
    		m[(p << 3) + mc[p]++] = c;
    	}
    	f[fc] = 0;
    
    	/* columns */
    	i = 0;
    	while (i < 0x30) {
    		p = k[i++];
    		if (!p) continue;
    		j = 1 - fuzz;
    		while (j <= 1 + fuzz) {
    			c = k[i + 0x10 - j++];
    			if (!c) continue;
    			m[(c << 3) + mc[c]++] = p;
    			m[(p << 3) + mc[p]++] = c;
    		}
    	}
    
    	id[0] = 0;
    	length = minlength;
    }
    
    void generate()
    {
    	int i, p, maxcount;
    
    	word[i = 0] = p = f[id[0]];
    	while (++i < length)
    		word[i] = p = m[(p << 3) + id[i]];
    	word[i--] = 0;
    
    	if (i) maxcount = mc[word[i - 1]]; else maxcount = fc;
    	while (++id[i] >= maxcount) {
    		if (!i) {
    			if (length < maxlength) {
    				id[0] = 0;
    				id[length++] = 0;
    			}
    			return;
    		}
    		id[i--] = 0;
    		if (i) maxcount = mc[word[i - 1]]; else maxcount = fc;
    	}
    }
    
    void restore()
    {
    	int i;
    
    	/* Calculate the length */
    	length = 0;
    	while (word[length]) length++;
    
    	/* Infer the first character index */
    	i = -1;
    	while (++i < fc) {
    		if (f[i] == word[0]) {
    			id[0] = i;
    			break;
    		}
    	}
    
    	/* This sample can be enhanced to infer the rest of the indices here */
    }
    
    
     
  5. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Скрипт перевода русского текста в набор на англ раскладке
    Code:
    #!/usr/bin/perl
    
    if (@ARGV < 1)
    {
        print "Usage: transkey.pl source\r\n";
        exit();
    }
    
    $sour = $ARGV[0];
    
    if (@ARGV = 1){
        $dest = $sour . '_trans';
    }
    else{
        $dest = $ARGV[1];
    };
    
    $alphabet = "f,dult;pbqrkvyjghcnea[wxio]sm'.z";
    $alphabet2 = 'F<DULT:PBQRKVYJGHCNEA{WXIO}SM">Z';
    
    open (SR, "<$sour") || die "Could not open source file";
    open (DS, ">$dest") || die "Could not create destination file";
    
    while (<SR>){
        chomp;
        @bukvy = split(//);
            foreach $bk (@bukvy) {
                $num = ord($bk);
                if ($num < 256){
                    if ($num > 223){
                        $bk = substr($alphabet,$num-224,1);
                    }else{
                        if ($num > 191){
                            $bk = substr($alphabet2,$num-192,1);
                        };
                    };
                };
            }
        print DS join("",@bukvy) . "\n";
    };
    
    close (SR);
    close (DS);
    
     
    1 person likes this.
  6. gisTy

    gisTy Elder - Старейшина

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    а есть ли JTR_mod_by_Maxx под *nix системы? исходники например
     
  7. aquam

    aquam New Member

    Joined:
    31 Oct 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Ещё было бы неплохо про MPI написать
    http://www.bindshell.net/tools/johntheripper
    Позволяет распараллеливать работу John-a на несколько процессоров.
    Например на 4xXeon 3.2GHz скорость перебора RawMD5 составит 40 000 000 в секуду.

    Distributed John
    http://freshmeat.net/projects/djohn/
    Для организации перебора на разных машинах.
    В связке с openMPI может неплохо получиться.

    Сам использую только openMPI.
     
  8. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    2 gisTy: вообще есть, но у меня нет :)
    2 aquam: про MPI я, кажется, писал в другой теме
    ============

    Последняя сборка Джона от Макса. Для некоторых алгоритмов скорость под определенные процы значительно поднялась

    __http://rapidshare.com/files/143484764/john-20080222.rar