很多网站使用谷歌的验证码系统 reCaptcha 来防止用户使用机器人进行自动操作,比如使用机器人创建账号等。2012 年,一个谷歌研究团队几乎百分百破解了其文本验证码系统。于是,谷歌将验证码升级到了语音和图像,并通过不断迭代加固他们的验证码系统。如果能够找到验证码系统的漏洞,也就等于把千万个网站暴露于攻击之下。
近日,美国马里兰大学的四位研究人员开源了一个叫作 unCaptcha 的工具,用于破解谷歌的语音验证码系统,准确率高达 85%。
谷歌的 reCaptcha 系统使用了一些高级的分析工具来判断一个用户到底是人还是机器人。他们使用了多种元素,包括 cookie、解题的速度、鼠标的移动以及解题的成功率。
unCaptcha 使用浏览器自动化工具(如 Selenium)找到网页上的语音验证码,解析出其中的数字,然后通过程序自动键入验证码,以此来骗过验证码系统。
语音验证码由一组变长的数字读音组成,每个数字的语速、音高也不一样,甚至口音也不一样。为了解析出这些数字,需要先从网页上把语音文件下载下来,然后将解析出来的语音元素发给在线的语音识别服务(比如 IBM、谷歌云、谷歌语音识别、Sphinx、Wit-AI、微软 Bing 语音识别)进行识别。识别之后的结果会被收集起来,组成一串数字,这些数字会自动键入到验证码的输入框,从而通过验证。
unCaptcha 已经在著名的 Reddit 网站上做过实验,并通过了谷歌的语音验证码系统,但为了不影响 Reddit 网站,他们在创建新用户这一步停止了实验。unCaptcha 在识别数字方面的准确率高达 92%,整体语音识别准确率达到了 85%。
该工具托管在 GitHub 上,并提供了安装使用示例。
另外,他们也发表了免责声明。他们开发 unCaptcha 的主要目的是作为概念性验证,而绝非要与谷歌作对。他们还将几个在线语音识别服务提供的 API 秘钥从项目中删除,避免不必要的麻烦。
Reddit 网站上有帖子针对该项目展开热议。有人对该项目所使用的技术手段赞不绝口。也有人开玩笑说,他们利用了第三方的在线语音识别服务,包括谷歌自家的语音识别系统,所以对于谷歌来说,无异于搬石头砸自己的脚。有人认为 85% 的准确率已经超过了他通过点击街景标志来输入验证码的正确率。也有人希望这个项目能够做成浏览器插件,这样就可以更轻松地绕过谷歌的验证码系统。
更多的信息可以参看 unCaptcha 网站或 GitHub 项目主页,更多的 Reddit 讨论可以在这里看到。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论