Последние публикации

  16 Июля, 2011
Взлом капчи
Разбираемся, как ломают капчи. Теория и практика


  17 Июня, 2011
Справочник по PHP
Синтаксис языка и операторы. Функции работы с данными. Файлы и сети. Управляющие функции. ..


  25 Января, 2011
Основы web-технологий.
С появлением высокопроизводительных серверов, сетевого оборудования и высокоскоростных каналов связи ..


  22 Января, 2011
Теоретические основы защиты информации.
В настоящее время и у нас в стране, и за рубежом достаточно много публикаций по современным ..


Поиск по сайту

 

postheadericon Главная / безопасность пк / хакинг

Взлом капчи


Разбираемся, как ломают капчи. Теория и практика

опыта работы с нейросетями. Для использования достаточно нескольких функций:

// Создание нейросети
// Параметры:
// 1. Количество слоев и нейронов в каждом

из них
// 2. Связность нейросети (1 – полносвязная)
// 3. Скорость изменения весов при обучении
$ann = fann_create(array(384, 150, 10), 1, 0.7);

// Обучение нейросети
// Параметры:
// 1. Нейросеть
// 2. Обучающий набор (массив, содержащий массивы, соответствующие входному и выходному слоям)
// 3. Максимальное количество итераций
// 4. Допустимая погрешность
// 5. Промежутки, через которые выводится отчет об обучении
fann_train($ann, $set, 10000, 0.001, 100);

// Выполнение нейросети на входном наборе $input
$output = fann_run($ann, $input);

// Запись нейросети в файл
fann_save($ann, 'ann.data');

// Загрузка нейросети из файла
$ann = fann_create('ann.data');

Опытным путем была подобрана оптимальная структура нейронной сети для нашей задачи — три слоя по 384, 150 и 10 нейронов. Первый (входной) слой принимает значения соответствующих пикселов (16х24 = 384) изображения цифры, нормализованные к отрезку от 0 до 1 (значение яркости), внутренний слой играет основную роль в распознавании, а последний

выходной слой представляет собой вектор из 10 переменных от 0 до 1, каждая из которой соответствует одной из цифр: чем выше значение, тем больше подобие изображения, соответствующей цифре. В данном случае используется только один внутренний слой, потому что логика, реализуемая нашей нейросетью, практически является «примеркой» усредненных шаблонов каждой цифры к изображению, поэтому нескольких последовательных операций не требуется. Для обучения нейросети воспользуемся заготовленными образцами, кроме того нам потребуется ещё один набор образцов для независимого тестирования, который должен формироваться случайным образом без учета зашумленности:

function train()
{
$dir = "samples/";
$set = array();
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if (filetype($dir.$file) == 'file')
{
$answer = str_replace('.jpg', '', $file);
$xc = new Xakep_CAPTCHA($dir.$file, 'ann.data', 4, $answer);
$out = $xc->parse();
$set []= $xc->sample;
}
}
closedir($dh);
}
$ann = fann_create(array(384, 150, 10), 1, 0.7);
fann_train($ann, $set, 10000, 0.001, 100);
fann_save($ann, 'ann.data');
}

Первая попытка обучения на 100 образцах дала 43% успешных распознаваний на независимом тестовом наборе, что соответствует примерно 3% (0.43 ^ 4), что уже близко к нашей цели. Дополнив базу образцов ещё 100 экземплярами, получаем 55% успешных распознаваний отдельных цифр и примерно 10% всей капчи. С учетом того, что на попытку распознавания одной капчи расходуется около 1-2 секунд процессорного времени, общие затраты на успешный взлом одной капчи составят 10-20 секунд. Это, в целом, приемлемое время, однако увеличение количества образцов для обучения нейросети позволит

значительно снизить эти расходы. Для тестирования используем следующий код:

function test()
{
$dir = "test/";
$c = 0;
$wins = 0;
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if (filetype($dir.$file) == 'file')
{
$xc = new Xakep_CAPTCHA($dir.$file, 'ann.data', 4);
$out = $xc->parse();
if ($out == str_replace('.jpg', '', $file))
$wins++;
print ' '.$out.'

'
;
flush();
$c++;
}
}
closedir($dh);
}
print $wins.'/'.$c;
}

Выводы и заключение

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

Дата публикации: 16 Июля, 2011
Автор: Артём Заруцкий
Прочитано: 8286 раз

-  5  -

<1 | 2 | 3 | 4 |  5  | 6 | 7>

postheadericon Это интересно

Справочник по PHP

Синтаксис языка и операторы. Функции работы с данными. Файлы и сети. Управляющие функции. Взаимодействие с базами данных. Графика.

Веб-дизайн

Предлагаемая вашему вниманию книга задумывалась не как практическое руководство по веб-дизайну, а скорее как учебник общего дизайна на част­ном материале веб-сайтов.

Приемы раскрутки WEB-сайтов.

Обзор приемов раскрутки web-сайтов.