captcha (idea)
Return to captcha (idea)
A captcha is challenge response to prove the user is not a computer. It's valuable because it is (supposed to be) easy to read by humans, and difficult to read by computers. But if you're like me, it can typically be harder to solve than a math problem. And although a captcha "captures" your attention because you have to stare at it to read it, they're probably going to be short lived on the web just because of that. Captchas typically come in the form of disfigured randomized letters and/or numbers in a picture image. The idea? Computers can't decipher pictures. Computers only have image recognition software. As an unintended consequence to blind humans is obvious - they're unable to pass the captcha without a sound recording built into it. See also: Optical Character Recognition, mechanical or electronic translation of images - which can be used in programs used to defeat captchas. ⑀ ⑁ ⑂ ⑃ ⑄ ⑅ Captchas come in varying degrees of difficulty. A blog website might use the same captcha (the exact letters or numbers) just to prevent spam. The degree of difficulty can only increase with levels of perturbation or what I would call "wavyness." Then there's also degrees of noise, or background fuzz. Add into that contrast, as well as font differences for each character, and now you understand why they're so freaking hard to read. And I'm sure there other ways to make it harder. The term captcha is based upon the word "capture," and was coined in 2000 as an acronym for "Completely Automated Public Turing test to tell Computers and Humans Apart." Captchas are basically algorithms to increase security of websites or programs through obscurity. They're a necessary evil so to speak, just like locks on your car or house doors. There has to be some mechanism to prevent unwanted intruders. While you might give the key to your house to family and specific friends, you wouldn't give it to a complete stranger. Similarly a captcha gives the key to the website to those it wants, hopefully... users. ___ > ___ _ . __ ______ / ___ \ / ___ \ / | (_____ \ | | + | | | | | | /_/ | ____) ) | | | | | | \ | | | | /_____/ | |___| | + | |___| | | | |______ \ ___ / \ ___ / |_| (_______) This number example doesn't have perturbation, and I wouldn't really call the random characters in it noise. It's still a captcha however, because an image reader or computer protocol could still be thrown off from time to time. For better examples click the rodcorp link (hit Example) it shows image examples outside the realm of ASCII art.
Filling out captchas, to get an account: "The CAPTCHA approach to securing forms is not new - it first appeared in the late 90's for domain name submissions to search engines and the like - but with the exponential growth of scripted exploits it's coming to the fore once again." (Art of Web) Beating a captcha:
Creating a CAPTCHA graphic using PHP <?PHP // Adapted for The Art of Web: www.the-art-of-web.com // Based on PHP code from: php.webmaster-kit.com // Please acknowledge use of this code by including this header. // initialise image with dimensions of 120 x 30 pixels $image = @imagecreatetruecolor(120, 30) or die("Cannot Initialize new GD image stream"); // set background to white and allocate drawing colours $background = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); imagefill($image, 0, 0, $background); $linecolor = imagecolorallocate($image, 0xCC, 0xCC, 0xCC); $textcolor = imagecolorallocate($image, 0x33, 0x33, 0x33); // draw random lines on canvas for($i=0; $i < 6; $i++) { imagesetthickness($image, rand(1,3)); imageline($image, 0, rand(0,30), 120, rand(0,30), $linecolor); } session_start(); // add random digits to canvas $digit = ''; for($x = 15; $x <= 95; $x += 20) { $digit .= ($num = rand(0, 9)); imagechar($image, rand(3, 5), $x, rand(2, 14), $num, $textcolor); } // record digits in session variable $_SESSION'digit' = $digit; // display image and clean up header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?>" (Art of Web) Sources: | Existing:
Non-Existing: |