Mar 05

Собираю алгоритмы, которые буду использовать в своем проекте “Captcha-E64F”. Начало читайте на странице http://www.e64f.ru/?p=287. Хотя Charnad высказался скептически - типа нечего изобретать велосипед, я все же решил продолжить проект и довести его до стадии релиза, т.е. выпустить плагины для wordpress, phpbb, drupal.

Итак сегодня о волновых искажениях.

Читать далее »

Теги: ,

Jun 29

Сделана капче-распознавалка на библиотеку G2 фото альбомы на сайт. Разработчик http://gallery.menalto.com/
Библиотека G2 в своем функционале позволяет оставлять к картинкам коменты, но в форме добавления комментария вшита простенькая капча защита.
Читать далее »

Теги:

Mar 13

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

Всем известно, что капчи делают для того, чтобы защитить свои гостевые, комментарии, посты в форумах и так далее от автоматического (программного) распространяемого текста в котором обычно есть ссылка на продвигаемый в поисковых системах ресурс. Еще капчами защищают отправку sms, проведение платежей, регистрацию в почтовых сервисах, скачивание файлов, регистрацию в бесплатных хостингах, гугл требует ввести капчу, когда вы добавляете свой сайт на индексацию.

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

Хотя владельцев сайтов которые защищают свои ресурсы полный интернет, им противостоят те кто зарабатывает на продвижении сайтов в поисковых системах. Наверное, когда нибудь в будущем поисковики перестанут ранжировать сайты опираясь на количество ссылающихся на них других сайтов. Будет очень весело. А пока оптимизаторы имея деньги, пользуются специальными ресурсами по ручному распознаванию капч (цены от 1 доллара за 1000 картинок). Еще для распространенных капч, заказывают программы распознавания капчи. Программный подход распознавания капчи очень легко реализуем в первую очередь для уязвимых картинок.

Разработчики защиты на основе картинок зачастую не понимают каким образом можно сделать программное распознавание текста на картинке, им это кажется очень сложным даже невозможным. Поэтому и разработанные ими капча защиты легко распознаваемы программно.

Итак какие существуют уязвимости капч:

  • Использование одного единственного шрифта
  • Размер шрифта всегда одинаковый
  • Количество символов на картинке всегда одинаковое
  • Символы легко можно очистить от фона
  • Примитивные помехи в виде линий или точек
  • Символы не вращаются, хотя если символы повернуты на какой нибудь рандомный угол тоже ерунда
  • К символам и их частям не применяются эффекты деформирования
  • Символы не слипшиеся

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

Виды капч по своей сложности:

  1. Самые примитивные капчи, это капчи использующие один шрифт, одного размера, всегда одинаковое количество символов на картинке, без поворотов символов, без каких либо деформаций символов, зачастую символы находятся на одной линии, размытие не используется. Возможно присутствуют визуальные помехи в виде точек, линий и других фигур. Причем помехи легко можно убрать.
  2. Более сложные капчи обычно все также используют один единственный шрифт, символы разного размера, используется вращение символов, иногда используется эффект размытия, всевозможные помехи, которые также легко убрать.
  3. Средне сложные капчи имеют сложный иногда градиентный фон, используется 2 или 3 шрифта. Символы разных размеров и вращение символов может использоваться или не использоваться. Помехи не очень легко убрать.
  4. Используют несколько шрифтов. Применяется искажения как всей строки, отдельного символа, также какой то части символа. Символы касаются друг друга, т.е. слипшиеся.
  5. Может быть не самые сложные, но имеющие свою изюминку. Например: флеш капчи, gif анимированные капчи.

Примеры:

Очень примитивно

Они что думают, что красный фон нельзя убрать? Легко, убираем все кроме черного цвета.

Повернутые символы, разного размера, фон легко убирается

Слипшиеся символы, разноцветные. Кстати разноцветность символов помогает их разделить

Один шрифт, но применяется эффект деформации, символы слипшиеся.

Сложный фон

Разный шрифт, помехи легко убрать

Анимированный gif. Символы которые нужно набрать тоже двигаются, хотя траектория движения поможет в распознавании.

Теги: ,

Nov 01

Найдено вот здесь - http://www.netzgesta.de/cvi/contact.php

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

Стрелка часов черная, стрелка минут красная. Обе стрелки могут быть в 12 разных положениях.

Таким образом для распознавания данной каптчи достаточно проверять цвет пикселя в 12 местах.

Теги: ,

Oct 07

Любой кто имеет в сети сайт, рано или поздно сталкивается с проблемой спама. Не в смысле почтового спама, а спама в гостевую книгу, форум, блог, вобщем везде, где посетители сайта могут оставлять свои сообщения. Сразу стоит сказать, что хотя и бывает, что спам рассылается вручную, т.е.  живым человеком - это бывает редко, обычно это делает специальная программа, которая может: изменять свой IP адрес, распознавать каптча картинку, постить разные сообщения, отвечать на свои же сообщения, но уже под другим пользователем. И много чего еще, как говорится на каждую стандартную защиту находится программист, который сделает программу или модуль к программе и защита будет повержена.

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

Перехожу  к делу, короче говоря если хотите чтобы вас не спамили нужно делать свою уникальную каптчу. Если не можете сами программировать, наймите кого нибудь, думаю что цена в 50$ не такая высокая.

Как должна работать каптча

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

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

Правильно делать так, строка на картинке = str1 и строка в куках = str2, генерятся случайным образом независимо друг от друга. STR2 нужна для того чтобы передавать ее в форму в открытом виде. STR1 написана только на картинке каптча.  Обе строки связаны между собой в таблице. Т.е. человек в скрытом поле формы(или куках) имеет STR2, STR1 введет с картинки, и когда форма отправится скрипту скрипт достанет из таблицы запись по STR2 и сравнит STR1 из таблицы и строку введенную пользователем.

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

Делаем генератор картинок

Первое, что нужно сделать, это найти уникальный шрифт. Взял с полки диск с 1 000 000 шрифтов и вперед. Решил выбирать только из рукописных шрифтов, набралось около 20 штук.

Еще насчет шрифтов, можно использовать рандомом все 20 шрифтов, например каждый раз писать случайным фонтом все буквы. Можно каждый символ на картике писать случайно выбранным шрифтом. Я для себя решил писать всегда одним и тем же шрифтом, если начнется спаминг, просто сменю шрифт на следующий.

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

Исходный код

<?php
// Тип содержимого – картинка формата PNG 
header("Content-type: image/png");
 
// создаем картинку размером 130X40
$img=imagecreatetruecolor(180, 80) or die('Cannot create image');
 
// заполняем фон картинки белым цветом
imagefill($img, 0, 0, 0xFFFFFF);
 
$x=0;
$i = 1;
$sum = "";
$fonts = array(
'./BIRCH_C.TTF', 
 './CHAMPGNE.TTF', 
'./EASTSIDE.TTF', 
'./GISMONDA.TTF', 
'./OLGA_C.TTF', 
'./RIVERSDE.TTF', 
'./SSR56__C.TTF', 
'./STAC222N.TTF', 
'./STEVE.TTF', 
'./VICTORIA.TTF'
);
 
 
//$font = $fonts[rand(0, sizeof($fonts)-1)];
$font = './OLGA_C.TTF';
 
// выводим одну цифру за один проход цикла (всего 5 цифр)
while ($i++ <= 5)
{
   // выводим текст поверх картинки
   imagettftext(
   $img,          // идентификатор ресурса
   rand(12,25),   // размер шрифта в пикселях
   rand(-35,35),  // угол поворота текста
   $x=$x+30, 25+rand(0,10), // координаты (x,y), соответствующие левому нижнему
                            // углу первого символа
   imagecolorallocate($img, rand(0,128), rand(0,128), rand(0,128)), // цвет шрифта
   $font, // имя файла со шрифтом
   $rnd=rand(0,9)); // случайная цифра от 0 до 9
   // Собираем в одну строку все символы на картинке
   $sum = $sum.(string)$rnd;
}
 
//Не забудьте $sum записать в таблицу как STR1
 
// выводим готовую картинку в формате PNG
imagepng($img);
// освобождаем память, выделенную для картинки
imagedestroy($img);
?>

Вот, что получилось

Моя каптча

Вся работа заняла не более 30 минут.

Теги: , , ,

Sep 04

Последнее время в основном работал в сотрудничестве в NMAN-ом над созданием распознавалок каптч.

Пора подвести итоги. Привожу примеры “сделанных” каптч.

Форумный движок PHPbb 2 - хотя выпущена 3 версия все еще достаточно сильно распространен
Очень простая каптча, распознавание 100%
Очень простая каптча, распознавание 100%
выхлоп примерно 75% удачных распознаваний
выхлоп 100% удачных распознаваний
выхлоп примерно 80% удачных распознаваний
выхлоп примерно 75% удачных распознаваний
выхлоп примерно 99% удачных распознаваний
выхлоп 100% удачных распознаваний
выхлоп 100% удачных распознаваний
выхлоп примерно 75% удачных распознаваний
выхлоп примерно 95% удачных распознаваний
выхлоп 100% удачных распознаваний
выхлоп примерно 75% удачных распознаваний
выхлоп примерно 85% удачных распознаваний
выхлоп 100% удачных распознаваний
выхлоп примерно 85% удачных распознаваний
выхлоп примерно 99% удачных распознаваний

Результатами данных работ стали не только сами программы распознавания, но и отладка технологий распознавания каптч как таковых. :-)

Теги: , , ,

Jul 17

Не помню как забрел на блог Ивана Склярова, но читать мне его понравилось.

И в одном из постов Иван предлагает бесплатно взять скрипт генерации капчи http://www.sklyaroff.ru/comm.php?mess=8

И вот что я ему написал в коментарий:

2008-07-11 08:41:23 e64f пишет:
Добрый день!
Ваша капча картинка относится к разряду примитивных.
Могу на спор сделать программу распознавалку ваших картинок за 2 дня.
Если интересует, то вот инфо для связи
————————————–
Почта: VMatvienko@gmail.com
Сайт: www.e64f.ru
С уважением Матвиенко Валерий.

На что последовал ответ:

Напиши, посмотрим.

Заняло это правда чуть больше 2 дней, по причине того, что большой загруз на работе.

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

О тонкостях реализации пожалуй умолчу. )

Вот видео 2 мб. http://www.e64f.ru/captcha.avi с доказательством.

Еще хочу сказать, что делал все это я не один, а нас сейчас двое, наши ники e64f и nman.

Теги: ,