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

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


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


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


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


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

 

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

Взлом капчи


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

Расчет целевой функции производится следующим образом:

// Функция вызывается во время работы генетического алгоритма
public function test_dna($array)
{
$fitness = 0;
for ($d = 0; $d < $this->digits_quantity; $d++)
for ($i = 0; $i < $this->digit_width; $i++)
for ($j = 0; $j < $this->digit_height; $j++)
{
// Вычисление позиции пикселя на основе отступов (x, y) и сдвига (d)
$x = $this->digit_kerning * $d + $i + $array['x'] + round($array['d'] * ($j / $this->digit_height));
$y = $j + $array['y'];
$fitness += $this->mask[$x][$y];
}
return $fitness;
}

Так как во время работы алгоритма расчет целевой функции для заданного решения будет происходить многократно, разумно будет использовать маску, создание которой было описано ранее. Маска позволит избежать многократных преобразований и сравнений цветов пикселей при оценке решения. Реализовав алгоритм и проведя тестирование получаем очень хорошие результаты — 90% точного определения расположения надписи при затратах в одну-две секунды процессорного времени. На основе найденного решения «вырезаем» все 4 цифры из изображения и приводим их к прямоугольному виду (16x24 пикселов):

protected function divide_digits($params)
{
$this->digits = array();
for ($i = 0; $i < $this->digits_quantity; $i++)
{
//
Создаем изображение для отдельной цифры
$this->digits[$i]['image'] = imagecreatetruecolor($this->digit_width, $this->digit_height);
$this->digits[$i]['width'] =

$this->digit_width;
$this->digits[$i]['height'] = $this->digit_height;
for ($x = 0; $x < $this->digit_width; $x++)
{
for ($y = 0; $y < $this->digit_height; $y++)
{
// Вычисляем сдвиг, "выпрямляющий" изображение
$d = round($params['d'] * ($y / $this->digit_height));
$color = imagecolorat($this->image, $x + $this->digit_kerning * $i + $d + $params['x'], $y + $params['y']);
imagesetpixel($this->digits[$i]['image'], $x, $y, $color);
}
}
}
}

Распознавание

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

нейронные сети, которые мы и будем использовать. Искусственная нейронная сеть представляет собой математическую модель нейронной сети головного мозга человека (или животного). Нейросеть состоит из простейших элементов — нейронов. Нейроны связаны между собой, по этим связям проходят сигналы — числа от 0 до 1. Каждый нейрон выполняет несложную математическую операцию: на основе поступающих от других нейронов сигналов и их весов вычисляется выходной сигнал текущего нейрона. Веса связей между нейронами являются параметрами, которые определяют работу нейронной сети.

Нейроны группируются в последовательность слоев (feedforward сети), входной сигнал (условия задачи) поступает на первый слой и последовательно проходит все слои до последнего (решение). Обучение нейронной сети может происходить с учителем (набором уже решенных задач) или без него (например, на основе реакции среды). Обучение с учителем происходит путем последовательного выполнения нейронной сети на уже решенных задачах и сравнения получившегося результата с ответом: если ответ не совпадает, производится коррекция весов связей. С математической точки зрения нейронная сеть в целом — это «черный ящик».

Процессы, происходящие внутри нейросети, очень трудно поддаются математическому анализу, поэтому для прикладных целей нейросеть достаточно рассматривать как некоторую систему, способную находить закономерности в некоторых наборах данных. Самостоятельно реализовывать нейронные сети для такой задачи дело неблагодарное, поэтому мы воспользуемся бесплатной библиотекой Fast Artificial Neural Network (www.leenissen.dk/fann). Эта библиотека хороша тем, что имеет интерфейсы практически для всех популярных языков программирования и требует минимального

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

-  4  -

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

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

Теоретические основы защиты информации.

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

Копирование Star Force по методу AlB.

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

Лекции по информационной безопасности.

Словосочетание "информационная безопасность" в разных контекстах может иметь различный смысл.

Настройка безопасности компьютера.

Методика настройки приложений для безопасной работы в интернете.