Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 10:53   #1
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию Создание капчи

Добрый день, я написал простую капчу на php,
PHP код:

<?php

    $str
="";
    
$rand_fonts = array('BKANT.TTF','CAMBRIAB.TTF','CANDARAZ.TTF','CENTURY.TTF','comic.ttf',
                        
'comicbd.ttf','REFSAN.TTF','times.ttf','CONSTANI.TTF','CONSOLAI.TTF',
                        
'SEGOEUIZ.TTF','tahomabd.ttf');
    
    function 
r_colors(){
    
        global 
$r,$g,$b,$r1,$g1,$b1,
               
$image,$color,$alt;
               
        
$r rand(0,90);
        
$g rand(0,90);
        
$b rand(0,90);
    
        
$r1 rand(120,255);
        
$g1 rand(120,255);
        
$b1 rand(120,255);
        
        
$image imagecreatetruecolor(13060);
        
$color imagecolorallocate($image$r$g$b);
        
$alt imagecolorallocate($image$r1$g1$b1);
    }
    
    function 
c_image($y,$x,$angle,$font){ 
        global 
$image,$color,$alt,$text;
        
imagefilledrectangle($image,0,0,130,60,$color);
        
imagettftext($image,17,$angle,$x,$y,$alt,"fonts/".$font,$text);
        
header("Content-type: image/png");
        
imagepng($image);
    }
    
    for(
$i 0$i 4$i++){
        global 
$font_size,$angle,$x,$y;
        
$w = array('a','b','c','d','e','f','g','h','i','j','k','l','m',
                   
'n','o','p','q','r','s','t','u','v','w','x','y','z',
                   
'0','1','2','3','4','5','6','7','8','9');
        
$k rand(0,35);
        
$m rand(0,1);
    if(
$m == 0)
        
$str.=strtoupper($w[$k]);
        else
            
$str.=strtolower($w[$k]);
        
$y rand(19,55);
        
$x rand(2,60);
        
$angle rand(-5,5);
        
$font $rand_fonts[rand(0,11)];
    }
    
        
$text $str;
        
r_colors();
        
c_image($y,$x,$angle,$font);

?>
_4.png

_5.png

_44.png

_.png

4.png


Оцените пожалуйста надежность капчи и правильность кода, т.к эта моя первая капча, и вообще делаются ли так как я капчи?
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 17.12.2011, 10:57   #2
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

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

Arsenx777 вне форума Ответить с цитированием
Старый 17.12.2011, 22:01   #3
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Надёжность нулевая. Бот для неё пишется за пару часов, а то и меньше.

Если хотите повысить надёжность, то добавьте наклон символам и пересечение. Количество символов увеличьте до 6, набор не важен (можно даже одни цифры).
Виталий Желтяков вне форума Ответить с цитированием
Старый 18.12.2011, 22:43   #4
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Надёжность нулевая. Бот для неё пишется за пару часов, а то и меньше.
А как написать алгоритм для распознавания этой капчи? на C++ или DELPHI, и можно ли распознавать капчи стандартым php 4 или php 5 (тоесть без всяких движков или дополнительных *.dll) ? если да, то какими функциями?
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 18.12.2011, 23:19   #5
keen_
Форумчанин
 
Регистрация: 07.12.2011
Сообщений: 112
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Надёжность нулевая. Бот для неё пишется за пару часов, а то и меньше.

Если хотите повысить надёжность, то добавьте наклон символам и пересечение. Количество символов увеличьте до 6, набор не важен (можно даже одни цифры).
Виталий, кстати, не посоветуете какую капчу можно и лучше использовать для форума PHPBB?
Знакомый поставил форум и говорит, что боты тут как тут уже - регистрируются во всю. А мне странно, что сами разработчики PHPBB не залатали эту дыру.
keen_ вне форума Ответить с цитированием
Старый 19.12.2011, 13:24   #6
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
А как написать алгоритм для распознавания этой капчи? на C++ или DELPHI, и можно ли распознавать капчи стандартым php 4 или php 5 (тоесть без всяких движков или дополнительных *.dll) ? если да, то какими функциями?
Я этим уже очень давно занимался. Делается это крайне легко:
- Снимок изображения,
- Вырезаем капчу,
- Настраиваем контраст, насыщенность цветов,
- Обесцвечиваем,
- Делим изображение на отдельные символы,
- Проводим анализ размещения точек у отдельных символов.

Я подобный алгоритм в свой время реализовывал на Delphi и AutoIt. Коэффициент угадывания для приведённых выше капч >95%.

Цитата:
Виталий, кстати, не посоветуете какую капчу можно и лучше использовать для форума PHPBB?
Берёте капчу от сюда и меняете слегка настройки, чтобы буквы были искажёнными и пересекались (это резко понижает коэффициент отгадывания).
Виталий Желтяков вне форума Ответить с цитированием
Старый 19.12.2011, 21:38   #7
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Я этим уже очень давно занимался. Делается это крайне легко:
- Снимок изображения,
- Вырезаем капчу,
- Настраиваем контраст, насыщенность цветов,
- Обесцвечиваем,
- Делим изображение на отдельные символы,
- Проводим анализ размещения точек у отдельных символов.

Я подобный алгоритм в свой время реализовывал на Delphi и AutoIt. Коэффициент угадывания для приведённых выше капч >95%.
.
У меня не как не получается, я даже пытался простые цифры с картинки распознать не получатся(( Уже полтора года учу delphi,а еще таких елементарных вещей не знаю. Может у вас какие нибудь исходники есть другие? если можете выложите пожалуйста, или какие нибудь примеры, алгоритмы

Буду очень благодарен!
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 19.12.2011, 22:29   #8
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Алгоритм описан выше. Программный код выложить не могу потому, что потерял его с "сдохшим" винтом.

Если Вам что-то не понятно, то задавайте более конкретные вопросы.
Виталий Желтяков вне форума Ответить с цитированием
Старый 19.12.2011, 23:51   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
а еще таких елементарных вещей не знаю.
.
кто сказал что это элементарно?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2011, 22:01   #10
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Если Вам что-то не понятно, то задавайте более конкретные вопросы.
В капче цыфры или буквы появляются рандомно(хаатично, тоесть положение по x,y), Допустим на delphi запускаю цикл, как я узнаю откуда вырезать? т.к координаты постоянно разные;

НЕ могу разобраться с цыклами, когда и как вырезать отдельные цифры или буквы.
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознание капчи Arsenx777 Общие вопросы Delphi 36 26.01.2014 21:20
Обход капчи ZverSS88 Работа с сетью в Delphi 6 05.11.2010 13:38
адрес капчи DeDoK Работа с сетью в Delphi 0 24.10.2010 21:06
КОПИРОВАНИЕ КАПЧИ!!!! daitedeneg Софт 0 30.11.2009 04:30