Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.14;
Скачать: CL | DM;

Вниз

Реализация Captcha   Найти похожие ветки 

 
CoderM   (2009-04-09 19:48) [0]

Собственно, доброго времени суток, товарищи.

Недавно в одной из моих программ (клиент-сервер) появилась необходимость реализации капчи (картиночки с кодом для защиты от брутфорса). Т.е. на запрос клиента об авторизации - сервер отсылает капчу. Необходим компонент или код, реализующий создание РЕАЛЬНО сложной её. Где такое найти, а? Или как на канвасе или битмапе жестко искажать буквы, писать под наклоном, волнами (как в яндексе).

ПОГУГЛИТЬ - не предлагать. Уже. Не нашел ничего подходящего, если б нашел - не писал бы сюда.


 
Mystic ©   (2009-04-09 20:20) [1]

Ну придумай некоторое отображение x" =  f(x,y), y" = g(x,y) и подбирай его параметры. Волны это тригонометрические функции. Наклон это простой поворот


 
test ©   (2009-04-09 21:28) [2]

На чем пишеш?


 
DVM ©   (2009-04-09 21:31) [3]


> CoderM   (09.04.09 19:48)  

если и серверу и клиенту доступен интернет, то можно взять капчу со специальных сервисов - reCaptcha например. У нее API есть специальный.


 
VICTOR_   (2009-04-10 12:03) [4]

На PHP это может выглядеть примерно так


> $im=imagecreatefromjpeg("back.jpg");//файл с фоном
> $tc=imagecolorallocate($im, 128,64,0);//цвет кода
> $tp1=imagecolorallocate($im, 255,000,000);//цвет пикселей
> шума1
> $tp2=imagecolorallocate($im, 000,255,000);//цвет пикселей
> шума2
> $tp3=imagecolorallocate($im, 000,000,255);//цвет пикселей
> шума3
> for($i=1;$i<99;$i++) imagesetpixel($im, Rand(1,130), Rand(1,
>  30), $tp1);//шумы1
> for($i=1;$i<99;$i++) imagesetpixel($im, Rand(1,130), Rand(1,
>  30), $tp2);//шумы2
> for($i=1;$i<99;$i++) imagesetpixel($im, Rand(1,130), Rand(1,
>  30), $tp3);//шумы3
>
> $arr_letter=array("A","B","C","D","E","F","G","H", "I","J",
> "K","L","M","N","P","Q","R","S","T","U","V","W","X","Y",
> "Z");
> $arr_x=array(24,40,56,72,88);//расстановка попикселям букв
> $arr_kod=array();//font.ttf - arial.ttf
> for ($i_zn=0;$i_zn<5;$i_zn++){$i_rand=$arr_letter[rand(2,
> 24)];imagettftext($im, 15,rand(-10,20),$arr_x[$i_zn],rand(20,
> 24),$tc,"font.ttf", $i_rand);$arr_kod[]=$i_rand;}
>


 
Дмитрий С ©   (2009-04-10 16:32) [5]

У меня появилась недавно идея рисовать буквы "псевдографикой". Например:

asdfasd          f     sfgfgdfg    ssssfg
s      fad             s       dfg d     fgd
c         f   dfds     d         fg         df
d         s      d     g          f          f
f         d      d     s          f          d
g         d      d     d          f          s
d      dfd       f     f          f          g
ddfsaga       sdffdsdffgsfs     dfsgs      ffgdfs

И далее с вариациями - наезд букв друг на друга и т.п. Все это передается в бразуер реально буквами и выводится с помощью абсолютно спозиционированных блоков (DIVов). Браузеры отрисуют на-ура, а вот кулхацкерам реально придется попотеть, чтобы только получить картинку для распознания или публикации ее где-нибудь:)


 
stas ©   (2009-04-10 17:20) [6]

CoderM   (09.04.09 19:48)
если ASP.NET могу дать на C#


 
DVM ©   (2009-04-10 18:42) [7]


> Дмитрий С ©   (10.04.09 16:32) [5]

Это уже давно используется, ты не первый.


> Браузеры отрисуют на-ура, а вот кулхацкерам реально придется
> попотеть, чтобы только получить картинку для распознания

Есть более простой способ: графическая картинка капчи режется на несколько кусочков и они загоняются в таблицу. Таблица выводится. Число кусочков и число ячеек таблицы можно сделать случайным, что сделает невозможным автоматическую сборку картинки в единое целое программой для спама. Да и никто даже заморачиваться не будет.


 
Rouse_ ©   (2009-04-10 18:44) [8]

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


 
Германн ©   (2009-04-10 19:19) [9]


> Rouse_ ©   (10.04.09 18:44) [8]

А заодно и русский подучит :)


 
DVM ©   (2009-04-10 19:19) [10]


> Rouse_ ©   (10.04.09 18:44) [8]


> заясь - волк

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


 
Rouse_ ©   (2009-04-10 19:29) [11]


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

У меня на рапиде премиум, сам не видел - но люди рассказывали. Достаточно многолитровая по глубине выпитого, как я понял, была идея :)


 
Дмитрий С ©   (2009-04-10 19:32) [12]


> DVM ©   (10.04.09 18:42) [7]

Очень хорошо, что используется, значит идея не лишена смысла :)


> Rouse_ ©   (10.04.09 18:44) [8]

Слишком сложно и слишком мало вариантов, все-равно можно методом "тыка" брутофорсить :) К тому же нет защиты от показов твоей капчи на  порно-сайтах.


 
antonn ©   (2009-04-10 19:33) [13]

вроде на рапиде.ком сейчас обычные буквы (пару раз натыкался, тоже премиум :) )


 
DVM ©   (2009-04-10 20:04) [14]


> antonn ©   (10.04.09 19:33) [13]


> вроде на рапиде.ком сейчас обычные буквы

Они убрали этих кошек и собак. Они мало того что плохо отличимы, так еще надо понять что требуется сделать. Это несколько неочевидно. Еще забавно было когда они появились - на капче 6 букв, поле для ввода только на 4 :)


 
sniknik ©   (2009-04-10 21:51) [15]

> У меня появилась недавно идея рисовать буквы "псевдографикой". Например:
http://www.hovinne.com/dev/jquery/chartotable/



Страницы: 1 вся ветка

Текущий архив: 2009.06.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
15-1239264375
evgenij
2009-04-09 12:06
2009.06.14
Видимость значений переменных (String) в exe


2-1240583032
fgb
2009-04-24 18:23
2009.06.14
декларация из с++


15-1239086924
Игорь Шевченко
2009-04-07 10:48
2009.06.14
McSimm, с днем рождения!


2-1240845722
Drowsy
2009-04-27 19:22
2009.06.14
Как переименовать таблицу IB?


15-1239121494
theAddon
2009-04-07 20:24
2009.06.14
Помогите написать небольшую программку