Monthly Archives: December 2012

Minteye滑动验证码破解方法

这家创业公司的验证码产品在这儿可以体验:http://www.minteye.com/Products.aspx
这个滑动解锁的程序,看起来好玩儿好用。不过,其安全性很有问题,比较简单的方法就能破解这个验证系统。
方法至少有两种:
  1. 遍历滑动位置
  2. 图像处理,计算出正确位置。

方法一:遍历滑动位置

其验证图片url具体如下
http://img2.demo.minteye.com/slider/image.ashx?CaptchaId=&w=300&h=250&dumm=634913072542449735&reqid=AB9596B5-A971-4FFE-87AA-66C643E0ECE7&img=3
http://img1.demo.minteye.com/slider/image.ashx?CaptchaId=&w=300&h=250&dumm=634913072542449735&reqid=AB9596B5-A971-4FFE-87AA-66C643E0ECE7&img=12
其中url中的&img=N就是其各种扭曲程度的图片。
经观察测试,在网页的slider中N的范围是 1~30
但是把负值和和更大的值同样可以,不完全测试 N 在[-21, 39]区间
其后台应该是根据这个值随即生成的扭曲图片,原图+随机的N值,而且N在一定范围偏差内都能通过验证。目前测试到的允许偏差为 1 。 也就是三个值都能通过测试,而其范围总共只有30。按照目前得到的这几个数值,猜测十次就能通过验证。

方法二:图像处理

懂得图像处理的童鞋应该都能看出来破解方法:直线检测
其使用的图片中多含有直线元素,当然也有一小部分是自然场景,没有明显直线。
对于含有直线元素的图片,进行直线检测就可以,一种简单的方法是计算图像中包含的直线总长。
图像处理另外一种方式是进行曲率计算,
根据上面说的,N的取值从 1 到 30 ,可以先把30张不同扭曲程度图片抓下来。
然后计算 N = 1, N =30的曲率,找到跟这两个曲率相同的Na Nb.然后取中间值就可以得到通过验证的N值。比如Na 跟 N1(N =1)曲率相同,那么Nx = (int)(a +1)/2.
选取N = 1 , N =30做为参照的原因是,这两个值得图片曲率最大,比较容易计算。
当然了,如果Nx比较接近 1 或 30, 那么N1 N30 的曲率就不好计算了,不过这也恰巧知道Nx的位置了。
综合一下,写一个破解Minteye滑动验证码的程序应该不存在问题。
有时间的时候我会试试。