Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];

Вниз

Реализация 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
2-1240399577
mnj
2009-04-22 15:26
2009.06.14
Выбор нескольких элементов типа панель


2-1240660353
Nameziz
2009-04-25 15:52
2009.06.14
Save/Load Tlist


15-1238996189
Int23
2009-04-06 09:36
2009.06.14
Проблемы с RAS на Вин2003


3-1222175692
SergP
2008-09-23 17:14
2009.06.14
Oracle. Insert


2-1240812136
cosinus
2009-04-27 10:02
2009.06.14
Замена стандартного окна копирования файлов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский