用谷歌的矛,攻破谷歌的盾!

程序员的那些事 Python开发者 今天

(给Python开发者加星标,提升Python技能


转自:程序员的那些事(ID:iProgrammer)


1 月 5 日,GitHub 趋势榜中排第二的开源项目是一个用 Python 实现的 uncaptcha2,它是最近美国马里兰州大学 CS 系的几位研究员一起公开的。该项目宣称,攻破(当前最新版的ReCaptcha 的准确率达到了 91%。



ReCaptcha 是什么东西?


对 IT 圈的大多数人来说,ReCaptcha 应该不陌生,它是一种防机器验证机制。ReCaptcha 起初是由卡耐基梅隆大学(CMU)设计,将 OCR(光学自动识别)软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片。那些网站的用户在正确识别出这些特定字符之后,其答案便会被传回 CMU。这样一来既起到了验证码的效果,又可以帮助进行古籍的数字化工作(可以称为人肉 OCR)。



2009 年 Google 收购了 ReCaptcha。Google 让 ReCaptcha 里显示谷歌街景的图片。这样经常会从街景里提取如街道名称、交通标志、门牌号等数据。


2012 年一个谷歌研究团队几乎百分之百破解了 ReCaptcha 系统。于是谷歌在 ReCaptcha 当中加入了语音和图像验证的方式。不过这种综合验证方式,如今又受到了挑战。

uncaptcha2 是什么东西?


从 uncaptcha2 的名字就知道是做什么的了。2017 年 4 月,马里兰州大学那几位研究员发布了 uncaptcha,当时攻破 ReCaptcha 语音验证的准确率达到了 85%。


uncaptcha2 的机制


简单来说,


1. 访问有 ReCaptcha 验证码的网站;

2. 选择语音验证;

3. 下载语音验证的相应音频文件;

4. 用谷歌的 Speech-to-Text API,把音频转成文本(当然也可以用其他厂的同类 API)

5. 解析返回来的文本,然后在文本框输入;

6. 点击「提交」按钮,然后确认是否成功;


准确率超高的 Speech-to-Text

在谷歌 Speech-to-Text 的主页,程序员的那些事看到了这几个宣传语:

利用机器学习技术将语音转换为文本,无论音频长短都没有问题。


运用最先进的深度学习神经网络算法来分析音频,获得准确性无与伦比的语音识别结果。随着 Google 不断改进其产品所用的内部语音识别技术,Cloud Speech-to-Text 的准确性会逐步提高。



用谷歌牛逼的 Speech-to-Text ,来攻破谷歌牛逼的 ReCaptcha。这操作,真是 666!


不要拿 uncaptcha2 干坏事咯


在 uncaptcha2 主页,有句特别提醒:


https://github.com/ecthros/uncaptcha2


⚠️ This code works on the most recent version of ReCaptcha. Only use on sites you control for educational purposes. ⚠️

本项目代码可适用大多数版本的 ReCaptcha。仅供你自控站点做研究目的使用!!!


2018 年 6 月,马里兰州大学的那些研究员联系了谷歌 ReCaptcha 团队。此后不久,他们还演示了这种攻击的完整功能版本。


研究员们披露之后又等待了 6 个月,以便给 ReCaptcha 团队时间来升级。ReCaptcha 团队知道这个攻击方法,尽管 uncaptcha2 目前的成功率很高,但 ReCaptcha 团队已经确认他们可以接受马里兰州大学研究员公布 uncaptcha2 的代码。


这个攻击方法被认为超出了谷歌 Bug 悬赏计划的范围。要不然,uncaptcha2 的研究员们可以拿到一笔悬赏金的。