<?php

echo '<body bgcolor="#aaa"><pre>';
captcha();
echo '</pre>';

function captcha() {
    $captcha_random = captcha_random_string();
    $captcha_glyphs = captcha_alpha_numeric();
    $captcha_inject = '01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%&?@';

    for ($i = 0; $i < 7; $i++) {
        for ($c = 0; $c < strlen($captcha_random); $c++) {
            $char = $captcha_random[$c];
            $char = $captcha_glyphs[$char];
            $char = $char[$i];
            $fill = array();
            for ($n = 0; $n < strlen($char); $n++) {
                $x = $char[$n];
                $r = $captcha_inject[rand(0, strlen($captcha_inject) - 1)];
                $hi_r = 16+rand()%50;
                $hi_g = 16+rand()%50;
                $hi_b = 16+rand()%50;
                $lo_r = 200+rand()%50;
                $lo_g = 200+rand()%50;
                $lo_b = 200+rand()%50;
                $hi = sprintf("%x%x%x", $hi_r, $hi_g, $hi_b);
                $lo = sprintf("%x%x%x", $lo_r, $lo_g, $lo_b);
                if ($x == '#') {
                    $x = "<font color=$hi><b>$r</b></font>";
                }
                else {
                    $x = "<font color=$lo><b>$r</b></font>";
                }
                $fill[] = $x;
            }
            echo implode($fill);
        }
        echo "\n";
    }
}

function captcha_random_string($length = 10) {

    $alphanumeric = '1457ACEFHIJKLMNPRTUVWXYZ';
    $randomstring = array();

    for ($i = $length; $i > 0; $i--) {
        $n = rand(0, 23);
        $randomstring[] = $alphanumeric[$n];
    }

    return implode($randomstring);

}

function captcha_alpha_numeric() {

    $alphanumeric = array(
        '1' => array(
            "   #    ",
            "  ##    ",
            " # #    ",
            "   #    ",
            "   #    ",
            "   #    ",
            " #####  ",
        ),
        '4' => array(
            "#       ",
            "#    #  ",
            "#    #  ",
            "#    #  ",
            "####### ",
            "     #  ",
            "     #  ",
        ),
        '5' => array(
            "####### ",
            "#       ",
            "#       ",
            "######  ",
            "      # ",
            "#     # ",
            " #####  ",
        ),
        '7' => array(
            "####### ",
            "#    #  ",
            "    #   ",
            "   #    ",
            "  #     ",
            "  #     ",
            "  #     ",
        ),
        'A' => array(
            "   #    ",
            "  # #   ",
            " #   #  ",
            "#     # ",
            "####### ",
            "#     # ",
            "#     # ",
        ),
        'C' => array(
            " #####  ",
            "#     # ",
            "#       ",
            "#       ",
            "#       ",
            "#     # ",
            " #####  ",
        ),
        'E' => array(
            "####### ",
            "#       ",
            "#       ",
            "#####   ",
            "#       ",
            "#       ",
            "####### ",
        ),
        'F' => array(
            "####### ",
            "#       ",
            "#       ",
            "#####   ",
            "#       ",
            "#       ",
            "#       ",
        ),
        'H' => array(
            "#     # ",
            "#     # ",
            "#     # ",
            "####### ",
            "#     # ",
            "#     # ",
            "#     # ",
        ),
        'I' => array(
            "###     ",
            " #      ",
            " #      ",
            " #      ",
            " #      ",
            " #      ",
            "###     ",
        ),
        'J' => array(
            "      # ",
            "      # ",
            "      # ",
            "      # ",
            "#     # ",
            "#     # ",
            " #####  ",
        ),
        'K' => array(
            "#    #  ",
            "#   #   ",
            "#  #    ",
            "###     ",
            "#  #    ",
            "#   #   ",
            "#    #  ",
        ),
        'L' => array(
            "#       ",
            "#       ",
            "#       ",
            "#       ",
            "#       ",
            "#       ",
            "####### ",
        ),
        'M' => array(
            "#     # ",
            "##   ## ",
            "# # # # ",
            "#  #  # ",
            "#     # ",
            "#     # ",
            "#     # ",
        ),
        'N' => array(
            "#     # ",
            "##    # ",
            "# #   # ",
            "#  #  # ",
            "#   # # ",
            "#    ## ",
            "#     # ",
        ),
        'P' => array(
            "######  ",
            "#     # ",
            "#     # ",
            "######  ",
            "#       ",
            "#       ",
            "#       ",
        ),
        'R' => array(
            "######  ",
            "#     # ",
            "#     # ",
            "######  ",
            "#   #   ",
            "#    #  ",
            "#     # ",
        ),
        'T' => array(
            "####### ",
            "   #    ",
            "   #    ",
            "   #    ",
            "   #    ",
            "   #    ",
            "   #    ",
        ),
        'U' => array(
            "#     # ",
            "#     # ",
            "#     # ",
            "#     # ",
            "#     # ",
            "#     # ",
            " #####  ",
        ),
        'V' => array(
            "#     # ",
            "#     # ",
            "#     # ",
            "#     # ",
            " #   #  ",
            "  # #   ",
            "   #    ",
        ),
        'W' => array(
            "#     # ",
            "#  #  # ",
            "#  #  # ",
            "#  #  # ",
            "#  #  # ",
            "#  #  # ",
            " ## ##  ",
        ),
        'X' => array(
            "#     # ",
            " #   #  ",
            "  # #   ",
            "   #    ",
            "  # #   ",
            " #   #  ",
            "#     # ",
        ),
        'Y' => array(
            "#     # ",
            " #   #  ",
            "  # #   ",
            "   #    ",
            "   #    ",
            "   #    ",
            "   #    ",
        ),
        'Z' => array(
            "####### ",
            "     #  ",
            "    #   ",
            "   #    ",
            "  #     ",
            " #      ",
            "####### ",
        ),
    );

    return $alphanumeric;

}
  • Harald
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

    раз-два-три, спуфингокапча поломайся! $ ffmpeg -i fsa9i5.png -vf “avgblur=sizeX=8,edgedetect=high=0.5:low=0.1:mode=colormix” -f mjpeg - | tesseract stdin stdout --psm 8 -l eng

    LTNUXTALKS) ну почти, I упорно за T принимает, надо подкрутить параметры где-то, дальше лень было