Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: emma93 en 15 Marzo 2011, 04:48 am



Título: Killer Captcha
Publicado por: emma93 en 15 Marzo 2011, 04:48 am
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:

Código
  1. <?php
  2.  
  3. $archivo = fopen("Letras/ocr/7-bfa262e02131320615905fbb91d32d66-charmap.datamap","r"); //Datamap del número 7
  4. $longitud = filesize("Letras/ocr/7-bfa262e02131320615905fbb91d32d66-charmap.datamap");
  5. $archivo = fread($archivo,$longitud);
  6. $archivo = base64_decode(str_rot13($archivo));
  7. $archivo = explode("@",$archivo);
  8. $archivo = substr($archivo[1], 1, strlen($archivo[1]));
  9. $archivo = explode(":",$archivo);
  10. $width = 24;
  11. $height = 25;
  12. $img = imagecreatefromjpeg("ConfirmHandler.jpg");
  13. imagejpeg($img,"captcha.jpg");
  14. $img = limpia($img);
  15. $imgchar = imagecreate($width,$height);
  16. imagecopy($imgchar,$img,1,1,10,8,20,24);
  17. imagejpeg($imgchar,"chr1.jpg");
  18. $datamap1 = creardatamap($imgchar,"noname");
  19. $datamap1 = explode("@",$datamap1);
  20. $datamap1 = substr($datamap1[1], 1, strlen($datamap1[1]));
  21. $datamap1 = explode(":",$datamap1);
  22. $errores = 0;
  23. for($i=0;$i<count($datamap1);$i++){
  24.    if (($archivo[$i]) != ($datamap1[$i])){$errores++;}
  25. }
  26. echo $errores; //El valor me devuelve 648
  27.  
  28. //////////////////////////////FUNCIONES///////////////////////////////////
  29.  
  30. function learnchar($image,$name){
  31. global $width,$height;
  32. $imagen = crearimagenfile($image);
  33. $datamap = str_rot13(base64_encode(creardatamap($imagen,$name)));
  34. guardar($datamap,$name);
  35. echo "Nueva relacion de memoria creada, aprendiendo de $name <br>";
  36. }
  37.  
  38. function guardar($datamap,$name){
  39. $fl = fopen("Letras/ocr/$name-".md5(time()*rand(1,100))."-charmap.datamap","w+");
  40. fwrite($fl,$datamap);
  41. fclose($fl);
  42. }
  43.  
  44. function iniciarsistema(){
  45. learnchar("Letras/A.jpg","A");
  46. learnchar("Letras/B.jpg","B");
  47. learnchar("Letras/C.jpg","C");
  48. learnchar("Letras/D.jpg","D");
  49. learnchar("Letras/E.jpg","E");
  50. learnchar("Letras/F.jpg","F");
  51. learnchar("Letras/0.jpg","0");
  52. learnchar("Letras/1.jpg","1");
  53. learnchar("Letras/2.jpg","2");
  54. learnchar("Letras/3.jpg","3");
  55. learnchar("Letras/4.jpg","4");
  56. learnchar("Letras/5.jpg","5");
  57. learnchar("Letras/6.jpg","6");
  58. learnchar("Letras/7.jpg","7");
  59. learnchar("Letras/8.jpg","8");
  60. learnchar("Letras/9.jpg","9");
  61. unlink("Letras/A.jpg");
  62. unlink("Letras/B.jpg");
  63. unlink("Letras/C.jpg");
  64. unlink("Letras/D.jpg");
  65. unlink("Letras/E.jpg");
  66. unlink("Letras/F.jpg");
  67. unlink("Letras/0.jpg");
  68. unlink("Letras/1.jpg");
  69. unlink("Letras/2.jpg");
  70. unlink("Letras/3.jpg");
  71. unlink("Letras/4.jpg");
  72. unlink("Letras/5.jpg");
  73. unlink("Letras/6.jpg");
  74. unlink("Letras/7.jpg");
  75. unlink("Letras/8.jpg");
  76. unlink("Letras/9.jpg");
  77. rmdir("Letras");
  78. }
  79.  
  80. function limpia($image){
  81.    $w = imagesx($image);
  82. $h = imagesy($image);
  83. for ($x = 0; $x <= $w; $x++){
  84. for ($i = 0; $i <= $h; $i++){
  85. $rgb = imagecolorat($image, $x, $i);
  86. $r = ($rgb >> 16) & 255;
  87. $g = ($rgb >> 8) & 255;
  88. $b = $rgb & 255;
  89. if (($r > 55) || ($g > 55) || ($b > 55)){
  90. imagesetpixel($image, $x, $i, imagecolorallocate($image, 255, 255, 255));
  91. }else{
  92. imagesetpixel($image, $x, $i, imagecolorallocate($image, 0, 0, 0));
  93. }
  94. }
  95. }
  96. return $image;
  97. }
  98.  
  99. function crearimagenfile($img_file){
  100. global $width,$height;
  101. $img=0;
  102. $img_sz = getimagesize( $img_file );
  103. switch( $img_sz[2] ){
  104. case 1:
  105. $img = ImageCreateFromGif($img_file);
  106. break;
  107. case 2:
  108. $img = ImageCreateFromJpeg($img_file);
  109. break;
  110. case 3:
  111. $img = ImageCreateFromPng($img_file);
  112. break;
  113. }
  114. $width = $img_sz[0];
  115. $height = $img_sz[1];
  116. return $img;
  117. }
  118.  
  119. function creardatamap($image,$name){
  120.    global $width,$height;
  121.    $datamap = $name."@";
  122.    for ($x=0; $x<=$width; $x++){
  123. for ($y=0; $y<=$height; $y++){
  124. $datamap.=":".$x.",".$y.",".pixelcolor($image,$x,$y);
  125. }
  126. }
  127. return $datamap;
  128. }
  129.  
  130. function pixelcolor($im,$x,$y){
  131.    $rgb = imagecolorat($im,$x,$y);
  132.    $r = ($rgb >> 16) & 255;
  133. $g = ($rgb >> 8) & 255;
  134. $b = $rgb & 255;
  135. if (($r > 55) || ($g > 55) || ($b > 55)){
  136. return 0;
  137. }
  138. return 1;
  139. }
  140.  
  141. ?>
  142.  

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:

