Estoy haciendo un Captcha killer para reconocer el captcha de una web a través de PHP, luego de hacerlo pienso publicar el código aqui pero primero necesito un poco de ayuda.
He leido el pdf que publicó NaPa, y me pareció bastante interesante. Ahora estoy haciendo el código pero con otro tipo de Captcha (que parece fácil pero me he comido los cesos 3 días enteros).
Por ahora solo quiero comparar la primera letra del captcha con un datamap ya creado. Primero he probado comparando un 7 (primera letra del Captcha) con un 7 (datamap ya creado). Las igualdades en sus pixeles me dió algo así como 29 (niveles del array), por lo tanto me parece razonable ya que se acerca. El problema es que al querer comparar el mismo 7 del captcha con el datamap ya creado de un 0 (cero) me devuelve el mismo resultado, siendo que no son nada que ver.
El código a continuación:
<?php
$archivo = fopen("Letras/ocr/7-bfa262e02131320615905fbb91d32d66-charmap.datamap","r"); //Datamap del número 7 $longitud = filesize("Letras/ocr/7-bfa262e02131320615905fbb91d32d66-charmap.datamap"); $archivo = fread($archivo,$longitud); $width = 24;
$height = 25;
$img = limpia($img);
$datamap1 = creardatamap($imgchar,"noname");
$datamap1 = explode("@",$datamap1); $datamap1 = explode(":",$datamap1); $errores = 0;
for($i=0;$i<count($datamap1);$i++){
if (($archivo[$i]) != ($datamap1[$i])){$errores++;}
}
echo $errores; //El valor me devuelve 648
//////////////////////////////FUNCIONES///////////////////////////////////
function learnchar($image,$name){
global $width,$height;
$imagen = crearimagenfile($image);
guardar($datamap,$name);
echo "Nueva relacion de memoria creada, aprendiendo de $name <br>";
}
function guardar($datamap,$name){
$fl = fopen("Letras/ocr/$name-".md5(time()*rand(1,100))."-charmap.datamap","w+"); }
function iniciarsistema(){
learnchar("Letras/A.jpg","A");
learnchar("Letras/B.jpg","B");
learnchar("Letras/C.jpg","C");
learnchar("Letras/D.jpg","D");
learnchar("Letras/E.jpg","E");
learnchar("Letras/F.jpg","F");
learnchar("Letras/0.jpg","0");
learnchar("Letras/1.jpg","1");
learnchar("Letras/2.jpg","2");
learnchar("Letras/3.jpg","3");
learnchar("Letras/4.jpg","4");
learnchar("Letras/5.jpg","5");
learnchar("Letras/6.jpg","6");
learnchar("Letras/7.jpg","7");
learnchar("Letras/8.jpg","8");
learnchar("Letras/9.jpg","9");
}
function limpia($image){
for ($x = 0; $x <= $w; $x++){
for ($i = 0; $i <= $h; $i++){
$r = ($rgb >> 16) & 255;
$g = ($rgb >> 8) & 255;
$b = $rgb & 255;
if (($r > 55) || ($g > 55) || ($b > 55)){
}else{
}
}
}
return $image;
}
function crearimagenfile($img_file){
global $width,$height;
$img=0;
switch( $img_sz[2] ){
case 1:
break;
case 2:
break;
case 3:
break;
}
$width = $img_sz[0];
$height = $img_sz[1];
return $img;
}
function creardatamap($image,$name){
global $width,$height;
$datamap = $name."@";
for ($x=0; $x<=$width; $x++){
for ($y=0; $y<=$height; $y++){
$datamap.=":".$x.",".$y.",".pixelcolor($image,$x,$y);
}
}
return $datamap;
}
function pixelcolor($im,$x,$y){
$r = ($rgb >> 16) & 255;
$g = ($rgb >> 8) & 255;
$b = $rgb & 255;
if (($r > 55) || ($g > 55) || ($b > 55)){
return 0;
}
return 1;
}
?>
El resultado me da igual tanto probando con el datamap de un 7 como de un cero.
Los datamaps son los siguientes:
* Del número 0:
ZRN6ZPjjYQN6ZPjkYQN6ZPjlYQN6ZPjmYQN6ZPj0YQN6ZPj1YQN6ZPj2YQN6ZPj3YQN6ZPj4YQN6ZPj5YQN6ZPjkZPjjBwNfZGRfZQbjYQRlYQN6ZPjkZljjBwNfZGDfZQbjYQR1YQN6ZPjkAvjjBwNfZGpfZQbjYQR4YQN6ZPjkBFjjBwNfZwNfZQbjYQVkYQN6ZPjlZvjjBwNfZwZfZGbkYQNfZQbkYQRfZQbkYQVfZQbkYQZfZQbkYQDfZQbkYQHfZQbkYQLfZQbkYQpfZQbkYQtfZGbkYQxfZGbkYQRjYQR6ZFjkZFjkBwRfZGVfZGbkYQRmYQR6ZFjkAPjkBwRfZGHfZQbkYQR2YQN6ZFjkAljjBwRfZGtfZQbkYQR5YQN6ZFjlZPjjBwRfZwRfZQbkYQVlYQN6ZFjlZljkBwVfZPjjBwVfZFjjBwVfZvjjBwVfZljjBwVfAPjjBwVfAFjkBwVfAvjkBwVfAljkBwVfBPjkBwVfBFjkBwVfZGNfZGblYQRkYQR6ZvjkZvjkBwVfZGZfZGblYQR0YQR6ZvjkAFjkBwVfZGLfZGblYQR3YQR6ZvjkBPjjBwVfZGxfZQblYQVjYQN6ZvjlZFjjBwVfZwVfZQblYQVmYQR6ZljjYQN6ZljkYQN6ZljlYQN6ZljmYQN6Zlj0YQR6Zlj1YQR6Zlj2YQN6Zlj3YQN6Zlj4YQN6Zlj5YQN6ZljkZPjjBwZfZGRfZQbmYQRlYQN6ZljkZljjBwZfZGDfZQbmYQR1YQN6ZljkAvjkBwZfZGpfZGbmYQR4YQR6ZljkBFjjBwZfZwNfZQbmYQVkYQN6ZljlZvjjBwZfZwZfZGb0YQNfZQb0YQRfZQb0YQVfZQb0YQZfZGb0YQDfZGb0YQHfZQb0YQLfZQb0YQpfZQb0YQtfZQb0YQxfZQb0YQRjYQN6APjkZFjjBwDfZGVfZQb0YQRmYQN6APjkAPjjBwDfZGHfZQb0YQR2YQN6APjkAljjBwDfZGtfZGb0YQR5YQR6APjlZPjjBwDfZwRfZQb0YQVlYQN6APjlZljkBwHfZPjjBwHfZFjjBwHfZvjjBwHfZljkBwHfAPjjBwHfAFjjBwHfAvjjBwHfAljjBwHfBPjjBwHfBFjjBwHfZGNfZQb1YQRkYQN6AFjkZvjjBwHfZGZfZQb1YQR0YQN6AFjkAFjjBwHfZGLfZQb1YQR3YQN6AFjkBPjjBwHfZGxfZGb1YQVjYQN6AFjlZFjjBwHfZwVfZQb1YQVmYQR6AvjjYQN6AvjkYQN6AvjlYQR6AvjmYQR6Avj0YQN6Avj1YQN6Avj2YQN6Avj3YQN6Avj4YQN6Avj5YQN6AvjkZPjjBwLfZGRfZQb2YQRlYQN6AvjkZljjBwLfZGDfZQb2YQR1YQN6AvjkAvjjBwLfZGpfZQb2YQR4YQN6AvjkBFjkBwLfZwNfZGb2YQVkYQN6AvjlZvjjBwLfZwZfZGb3YQNfZQb3YQRfZQb3YQVfZGb3YQZfZGb3YQDfZQb3YQHfZQb3YQLfZQb3YQpfZQb3YQtfZQb3YQxfZQb3YQRjYQN6AljkZFjjBwpfZGVfZQb3YQRmYQN6AljkAPjjBwpfZGHfZQb3YQR2YQN6AljkAljjBwpfZGtfZQb3YQR5YQR6AljlZPjkBwpfZwRfZQb3YQVlYQN6AljlZljkBwtfZPjjBwtfZFjjBwtfZvjkBwtfZljkBwtfAPjjBwtfAFjjBwtfAvjjBwtfAljjBwtfBPjjBwtfBFjjBwtfZGNfZQb4YQRkYQN6BPjkZvjjBwtfZGZfZQb4YQR0YQN6BPjkAFjjBwtfZGLfZQb4YQR3YQN6BPjkBPjjBwtfZGxfZGb4YQVjYQR6BPjlZFjjBwtfZwVfZQb4YQVmYQR6BFjjYQN6BFjkYQN6BFjlYQR6BFjmYQR6BFj0YQN6BFj1YQN6BFj2YQN6BFj3YQN6BFj4YQN6BFj5YQN6BFjkZPjjBwxfZGRfZQb5YQRlYQN6BFjkZljjBwxfZGDfZQb5YQR1YQN6BFjkAvjjBwxfZGpfZQb5YQR4YQN6BFjkBFjkBwxfZwNfZGb5YQVkYQN6BFjlZvjjBwxfZwZfZGbkZPjjYQN6ZGNfZFjjBwRjYQVfZQbkZPjmYQR6ZGNfAPjkBwRjYQHfZQbkZPj2YQN6ZGNfAljjBwRjYQtfZQbkZPj5YQN6ZGNfZGNfZQbkZPjkZFjjBwRjYQRlYQN6ZGNfZGZfZQbkZPjkAPjjBwRjYQR1YQN6ZGNfZGLfZQbkZPjkAljjBwRjYQR4YQR6ZGNfZGxfZGbkZPjlZPjjBwRjYQVkYQN6ZGNfZwVfZQbkZPjlZljkBwRkYQNfZQbkZFjkYQN6ZGRfZvjjBwRkYQZfZQbkZFj0YQR6ZGRfAFjkBwRkYQLfZGbkZFj3YQN6ZGRfBPjjBwRkYQxfZQbkZFjkZPjjBwRkYQRkYQN6ZGRfZGVfZQbkZFjkZljjBwRkYQR0YQN6ZGRfZGHfZQbkZFjkAvjkBwRkYQR3YQR6ZGRfZGtfZGbkZFjkBFjjBwRkYQVjYQN6ZGRfZwRfZQbkZFjlZvjjBwRkYQVmYQR6ZGVfZPjjBwRlYQRfZQbkZvjlYQN6ZGVfZljjBwRlYQDfZQbkZvj1YQR6ZGVfAvjkBwRlYQpfZGbkZvj4YQR6ZGVfBFjkBwRlYQRjYQR6ZGVfZGRfZGbkZvjkZvjkBwRlYQRmYQR6ZGVfZGDfZGbkZvjkAFjkBwRlYQR2YQR6ZGVfZGpfZGbkZvjkBPjjBwRlYQR5YQN6ZGVfZwNfZQbkZvjlZFjjBwRlYQVlYQN6ZGVfZwZfZGbkZljjYQN6ZGZfZFjjBwRmYQVfZQbkZljmYQN6ZGZfAPjjBwRmYQHfZQbkZlj2YQN6ZGZfAljjBwRmYQtfZGbkZlj5YQR6ZGZfZGNfZGbkZljkZFjkBwRmYQRlYQR6ZGZfZGZfZGbkZljkAPjkBwRmYQR1YQN6ZGZfZGLfZQbkZljkAljjBwRmYQR4YQN6ZGZfZGxfZQbkZljlZPjjBwRmYQVkYQN6ZGZfZwVfZQbkZljlZljkBwR0YQNfZQbkAPjkYQN6ZGDfZvjjBwR0YQZfZQbkAPj0YQN6ZGDfAFjjBwR0YQLfZQbkAPj3YQN6ZGDfBPjjBwR0YQxfZQbkAPjkZPjjBwR0YQRkYQN6ZGDfZGVfZQbkAPjkZljjBwR0YQR0YQN6ZGDfZGHfZQbkAPjkAvjjBwR0YQR3YQN6ZGDfZGtfZQbkAPjkBFjjBwR0YQVjYQN6ZGDfZwRfZQbkAPjlZvjjBwR0YQVmYQR6ZGHfZPjkBwR1YQRfZGbkAFjlYQR6ZGHfZljkBwR1YQDfZGbkAFj1YQR6ZGHfAvjkBwR1YQpfZGbkAFj4YQR6ZGHfBFjkBwR1YQRjYQR6ZGHfZGRfZGbkAFjkZvjkBwR1YQRmYQR6ZGHfZGDfZGbkAFjkAFjkBwR1YQR2YQR6ZGHfZGpfZGbkAFjkBPjkBwR1YQR5YQR6ZGHfZwNfZGbkAFjlZFjkBwR1YQVlYQR6ZGHfZwZfZD==
* Datamap del número 7:
A0N6ZPjjYQN6ZPjkYQN6ZPjlYQN6ZPjmYQN6ZPj0YQN6ZPj1YQN6ZPj2YQN6ZPj3YQN6ZPj4YQN6ZPj5YQN6ZPjkZPjjBwNfZGRfZQbjYQRlYQN6ZPjkZljjBwNfZGDfZQbjYQR1YQN6ZPjkAvjjBwNfZGpfZQbjYQR4YQN6ZPjkBFjjBwNfZwNfZQbjYQVkYQN6ZPjlZvjkBwRfZPjjBwRfZFjjBwRfZvjkBwRfZljkBwRfAPjjBwRfAFjjBwRfAvjjBwRfAljjBwRfBPjjBwRfBFjjBwRfZGNfZQbkYQRkYQN6ZFjkZvjjBwRfZGZfZQbkYQR0YQN6ZFjkAFjjBwRfZGLfZQbkYQR3YQN6ZFjkBPjjBwRfZGxfZQbkYQVjYQN6ZFjlZFjjBwRfZwVfZGblYQNfZQblYQRfZQblYQVfZGblYQZfZGblYQDfZQblYQHfZQblYQLfZQblYQpfZQblYQtfZQblYQxfZQblYQRjYQN6ZvjkZFjjBwVfZGVfZQblYQRmYQN6ZvjkAPjjBwVfZGHfZQblYQR2YQN6ZvjkAljjBwVfZGtfZQblYQR5YQN6ZvjlZPjjBwVfZwRfZQblYQVlYQR6ZljjYQN6ZljkYQN6ZljlYQR6ZljmYQR6Zlj0YQN6Zlj1YQN6Zlj2YQN6Zlj3YQN6Zlj4YQN6Zlj5YQN6ZljkZPjjBwZfZGRfZQbmYQRlYQN6ZljkZljjBwZfZGDfZQbmYQR1YQN6ZljkAvjjBwZfZGpfZQbmYQR4YQN6ZljkBFjjBwZfZwNfZQbmYQVkYQN6ZljlZvjkBwDfZPjjBwDfZFjjBwDfZvjkBwDfZljkBwDfAPjjBwDfAFjjBwDfAvjjBwDfAljjBwDfBPjjBwDfBFjjBwDfZGNfZQb0YQRkYQN6APjkZvjjBwDfZGZfZQb0YQR0YQN6APjkAFjjBwDfZGLfZQb0YQR3YQN6APjkBPjjBwDfZGxfZQb0YQVjYQN6APjlZFjjBwDfZwVfZGb1YQNfZQb1YQRfZQb1YQVfZGb1YQZfZGb1YQDfZQb1YQHfZQb1YQLfZQb1YQpfZQb1YQtfZQb1YQxfZQb1YQRjYQN6AFjkZFjjBwHfZGVfZQb1YQRmYQN6AFjkAPjjBwHfZGHfZQb1YQR2YQN6AFjkAljjBwHfZGtfZQb1YQR5YQR6AFjlZPjkBwHfZwRfZQb1YQVlYQR6AvjjYQN6AvjkYQN6AvjlYQR6AvjmYQR6Avj0YQN6Avj1YQN6Avj2YQN6Avj3YQN6Avj4YQN6Avj5YQN6AvjkZPjjBwLfZGRfZQb2YQRlYQN6AvjkZljjBwLfZGDfZQb2YQR1YQN6AvjkAvjkBwLfZGpfZGb2YQR4YQR6AvjkBFjjBwLfZwNfZQb2YQVkYQN6AvjlZvjkBwpfZPjjBwpfZFjjBwpfZvjkBwpfZljkBwpfAPjjBwpfAFjjBwpfAvjjBwpfAljjBwpfBPjjBwpfBFjjBwpfZGNfZQb3YQRkYQN6AljkZvjjBwpfZGZfZQb3YQR0YQR6AljkAFjkBwpfZGLfZGb3YQR3YQN6AljkBPjjBwpfZGxfZQb3YQVjYQN6AljlZFjjBwpfZwVfZGb4YQNfZQb4YQRfZQb4YQVfZGb4YQZfZGb4YQDfZQb4YQHfZQb4YQLfZQb4YQpfZQb4YQtfZQb4YQxfZQb4YQRjYQN6BPjkZFjjBwtfZGVfZGb4YQRmYQR6BPjkAPjkBwtfZGHfZQb4YQR2YQN6BPjkAljjBwtfZGtfZQb4YQR5YQN6BPjlZPjjBwtfZwRfZQb4YQVlYQR6BFjjYQN6BFjkYQN6BFjlYQR6BFjmYQR6BFj0YQN6BFj1YQN6BFj2YQN6BFj3YQN6BFj4YQN6BFj5YQR6BFjkZPjkBwxfZGRfZGb5YQRlYQR6BFjkZljjBwxfZGDfZQb5YQR1YQN6BFjkAvjjBwxfZGpfZQb5YQR4YQN6BFjkBFjjBwxfZwNfZQb5YQVkYQN6BFjlZvjkBwRjYQNfZQbkZPjkYQN6ZGNfZvjkBwRjYQZfZGbkZPj0YQN6ZGNfAFjjBwRjYQLfZQbkZPj3YQR6ZGNfBPjkBwRjYQxfZGbkZPjkZPjkBwRjYQRkYQN6ZGNfZGVfZQbkZPjkZljjBwRjYQR0YQN6ZGNfZGHfZQbkZPjkAvjjBwRjYQR3YQN6ZGNfZGtfZQbkZPjkBFjjBwRjYQVjYQN6ZGNfZwRfZQbkZPjlZvjkBwRkYQNfZQbkZFjkYQN6ZGRfZvjkBwRkYQZfZGbkZFj0YQN6ZGRfAFjkBwRkYQLfZGbkZFj3YQR6ZGRfBPjjBwRkYQxfZQbkZFjkZPjjBwRkYQRkYQN6ZGRfZGVfZQbkZFjkZljjBwRkYQR0YQN6ZGRfZGHfZQbkZFjkAvjjBwRkYQR3YQN6ZGRfZGtfZQbkZFjkBFjjBwRkYQVjYQN6ZGRfZwRfZQbkZFjlZvjkBwRlYQNfZQbkZvjkYQN6ZGVfZvjkBwRlYQZfZGbkZvj0YQR6ZGVfAFjkBwRlYQLfZQbkZvj3YQN6ZGVfBPjjBwRlYQxfZQbkZvjkZPjjBwRlYQRkYQN6ZGVfZGVfZQbkZvjkZljjBwRlYQR0YQN6ZGVfZGHfZQbkZvjkAvjjBwRlYQR3YQN6ZGVfZGtfZQbkZvjkBFjjBwRlYQVjYQN6ZGVfZwRfZQbkZvjlZvjkBwRmYQNfZQbkZljkYQN6ZGZfZvjkBwRmYQZfZGbkZlj0YQN6ZGZfAFjjBwRmYQLfZQbkZlj3YQN6ZGZfBPjjBwRmYQxfZQbkZljkZPjjBwRmYQRkYQN6ZGZfZGVfZQbkZljkZljjBwRmYQR0YQN6ZGZfZGHfZQbkZljkAvjjBwRmYQR3YQN6ZGZfZGtfZQbkZljkBFjjBwRmYQVjYQN6ZGZfZwRfZQbkZljlZvjkBwR0YQNfZQbkAPjkYQN6ZGDfZvjjBwR0YQZfZQbkAPj0YQN6ZGDfAFjjBwR0YQLfZQbkAPj3YQN6ZGDfBPjjBwR0YQxfZQbkAPjkZPjjBwR0YQRkYQN6ZGDfZGVfZQbkAPjkZljjBwR0YQR0YQN6ZGDfZGHfZQbkAPjkAvjjBwR0YQR3YQN6ZGDfZGtfZQbkAPjkBFjjBwR0YQVjYQN6ZGDfZwRfZQbkAPjlZvjkBwR1YQNfZQbkAFjkYQN6ZGHfZvjjBwR1YQZfZQbkAFj0YQN6ZGHfAFjjBwR1YQLfZQbkAFj3YQN6ZGHfBPjjBwR1YQxfZQbkAFjkZPjjBwR1YQRkYQN6ZGHfZGVfZQbkAFjkZljjBwR1YQR0YQN6ZGHfZGHfZQbkAFjkAvjjBwR1YQR3YQN6ZGHfZGtfZQbkAFjkBFjjBwR1YQVjYQN6ZGHfZwRfZQbkAFjlZvjkBwR2YQNfZGbkAvjkYQR6ZGLfZvjkBwR2YQZfZGbkAvj0YQR6ZGLfAFjkBwR2YQLfZGbkAvj3YQR6ZGLfBPjkBwR2YQxfZGbkAvjkZPjkBwR2YQRkYQR6ZGLfZGVfZGbkAvjkZljkBwR2YQR0YQR6ZGLfZGHfZGbkAvjkAvjkBwR2YQR3YQR6ZGLfZGtfZGbkAvjkBFjkBwR2YQVjYQR6ZGLfZwRfZGbkAvjlZvjk
Obvio que como ven en el codigo, se desencriptan con la función
base64_decode y se guardan en una variable. La imagen del captcha es la siguiente:
Espero que me puedan ayudar
Muchas gracias !