Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Распознавание captcha на различных сайтах (https://forum.antichat.xyz/showthread.php?t=107565)

Go0o$E 23.02.2009 04:41

Распознавание captcha на различных сайтах
 
Сайт: letitbit.net

Распознавание:
PHP код:

$img imagecreatefromjpeg("code.jpg"); // Загружаем изображение
$x imagesx($img); // Ширина изображения
$y imagesy($img); // Высота изображения
$black imagecolorallocate ($img000); // Индификатор черного цвета
$color imagecolorallocate ($img150150150); // Индификатор цвета немного темнее чем шум 
for ($i=0;$i<$x;$i++){
    for (
$j=0;$j<$y;$j++){
        if (
imagecolorat($img,$i$j) <= $color){ // Если цвет пикселя темнее чем шум, значит это символ
        
imagesetpixel($img,$i$j$black); // Тогда заменяем его черным цветом
        
}
        }}

$sdn=4$sdk=13// Границы 1 символа
$res = array();
for (
$i=1;$i<=6;$i++){
  
$count=0
    for (
$x=$sdn;$x<$sdk;$x++){
      for (
$y=4;$y<=15;$y++){
        if (
imagecolorat($img,$x,$y) == $black) { // Если пиксель черный
        
$count++; // Суммируем его
        
}
}}
$sdn=$sdk$sdk+=9// Меняем координаты для поиска следующего символа
switch ($count){
  case 
36:{$res[$i] = "0";break;} // Если количество черных пикселей 36, то это 0
  
case 27:{$res[$i] = "1";break;} // ...
  
case 32:{$res[$i] = "2";break;}
  case 
31:{
  if (
imagecolorat($img,($x-1),7) == $black) { // Дополнительная проверка
    
$res[$i] = "3"; } else { 
    
$res[$i] = "e";
    } break; }
  case 
35:{$res[$i] = "4";break;}
  case 
37:{$res[$i] = "5";break;}
  case 
39:{
  if (
imagecolorat($img,($x-1),7) == $black) {
    
$res[$i] = "9"; } else { 
    
$res[$i] = "6";
    } break; }
  case 
26:{$res[$i] = "7";break;}
  case 
40:{$res[$i] = "8";break;}
  case 
33:{$res[$i] = "a";break;}
  case 
38:{
  if (
imagecolorat($img,($x-1),5) == $black) {
    
$res[$i] = "d"; } else { 
    
$res[$i] = "b";
    } break; }
  case 
24:{$res[$i] = "c";break;}
  case 
30:{$res[$i] = "f";break;}
}}
$code=$res[1].$res[2].$res[3].$res[4].$res[5].$res[6]; 

Ссылка на скрипт:
letitbit.php.txt
Последние 3 строчки мне помог написать Онотоле...

_==wolf==_ 23.02.2009 11:54

спасибо огромное! особенно радует то что слово сайт в множественном числе и присутствует ключевое слово РАЗЛИЧНЫХ = скоро появятся ещё распознавалки!

mr.The 23.02.2009 17:51

Цитата:

особенно радует то что слово сайт в множественном числе и присутствует ключевое слово РАЗЛИЧНЫХ = скоро появятся ещё распознавалки!
имхо это был тонкий намёк автора, на "переделайте и будет вам щастье."

Chaak 23.02.2009 17:58

Бред вообще по способу Nomer1 круче получается
Цитата:

https://forum.antichat.ru/thread60049.html
А вообще это трудная работа выставлять попиксельно картинки. Ну не для php она!

Go0o$E 23.02.2009 17:59

2 mr.The
Вообще я собираюсь продолжить эту тему и если есть предложения или идеи, пишите их.
// Переделать этот скрипт под легкие капчи действительно не составит труда)

-Hormold- 23.02.2009 18:00

Странно, вообще не работает...

mr.The 23.02.2009 18:07

Цитата:

Вообще я собираюсь продолжить эту тему и если есть предложения или идеи, пишите их.
я тоже этим занимаюсь потихоньку.. щас застрял на алгоритме скелетизации. всё готово на бумаге, осталось перенести в код и затестить. дальше планирую юзать ИИ.

Chaak 23.02.2009 18:14

А ничего если капчу развернуть и немного сделать мутной? Алгортимы будут работать?
-Если и будут, то уж никак не быстро

fatalo 24.02.2009 00:30

Go0o$E,а можно откомментировать код?

syava 24.02.2009 00:39

элементарный подсчёт пикселей...


Время: 16:07