我们今天以破解世界上最流行的WordPress验证码插件为例。

每个人都很讨厌验证码吧?这些烦人的小照片里有很多文本信息,只有输入它们后才能访问网站。人们设计验证码系统的初衷是为了验证访问网站的用户是一个真实的人。但随着深度学习和计算机视觉技术的进步,我们很容易就能打败这些验证码系统。(除非你遇到 12306 那种骚骚的图片识别验证,有时真的会陷入绝望)


Adrian 没有访问网站生成验证码照片的工具的源代码,所以为了破解验证码,他必须下载几百个示例图像,然后手动用它们训练自己创建的机器学习系统。
但如果我们想破解一个我们能访问源代码的开源验证码系统呢?
然后到 WordPress 的插件注册网站上搜了一下“captcha”,第一条搜索结果是“Really Simple CAPTCHA”,有超过1百万的活动安装量:
最棒的是它提供了源代码。因为我们能获取生成验证码的源代码,那破解它就比较容易了。我们可以再提高点难度,变得更有挑战性一点,比如在限定时间内完成破解。
我们能在15分钟内完全破解这个验证码系统吗?试试看!

特此声明:这么做完全没有批评“Really Simple CAPTCHA”插件及其作者的意思。插件作者自己也曾说过这款插件已经不是很安全了,建议换用其它插件。因此这纯属一次好玩的快速技术挑战。不过,如果你也是这款插件的用户,或许你真的该换其它的了。
挑战开始
在“发动进攻”前,我们先看看“Really Simple CAPTCHA”能生成什么样的验证码照片。在演示网站上,我们看到这样:
OK,那么验证码似乎是4个字母和数字的组合形式。我们在PHP源代码中验证一下:
public function __construct() {
/* Characters available in images */
$this->chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
/* Length of a word in an image */
$this->char_length = 4;
/* Array of fonts. Randomly picked up per character */
$this->fonts = array(
dirname( __FILE__ )