Advertising

review www.do11warnet.blogspot.com on alexa.com

Tuesday, February 7, 2012

Simple OCR ( Optical character recognition ) Breaker


Oke....

Today i'll share what i have..

this is a code to make u can read a Simple Captcha.

this help me to post my site to make backlink and make my Page Rank in google search up.

Here is the class code..

Sorry for function name i used indonesian language.


error_reporting(E_ALL);

  class OCRbreaker {

    function read($data) {
        $orig  = imagecreatefromstring($data);
        $letter_num = 2;

        $pos = array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","x","w","y","z");
        $code = '';
        $lbl = "";
        $hasil = array();
        foreach ($pos as $p1) {
                foreach ($pos as $p2) {
                        $lbl = $p1.$p2;
                        $gbr = $this->gambar($lbl);
                        $skor = $this->beda($orig, $gbr);
                        $hasil[$lbl] = $skor;
                }
        }
        asort($hasil);
        foreach ($hasil as $k=>$v) { $kode = $k; break; }
        return $kode;
  }

  function ketengah($image, $image_width, $string, $font_size, $y, $color) {
        $text_width = imagefontwidth($font_size)*strlen($string);
        $center = ceil($image_width / 2);
        $x = $center - (ceil($text_width/2));
        ImageString($image, $font_size, $x, $y, $string, $color);
  }
 
  function gambar($teks) {
        $width = 30;
        $height = 20;

        $image = ImageCreate($width, $height);
        $black = ImageColorAllocate($image, 0, 0, 0);
        $white = ImageColorAllocate($image, 255, 255, 255);
        $grey = ImageColorAllocate($image, 200, 200, 200);
        ImageFill($image, 0, 0, $white);
        $this->ketengah($image, $width, $teks, 3, 3, $black);
        ImageRectangle($image,0,0,$width-1,$height-1,$grey);
        return $image;
  }
 
  function gambar_canvas($teks) {
        $img = $this->gambar($teks);
        header("Content-Type: image/jpeg");
        ImageJpeg($img);
        ImageDestroy($img);
  }

  function beda($i1, $i2) {
        $sx1 = imagesx($i1);
        $sy1 = imagesy($i1);

        if ($sx1 !== imagesx($i2) || $sy1 !== imagesy($i2)) {
            return 100;
        }

        $diffi = imagecreatetruecolor($sx1, $sy1);
        $green = imagecolorallocate($diffi, 0, 255, 0);
        imagefill($diffi, 0, 0, imagecolorallocate($diffi, 0, 0, 0));

        $different_pixels = 0;

        for ($x = 0; $x < $sx1; $x++) {
            for ($y = 0; $y < $sy1; $y++) {

                $rgb1 = imagecolorat($i1, $x, $y);
                $pix1 = imagecolorsforindex($i1, $rgb1);

                $rgb2 = imagecolorat($i2, $x, $y);
                $pix2 = imagecolorsforindex($i2, $rgb2);

                if ($pix1 !== $pix2) {
                    $different_pixels++;
                    imagesetpixel($diffi, $x, $y, $green);
                }

            }
        }

        if (!$different_pixels) {
            return 0;
        } else {
            $total = $sx1 * $sy1;
            return number_format(100 * $different_pixels / $total, 2);
        }
  }
} ?>


Hope it usefull for all of you..

if it help, please give thank

No comments:

Post a Comment

Your Comment