Citar
ZRN6ZPjjYQN6ZPjkYQN6ZPjlYQN6ZPjmYQN6ZPj0YQN6ZPj1YQN6ZPj2YQN6ZPj3YQN6ZPj4YQN6ZPj5YQN6ZPjkZPjjBwNfZGRfZQbjYQRlYQN6ZPjkZljjBwNfZGDfZQbjYQR1YQN6ZPjkAvjjBwNfZGpfZQbjYQR4YQN6ZPjkBFjjBwNfZwNfZQbjYQVkYQN6ZPjlZvjjBwNfZwZfZGbkYQNfZQbkYQRfZQbkYQVfZQbkYQZfZQbkYQDfZQbkYQHfZQbkYQLfZQbkYQpfZQbkYQtfZGbkYQxfZGbkYQRjYQR6ZFjkZFjkBwRfZGVfZGbkYQRmYQR6ZFjkAPjkBwRfZGHfZQbkYQR2YQN6ZFjkAljjBwRfZGtfZQbkYQR5YQN6ZFjlZPjjBwRfZwRfZQbkYQVlYQN6ZFjlZljkBwVfZPjjBwVfZFjjBwVfZvjjBwVfZljjBwVfAPjjBwVfAFjkBwVfAvjkBwVfAljkBwVfBPjkBwVfBFjkBwVfZGNfZGblYQRkYQR6ZvjkZvjkBwVfZGZfZGblYQR0YQR6ZvjkAFjkBwVfZGLfZGblYQR3YQR6ZvjkBPjjBwVfZGxfZQblYQVjYQN6ZvjlZFjjBwVfZwVfZQblYQVmYQR6ZljjYQN6ZljkYQN6ZljlYQN6ZljmYQN6Zlj0YQR6Zlj1YQR6Zlj2YQN6Zlj3YQN6Zlj4YQN6Zlj5YQN6ZljkZPjjBwZfZGRfZQbmYQRlYQN6ZljkZljjBwZfZGDfZQbmYQR1YQN6ZljkAvjkBwZfZGpfZGbmYQR4YQR6ZljkBFjjBwZfZwNfZQbmYQVkYQN6ZljlZvjjBwZfZwZfZGb0YQNfZQb0YQRfZQb0YQVfZQb0YQZfZGb0YQDfZGb0YQHfZQb0YQLfZQb0YQpfZQb0YQtfZQb0YQxfZQb0YQRjYQN6APjkZFjjBwDfZGVfZQb0YQRmYQN6APjkAPjjBwDfZGHfZQb0YQR2YQN6APjkAljjBwDfZGtfZGb0YQR5YQR6APjlZPjjBwDfZwRfZQb0YQVlYQN6APjlZljkBwHfZPjjBwHfZFjjBwHfZvjjBwHfZljkBwHfAPjjBwHfAFjjBwHfAvjjBwHfAljjBwHfBPjjBwHfBFjjBwHfZGNfZQb1YQRkYQN6AFjkZvjjBwHfZGZfZQb1YQR0YQN6AFjkAFjjBwHfZGLfZQb1YQR3YQN6AFjkBPjjBwHfZGxfZGb1YQVjYQN6AFjlZFjjBwHfZwVfZQb1YQVmYQR6AvjjYQN6AvjkYQN6AvjlYQR6AvjmYQR6Avj0YQN6Avj1YQN6Avj2YQN6Avj3YQN6Avj4YQN6Avj5YQN6AvjkZPjjBwLfZGRfZQb2YQRlYQN6AvjkZljjBwLfZGDfZQb2YQR1YQN6AvjkAvjjBwLfZGpfZQb2YQR4YQN6AvjkBFjkBwLfZwNfZGb2YQVkYQN6AvjlZvjjBwLfZwZfZGb3YQNfZQb3YQRfZQb3YQVfZGb3YQZfZGb3YQDfZQb3YQHfZQb3YQLfZQb3YQpfZQb3YQtfZQb3YQxfZQb3YQRjYQN6AljkZFjjBwpfZGVfZQb3YQRmYQN6AljkAPjjBwpfZGHfZQb3YQR2YQN6AljkAljjBwpfZGtfZQb3YQR5YQR6AljlZPjkBwpfZwRfZQb3YQVlYQN6AljlZljkBwtfZPjjBwtfZFjjBwtfZvjkBwtfZljkBwtfAPjjBwtfAFjjBwtfAvjjBwtfAljjBwtfBPjjBwtfBFjjBwtfZGNfZQb4YQRkYQN6BPjkZvjjBwtfZGZfZQb4YQR0YQN6BPjkAFjjBwtfZGLfZQb4YQR3YQN6BPjkBPjjBwtfZGxfZGb4YQVjYQR6BPjlZFjjBwtfZwVfZQb4YQVmYQR6BFjjYQN6BFjkYQN6BFjlYQR6BFjmYQR6BFj0YQN6BFj1YQN6BFj2YQN6BFj3YQN6BFj4YQN6BFj5YQN6BFjkZPjjBwxfZGRfZQb5YQRlYQN6BFjkZljjBwxfZGDfZQb5YQR1YQN6BFjkAvjjBwxfZGpfZQb5YQR4YQN6BFjkBFjkBwxfZwNfZGb5YQVkYQN6BFjlZvjjBwxfZwZfZGbkZPjjYQN6ZGNfZFjjBwRjYQVfZQbkZPjmYQR6ZGNfAPjkBwRjYQHfZQbkZPj2YQN6ZGNfAljjBwRjYQtfZQbkZPj5YQN6ZGNfZGNfZQbkZPjkZFjjBwRjYQRlYQN6ZGNfZGZfZQbkZPjkAPjjBwRjYQR1YQN6ZGNfZGLfZQbkZPjkAljjBwRjYQR4YQR6ZGNfZGxfZGbkZPjlZPjjBwRjYQVkYQN6ZGNfZwVfZQbkZPjlZljkBwRkYQNfZQbkZFjkYQN6ZGRfZvjjBwRkYQZfZQbkZFj0YQR6ZGRfAFjkBwRkYQLfZGbkZFj3YQN6ZGRfBPjjBwRkYQxfZQbkZFjkZPjjBwRkYQRkYQN6ZGRfZGVfZQbkZFjkZljjBwRkYQR0YQN6ZGRfZGHfZQbkZFjkAvjkBwRkYQR3YQR6ZGRfZGtfZGbkZFjkBFjjBwRkYQVjYQN6ZGRfZwRfZQbkZFjlZvjjBwRkYQVmYQR6ZGVfZPjjBwRlYQRfZQbkZvjlYQN6ZGVfZljjBwRlYQDfZQbkZvj1YQR6ZGVfAvjkBwRlYQpfZGbkZvj4YQR6ZGVfBFjkBwRlYQRjYQR6ZGVfZGRfZGbkZvjkZvjkBwRlYQRmYQR6ZGVfZGDfZGbkZvjkAFjkBwRlYQR2YQR6ZGVfZGpfZGbkZvjkBPjjBwRlYQR5YQN6ZGVfZwNfZQbkZvjlZFjjBwRlYQVlYQN6ZGVfZwZfZGbkZljjYQN6ZGZfZFjjBwRmYQVfZQbkZljmYQN6ZGZfAPjjBwRmYQHfZQbkZlj2YQN6ZGZfAljjBwRmYQtfZGbkZlj5YQR6ZGZfZGNfZGbkZljkZFjkBwRmYQRlYQR6ZGZfZGZfZGbkZljkAPjkBwRmYQR1YQN6ZGZfZGLfZQbkZljkAljjBwRmYQR4YQN6ZGZfZGxfZQbkZljlZPjjBwRmYQVkYQN6ZGZfZwVfZQbkZljlZljkBwR0YQNfZQbkAPjkYQN6ZGDfZvjjBwR0YQZfZQbkAPj0YQN6ZGDfAFjjBwR0YQLfZQbkAPj3YQN6ZGDfBPjjBwR0YQxfZQbkAPjkZPjjBwR0YQRkYQN6ZGDfZGVfZQbkAPjkZljjBwR0YQR0YQN6ZGDfZGHfZQbkAPjkAvjjBwR0YQR3YQN6ZGDfZGtfZQbkAPjkBFjjBwR0YQVjYQN6ZGDfZwRfZQbkAPjlZvjjBwR0YQVmYQR6ZGHfZPjkBwR1YQRfZGbkAFjlYQR6ZGHfZljkBwR1YQDfZGbkAFj1YQR6ZGHfAvjkBwR1YQpfZGbkAFj4YQR6ZGHfBFjkBwR1YQRjYQR6ZGHfZGRfZGbkAFjkZvjkBwR1YQRmYQR6ZGHfZGDfZGbkAFjkAFjkBwR1YQR2YQR6ZGHfZGpfZGbkAFjkBPjkBwR1YQR5YQR6ZGHfZwNfZGbkAFjlZFjkBwR1YQVlYQR6ZGHfZwZfZD==

* Datamap del número 7:

Citar
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:
(http://www.miralaonline.net/images/confirmhan.jpg)

Espero que me puedan ayudar :) Muchas gracias !