1
miyuki 2014-10-12 18:28:50 +08:00 via Android
v2ex找po主
|
2
bigtan 2014-10-12 20:01:59 +08:00 1
我去黑他们员工去,楼主简直不能再赞。
|
3
Iblard 2014-10-12 20:09:02 +08:00 via iPad
Nice Job.
|
4
vipdomain 2014-10-12 20:18:33 +08:00
niubi
|
5
14 2014-10-12 20:23:37 +08:00
干得漂亮!
|
6
belin520 2014-10-12 20:24:32 +08:00
极验证会不会因为你这个脚本玩完呢?哈哈!
|
7
shiny 2014-10-12 20:26:36 +08:00
记得极验验证的人在知乎信誓旦旦用一堆概念说破解不了。
|
10
zzlettle 2014-10-12 21:11:42 +08:00
楼主要端了极验证的技术核心壁垒。
哈哈 看楼主的分析,这种简单的验证一般都不可能靠谱。 一定要配合网站的后端搞出比如汉字这样的复杂验证码才是解决办法。验证码要你手动输入汉字,才是真正的破解无门我觉得。 |
11
procen424 OP @zzlettle 是的。写一个reCAPTCHA的bypass算法就要比极验的难很多很多,更何况复杂的汉字了。
貌似极验已经发现了这个帖子,浏览器端的js库神速更新了。 反应非常迅速积极,这点需要赞一个。 |
12
zzlettle 2014-10-12 21:54:06 +08:00
他们核心的东西不改变,就修改了个JS库是没用的。
就是要搞成汉字这样的,否则什么都没用。 |
13
Wy4q3489O1z996QO 2014-10-12 21:56:22 +08:00
挡不住人肉验证的码都不是好码
|
15
Mihuwa 2014-10-12 22:18:52 +08:00
膜拜楼主。
|
16
Gauin 2014-10-12 23:18:48 +08:00
我去豆瓣体验过拖动验证 确实感觉不靠谱。。。
给楼主点赞 验证码的作用是区别人和机器,防止机器恶意注册。楼主的脚本证明了技术也是可以破解发现漏洞的。 极验证,这样的验证方式,感觉是方便了用户,不用输入较难识别的数字或者文字,但却本末倒置了,如果机器能破解这样的验证方式,就玩完了。 |
17
bigtan 2014-10-12 23:42:44 +08:00 1
@procen424 据我跟他们工作人员沟通,据说已经封了;可以测试一下。然后他们的系统是Python开发的,在武汉这个地界上用Python的真是极少。
|
18
procen424 OP @bigtan 是的,旧脚本已经不能用了。极验在本地端改了一个函数,服务器端加入user-agent校验。新脚本通过率与正确率重回99%+。
感觉要发展成拉锯战了。。。 |
19
procen424 OP @Gauin 事实证明,和传统文字验证码相比,机器非常容易通过极验的验证。而且,最令人震惊的是,只需要很简单的算法和极低的计算代价就能达到接近100%的通过率。
目前,他们的封禁处理仅仅是改个js代码里的计算式、后端加入ua检查。如果以后仍是这样的对策,而不改进核心的模式识别算法的话,前途非常堪忧。 |
20
est 2014-10-13 08:45:28 +08:00
极验证思路是对的,但是方式不够狠。直接服务器判定各种资源请求先后以及参数正确性,少一个直接封IP。
|
21
procen424 OP @est 嗯。开始写脚本时还有这个顾虑呢,后来发现,我在得到challenge后就马上提交一个response,总耗时在500ms内,但response的数据号称是1500ms时完成滑动的,居然TMD都可以!笑死我了。。。
|
22
mornlight 2014-10-13 09:00:43 +08:00
我猜极验的程序员已哭晕在厕所...
|
23
kisshere 2014-10-13 09:03:29 +08:00 via Android
话说,客户端修改user-agent不是分分钟的事么,极限验证这种做法我就觉得不靠谱
|
26
vuser 2014-10-13 09:22:20 +08:00
“哪一列像素上开始发生较大变化那就是xpos”
极验改改这里呢 |
29
sunocean 2014-10-13 09:39:41 +08:00
@ procen424 你就不能周一再公布吗?你让人家程序员大周末晚上还得加班。程序员何苦为难程序员啊,极验的程序员估计已经哭晕在厕所。
|
31
hewigovens 2014-10-13 09:53:03 +08:00
刚试了下, 已经各种forbidden了
|
32
procen424 OP @vuser 在CAPTCHA图像上,极验未来的对策可能会有这些:1.取消fullbg;2.bg中加扰;3.动态bg,每张背景都不一样;4.多个slice阴影
解决方案: A.寻找bg中灰度较大较一致、亮度较低的区域(已试验过此方法,与目前的朴素算法相比,误差为±3,但有个别图像不能正确识别) B.基于轮廓的形状匹配算法 C.神经网络 长远来看,精心调教过的B方案,应该是极好的,能应付不是特别变态的变化。 C方案完全不懂,只是猜测。正好借这个机会学习一下。 |
33
procen424 OP @hewigovens 现在又加入referer的检测了
|
36
bigtan 2014-10-13 10:03:46 +08:00 via Android
更加严苛的算法验证带来的好处是更小可能性的二类错误,但是同时也会提高一类错误的可能性。
|
37
tonyup 2014-10-13 10:06:59 +08:00
本来拼图这活是需要人脑识别的,但把完整图片 fullbg 也传回客户端,这事再让机器干就容易多了。
|
38
procen424 OP @kisshere 伪造很容易。完全可以收集一些user-agent的模式,然后随机填版本号。至于referer,只有固定的那么几个。
|
39
procen424 OP @tonyup 完全不解他们这么做的用意
即便不传fullbg,如果每张bg的背景不发生变化,运气好只要两次就能拼出fullbg。 |
40
wangleineo 2014-10-13 10:17:55 +08:00 3
赞楼主一个,这就是极客!
验证码校验是两个动作,识别+输入,现在的验证码之所以让人讨厌,主要的问题不是识别,而是输入太麻烦(现在有中英文数字混杂的校验码,还要切换输入法啊喂)。极验验证的确降低了输入的难度,但是同时也大大降低了机器识别的难度:图片什么的都是障眼法,其实原理上就是:在这条白线上有个黑点,请把鼠标拖动到黑点上,程序比比像素就能实现;关于行为的部分,我实在想不出除了鼠标移动速度不均匀之外,还能有什么特征,楼主的程序用随机数和正弦曲线就搞定了。 现在问题来了:怎样在降低输入难度的前提下,不降低识别难度? 我有个想法。图像识别在很大程度上还是机器很难解决的问题,可以用一个不规则形状的小图片覆盖在原图的随机位置上(在服务器端渲染),要求用户点击这个小图片中的物体。比如:“这个图片中有一只猫,请你点击这只猫“,对于用户来说,识别和输入都不难,但是对于机器来说,在图片中找到一只猫应该还是比较难的(虽然Google的技术已经能做到)。当然如果猫的小图片只有一个,很容易暴力破解(在所有标识猫的图片找相同的像素区域),但是这个猫的图片也可以有很多(各种颜色的猫,甚至机器猫),再加上随机的像素混淆,应该还是难于攻破的。 一开始想的是要求用户把一个滑块拖动到猫的位置,记录坐标轨迹。但想想所谓的”行为特征“如此容易随机生成,感觉没啥价值。还不如直接点击呢。 大家觉得怎么样? |
41
7654 2014-10-13 10:41:37 +08:00
@wangleineo 遇到过这种验证码,图片上有几个文字,需要点亮正确的文字
其实google的那个被认为变态的验证码,不需要全部输入对,允许有错误的。它有两部分,其中一部分是实体影印出来的,用的人越多OCR识别也越高,对图书数字化有帮助 |
42
gkiwi 2014-10-13 10:42:10 +08:00
@wangleineo 想法很好玩,可以是各种猫狗.
问题来了: 物品识别的算法目前已经有不少实现,一般只要人能看出的,机器都能识别出来轮廓,虽然他不晓得这个是什么,匹配下触发点击就好了,根本不需要像字母验证码那样子完全匹配.另外就是出现的东西一定要常见,而且图像中和他类似形状的很少,如果常见的话模式就容易匹配. 准确率说不好. 但这个依然是个好点子. |
43
Showfom 2014-10-13 10:43:32 +08:00 via iPhone
最恶心的还是腾讯微博的拼图验证码
|
44
viaNull 2014-10-13 11:11:23 +08:00
留名学习
|
45
wangleineo 2014-10-13 11:13:37 +08:00
|
46
matrix67 2014-10-13 11:55:59 +08:00 1
@wangleineo reCaptcha更聪明的地方就是拿ocr失败的图来叫人识别,google的ocr已经失败了,所以你要破解reCaptcha相当于和google拼ocr
还有一点就是放两个,提个已经识别的,一个未知的,已知的通过大规模分布式人力验证 |
47
akfish 2014-10-13 12:08:33 +08:00 6
几年前看到过一篇paper,用的是随机旋转的图片做验证码,用户需要把图片调整到正确的姿态。
因为目前没有通用的算法识别出任意图片的”上“方向是什么,对于人类则很简单。 |
48
akfish 2014-10-13 12:12:36 +08:00
|
49
lshero 2014-10-13 12:15:07 +08:00
|
50
hustlzp 2014-10-13 12:33:04 +08:00
LZ甚吊啊!
|
51
procen424 OP @wangleineo 遇见过这样的验证码,体验非常好。验证过程不仅涉及模式的识别,还有推导,这都是机器不擅长做的事,破解难度应该比较大。
|
52
matrix67 2014-10-13 12:34:29 +08:00
|
54
foxsaid 2014-10-13 12:40:57 +08:00
|
55
tzrens 2014-10-13 12:41:04 +08:00
<script>alert('1')</script>
|
58
procen424 OP @lshero 图案部分和其它内容没有重叠,很容易提取出来。既然是面向公众的验证码,要保证每个人都看得懂,图案肯定不会特别多。遍历所有图案,然后人工或者使用第三方资源标记。剩下的就是图形匹配和传统的文字验证码识别问题了,有很多成熟的方案。
下载题库貌似是避免不了。 因为网站没有失败惩罚机制,而且答案空间不大,随机猜测是个可行的办法。 |
60
9999999999999999 2014-10-13 12:51:13 +08:00
楼主敢不敢公布手机号?
|
62
procen424 OP @lshero 或者就一直提交一个固定的答案。比如A,因为每次的正确答案不过是大小写字母+数字中的一个,迟早有一次会碰到A。
这在注册垃圾账号时还能凑合用用,要是跑密码这种场景就太低效了。 当然,前提是验证流程不引入失败惩罚。 |
63
mornlight 2014-10-13 13:00:51 +08:00
@binux 噗,这种暴力啊,我刚才理解成对同一个验证码穷举了。这样的话只能怪网站没有失败惩罚机制吧,流程设计上就已经不完善了。
|
64
wangleineo 2014-10-13 13:15:35 +08:00 1
@procen424 嗯,加上推导就更难了。”什么东西喵喵叫?请在图上点一点“ 哈哈
|
65
panlilu 2014-10-13 13:17:23 +08:00
看到楼主的append,感觉好逗啊哈哈哈哈,Good Job
|
66
sriuu 2014-10-13 13:18:32 +08:00
收藏留名,最喜欢看到这种东西了~ ~
|
70
wangleineo 2014-10-13 13:44:39 +08:00
@akfish 三个作者都是Google的,Google果然在探索人和机器的边界哦
|
72
airyland 2014-10-13 14:14:53 +08:00
cool........
|
73
changsha 2014-10-13 14:22:22 +08:00
hahahah
|
74
est 2014-10-13 14:28:56 +08:00 1
@bigtan 是这个意思。所谓行为判断,就是有一点行为不符合预期,那就是异端。直接给咔嚓。比如命名请求一个html的时候,客户端是支持flash控件,紧跟着后一个,又不支持了,那么直接咔嚓。再比如用cavans探测字体是否安装。就算你用headless browser去完全模拟用户行为,也是能探测出蛛丝马迹的。
|
75
11138 2014-10-13 14:38:01 +08:00
我来总结一下吧:
传统方式的验证码比楼主提及的“基于行为的验证安全技术”的安全性提高144.78倍。 另外,昨天他们都用了什么方式来修复问题这也会让人怀疑他们的技术经验(不评论技术水平)不太足够。 |
76
qiushibaikeHR 2014-10-13 15:02:33 +08:00
糗百需要这样的楼主来上班~
|
78
ichou 2014-10-13 15:12:49 +08:00
感觉好欢乐 极验的盆友这个月奖金估计没有了 哇咔咔~
|
79
matrix67 2014-10-13 16:37:04 +08:00
@lshero 我想出来这个验证码是怎么生成的,搞一个大的key-value对,对应文字-图片,每次生成后台随机取四个文字,与其中一个图片,五个元素组成一张验证码
|
80
gowithwind 2014-10-13 16:41:09 +08:00
@matrix67 破解这个东西感觉还是容易,主要是建立足够大的特征库。
|
82
lshero 2014-10-13 17:46:03 +08:00
|
84
matrix67 2014-10-13 20:32:14 +08:00 1
@lshero 那就得写poc验证了,理论上他设计答案的时候应该36种均匀分布,如果有偏,必然能找到一种破解概率大于 1/36的答案。你的意思在于后台设计已经意识到连续暴力攻击,应该参考关小黑屋策略。
例如草榴社区就不是用验证码来阻挡的,5次错误后锁 ip 15分钟,对于穷举弱密码的攻击者来说,代价就挺大。 再例如,支付宝,5次之后锁密码3小时,但是为了防止有人恶意搞拒绝式服务攻击,他又有短信找回密码的策略,对正常人友好,让攻击者蛋疼。 所以,策略都是可以考虑叠加的,比如验证码加ip。 可以参考 范凯 有一篇反爬虫的博文,里面提到一种移动窗的思想。 没有银弹!! |
85
messyidea 2014-12-01 23:44:25 +08:00
楼主简直不能再赞
|
86
chinafeng 2014-12-23 21:51:37 +08:00
楼主这是极验的?
|
87
imwower 2015-01-07 16:34:12 +08:00
@wangleineo 谷歌最新的noCaptcha就是看图识别猫咪或者其他东西;
基于语义的词语联想,可以作为验证码的一种模式。比如: 问题:橘子又叫什么?给出几个随机字符,随机排列(像《疯狂猜图》那样)然后让用户点击鼠标,选择正确的答案。(正确答案为:桔子) 其他类似的问题:米饭是由什么做成的? 题库可以由其他用户提供;也可以训练人工智能的问答助手等。 |
88
xierch 2015-01-19 20:06:06 +08:00
赞。
刚又看到一家用极验验证的,怎么想都不靠谱。 想来 V2EX 会有讨论,果然不靠谱.. 这种方式还是要积极 fallback 到传统验证码才妥当,就像现在 reCAPTCHA 的门牌号一样 |
89
nanhuo 2015-06-12 10:09:39 +08:00
哈哈,赞一个,我们也用的极验验证。。
|
90
no2oo3 2015-06-15 02:02:14 +08:00
@procen424 最近都在研究极验的验证,正好搜索到你的大作,无奈原文中的go代码https://github.com/procen424/scripts/blob/master/geetest-bypass.go无法下载了,能否传一个给我?感谢
|
91
alilialili 2016-05-31 09:32:25 +08:00
|
92
SingeeKing 2017-01-07 15:52:19 +08:00 via iPhone
我是回来观望的
ps.我怎么记得 append 最多只能有三条 |
93
QUIOA 2020-01-20 22:04:25 +08:00 via Android
你的 github 没了
|