验证码破解尝试经历

去年9月份报了驾校,月底过了法培,然后就等教练帮忙约车,因为要约周末的车,一直都没约到。直到今年三月份,等不住了跑去驾校办了个网上约车,可开始还是约不到,那个破网上约车系统一次只允许100人在线,每周六日早上七点从床上爬起来使劲的按F5,连续地刷,可总是竹篮打水一场空。

 

无法忍受,就开始琢磨怎么写个程序自动登录约车系统完成约车。显然,整个关键是登录验证码的破解。只要完成验证码破解,就可以自动发HTTP请求登录,然后通过分析请求回复页面完成网上约车,而且可以定时刷新页面,及时抢约退约的车。

 

有了初步想法,就可是Google+Baidu,尽可能得搜集验证码破解的方法。而验证码的破解方法因为验证码的复杂程度不同也门类众多,甚至是需要图形学方面非常专业的知识,什么噪声、杂色,这对我这个门外汉而言是不可能短时间逾越的障碍。所以搜集资料的时候就应该找尽可能与自己要破解的图形类似的例子或方法,这样能够较快的理解熟悉并快速应用。而我一开始的时候试图分析GIF文件格式,从数据中找出图片规律而分析出起数字的想法最后验证显然是愚蠢的(至少对于我这样对图形方面一窍不通的门外汉而言)。

 

经过辛苦的摸索,终于找到些蛛丝马迹,外加一点点运气,终于轻而易举地成功破解。起主要功劳应归功于这篇博文http://fengyouhua.javaeye.com/blog/109862让我茅塞顿开。于是动手写了如下脚本自动登录海淀驾校网上约车系统。

 

分析:海淀驾校网上约车系统验证码由4位偶数数字0、2、4、6和8随机组成,而且每个数字清晰工整,相互没有干扰,通过GIMP放大20倍可以清晰的每个数字的边界区间,而且每一位上色彩变化也不大。所以,只要每一位上分别采集0、2、4、6、8五个数字的图片放入数据库,构成4个分别对应4个位的数据库。在自动登录时,便可每裁剪一位的图片与相应位数据库中图片比对,便可知数字几。

 

准备:搜集图片。手动请求URL下载验证码图片、用GIMP裁减。比如5个图片0428, 2624, 4804, 6806,8008中第一位02468已经搜集齐了,按照8x12的比例分别从(5,5),(14,5),(23,5),(32,5),(41,5)处切割,并分别以0.gif, 2.gif, 4.gif, 6.gif和8.gif存入文件夹p1,这样第一位的数据搜集就算完成了。按同样的方法完成第二三四五位的搜集。最终生成p1,p2, p3,p4, p5五个文件夹,每个文件夹下有分别从起对应位取下的0.gif, 2.gif, 4.gif, 6.gif, 8.gif。关键:利用convert进行剪裁。

 

 

破解:

 

 

 

以上代码基本上是从上面那个连接稍加修改而来的。这就算把最关键的部分完成了。

 

登录:

 

1. Get Check Code

 

2.  Get Validator

 

3. 有了验证码和Validator就可以登录了

 

再分析收到的页面就可以知道登录是否成功了,同样也容易分析页面再发HTTP请求约车,也可以通过发HTTP请求页面刷新状态获取周六周日可以约的车了。其他的代码我就不贴了,都贴出来就没意思了,嘿嘿,反正我44个小时的车都是这么靠这玩意约到的。

 

其实是很简单的,只是因为应用在具体实际中,才觉得特别有意思,也切实地感受到了Linux的Shell果然强大。今天科目二考完了,没有悬念的过了,之前还特紧张,过了倒是觉得没啥可高兴的,但写这个也算一个交待吧。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值