Побороть каптчу

dmtet

Client
Регистрация
06.07.2010
Сообщения
185
Благодарностей
21
Баллы
18

masterprof

Client
Регистрация
15.04.2009
Сообщения
35
Благодарностей
3
Баллы
8
Сложного ничего нет. Вот только в редакторе алгоритм довольно громоздкий получится, лучше C# заюзать
Например составить для каждого символа шаблон, к примеру для L "##......##......##......##......##......##......########", распарсить символы и сравнивать с шаблонами.
Ну или другой алгоритм придумать.
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

составлять матрицу паттернов для каждого символа.
можно через многомерные массивы задать
в любом случае, кодить нужно спец решение, можно через C# код но тут не сколько кодинг, сколько паттерны составлять 90% осн работа.
потом тупо сравниваем массивы.

как вариант алго, можно привести к числовым матрицам, но хз как будет с коллизиями если сравнивать суммы матриц.
Исходник:

1. Конвертируем
. => 0
# => 1

00111111000111111110011000011001111111100
01100001100110000000011100011001100000110
01100000000110000000011110011001100000110
01100000000111111000011011011001111111100
01100000000110000000011001111001100000000
01100001100110000000011000111001100000000
00111111000111111110011000011001100000000
Далее думаю понятно, выделяем символы отрезая по краям колонку 0 и учитываем колонку разделителей в виде последовательности 11 с условием что они проходят по высоте массива..

Если повезет, хотя вероятно будут коллизии если сравнивать суммы массивов.
Нарезаем паттернов и вперед разгадывать.

В любом случае, с int массивами проще будет
 

masterprof

Client
Регистрация
15.04.2009
Сообщения
35
Благодарностей
3
Баллы
8
С матрицей геморно, проще в строках задавать шаблоны имхо. 26 шабов задать не так и сложно, полчаса работы
Пример
Код:
L - ##......##......##......##......##......##......########
E - ##########......##......######..##......##......########
и т.д.

Тогда слепив после парсинга, сразу получим строки готовые для проверки с шабами.
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

С матрицей геморно, проще в строках задавать шаблоны имхо. 26 шабов задать не так и сложно, полчаса работы
Пример
Код:
L - ##......##......##......##......##......##......########
E - ##########......##......######..##......##......########
и т.д.

Тогда слепив после парсинга, сразу получим строки готовые для проверки с шабами.
интересно, как по строке можно определить 4 символа?
-это 100% коллизии по строкам.
-это нужно иметь паттерны строк всех возможных последовательностей символов. !26 = 148362637348470135821287825
 

masterprof

Client
Регистрация
15.04.2009
Сообщения
35
Благодарностей
3
Баллы
8
А зачем 4 буквы определять сразу, там под каждую букву выделено 10 позиций (2 используются как разделитель, можно их не учитывать), что мешает поразбивать строки и слепить строку для сравнения для каждой буквы.
Спарсили первую горизонталь, разбили, записали по 8 символов в 4 переменные. Потом вторую горизонталь, к этим 4 переменным добавили еще по 8 символов. И т.д.
В итоге получили в 4-х переменных строки типа

Код:
##......##......##......##......##......##......########
И сравниваем 4 переменных с 26-ю шаблонами

Максимум 4*26 = 104 сравнений
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

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

masterprof

Client
Регистрация
15.04.2009
Сообщения
35
Благодарностей
3
Баллы
8
если не против, то напишу код на пхп. За основу возьму снимок страницы http://www.peeep.us/75dc8dca
А то слом все шабы делать :-)

В C# я нуб, методом тыка только пока
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

довай на похапе.
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

masterprof, все равно давай пример своего алго мне интересно.


Обход этой капчи без гемора для тс:-)

http://www.cmd5.ru/



 
  • Спасибо
Реакции: dmtet и ZennoScript

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
  • Спасибо
Реакции: dmtet

masterprof

Client
Регистрация
15.04.2009
Сообщения
35
Благодарностей
3
Баллы
8
Сорри, был чуток занят.
Оказалось что количество знакомест по горизонтали под букву не фиксировано. Пришлось вычислять разбивку на буквы.
Шаблоны символов - буквы повернутые на 90 градусов по часовой, в 1 строку

PHP:
<?php

    $tpl = array(
        '####...#####....#.##...#..##..#...#..#..##..#.##.#####..####...' => 'A',
        '###############..#..##..#..##..#..##..#..##..#..########.##.##.' => 'B',
        '.#####.########.....##.....##.....##.....###...##.#...#.' => 'C',
        '###############..#..##..#..##..#..##..#..##.....##.....#' => 'E',
        '##############...#..#...#..#...#..#...#..#......#......#' => 'F',
        '.#####.########.....##.....##.....##..#..#####.##.###.#....#...' => 'G',
        '##############...#......#......#......#......#...##############' => 'H',
        '#.....################.....#' => 'I',
        '.##....###....#......#......#......#......#######.######' => 'J',
        '##############...#......#.....###...##.##.##...###.....#' => 'K',
        '###############......#......#......#......#......#......' => 'L',
        '##############....##....##.....#......##......##.##############' => 'M',
        '##############....##....##....##....##....##############' => 'N',
        '##############...#..#...#..#...#..#...#..#...#..#...####....##.' => 'P',
        '.#####.########.....##.....##.#...##.#...#.#....#########.####.' => 'Q',
        '##############...#..#...#..#...#..#..##..#.###..###.#####...##.' => 'R',
        '.#..##.##.#####..#..##..#..##..#..##..#..#####.##.##..#.' => 'S',
        '......#......#......###############......#......#......#' => 'T',
        '.##############......#......#......#......#......#######.######' => 'U',
        '...####..#####.##....##.....#......##......##......#####...####' => 'V',
        '.##############......#.......#####..#####.#......#......#######.######' => 'W',
        '#.....###...##.##.##...###.....#.....###...##.##.##...###.....#' => 'X',
        '......#.....##....##.#####..#####......##......##......#' => 'Y',
        '#.....###....####...##.##..##..##.##...####....###.....#' => 'Z'
    );

    $html = file_get_contents('http://www.viprodi.ru/forum/index.php?t=register&&reg_coppa=0');
    preg_match_all('~>([\.#]{30,60})<~', $html, $matches);

    $captcha = '';

    $m = $matches[1];

    $clen = strlen($m[0]);

    for ($i=0; $i<=$clen; $i++) {
        for ($j=6; $j>=0; $j--) {
            $captcha .= substr($m[$j], $i, 1);
        }

        $captcha .= "\n";
    }

    $captcha = trim(str_replace('.......', '', $captcha));
    $symbols = explode("\n\n", $captcha);

    foreach ($symbols as &$symbol) $symbol = str_replace("\n", '', $symbol);

    print 'Captcha is: '.$tpl[$symbols[0]].$tpl[$symbols[1]].$tpl[$symbols[2]].$tpl[$symbols[3]]."\n";
?>
 
  • Спасибо
Реакции: dmtet и 7make

dmtet

Client
Регистрация
06.07.2010
Сообщения
185
Благодарностей
21
Баллы
18
Спасибо за помощь!
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)