本帖最后由 huaxiamengqing 于 2015-1-10 19:20 编辑
不要问我为啥什么都在gh里面搞,gh玩的熟,任性! 这几天正在进行如火如荼的抢票,黄牛们赚钱赚的手抽筋,天朝什么事情都有,黄牛抢票竟然要收一百的手续费,我对一个黄牛说我给你介绍几十个客户,你给优惠点,他却对我说单都接满了,不是熟人的单都不想接了- -我无语了。我想既然自己GH玩的熟,何不写一个抢火车票的电池放到SEG插件里面,岂不是很拉风? 说搞就搞,我们来进行第一步验证码识别。虽然在.net二次开发方面被很多人尊称为大神,但实际我自己明白,自己在真正的语言方面跟专业的计算机专业毕业的相比,那真是菜的不能再菜了。所以写代码之前我一般会去网上搜一下,实际上验证码破解有很多种方法,其中最近令我最吃惊的一种是利用12306路人识别验证码,高峰期你会发现自己输入验证码明明是正确的,但是提示错误!这是为何?我猜测是民间的技术黄牛们拦截并获取了你的验证信息为他们的抢票软件所用!如此大胆之行径,光天化日之下公然黑掉12306,这些都是背后巨大的利益所驱使。我们没有那么牛逼,只能搞搞老生常谈的图形识别吧,毕竟RH+GH是搞图形的— 我先说下思路如何用gh+RH来识别验证码,我们知道验证码识别,本质上是一种图灵测试,如果通过测试说明你面前的是一个人在操作。验证码是一张图片,12306网站的比较简单都是数字和字母组合。
图片都是由像素点组成的,每个像素点都有一个点位,和一个颜色组成,我们首先对图像进行二值化,就是让其变成黑白两种颜色 这样我们只需要黑色的点。然后将这些黑色的点生成为犀牛文件里面的点,由x,y生成二维点这个很简单吧,如下图。
生成后,你会惊奇的发现这些二维点的间距都是1,完全跟Rhino的格栅重合,很有规律的一个点阵!
接下来有两条路走 1, 分析点位识别出验证码。 2, 让程序学习验证码点位关系,通过经验判断来识别验证码。 第一种技术难度比较大,不好实现,当然你有兴趣也可以去尝试。 我走的是第二种路线,下面我说下如何让程序学习。 我们首先生成4*(26+10)*10个图层 这个很简单可以用Humen插件实现,0 1 2 3父图层代表的意思是验证码中第0 ,1,2,3的位置 26+10就是26个字母10个数字组合,*10意思是在第n个位置的字母或者数字可能出现10中不同的点位关系,当然你也可以把10搞大点。做完这个,痛苦的学习过程来了,我们需要人工识别点位关系,比如下图的点位: U的点在第一个位置,那么我会手动把它放入父图层0,U字母下的0-10子图层中, 然后将此图层隐藏,继续将后面的点放到对应的图层里面。做完这个,我们相当于做了一个索引库,我们识别的时候将验证码点位获取跟索引库里面的对比,如果我们验证码的点位完全包含某个识别索引比如这个位置的U的点完全或者90%(这个自己可以定)完全包含在了我们要识别的验证码的点位列表里面,那么就可以断定这个验证码的0位置是U,以此类推。这样就识别了验证码,但是做索引库这个比较头疼。 下面是我做的索引库,就搞了一百多个验证码作为经验库,识别效果已经很可观了,不过这远远不够,我们要做成千上万个验证码的点位索引估计才能达到百分百识别。 实现方法可能没讲多清楚,详细的去看gh文件里面的代码吧,内有做索引库的连线,还有识别模块,有兴趣朋友可以仔细去研究下,继续下去搞出一个出票电池--。 本来之前破解了一个黄牛软件,承诺过要给群里面的人抢票,但是后来发现完全不现实,破解的软件更新的很快,根本没法用。真正专业的还是那些技术黄牛们,天天跟着12306更新。 附件请点击原文链接,链接到学犀牛网帖子下载。 精彩分享:
欢迎传播此微信号:SecondEffectGroup

欢迎下载本人所写插件,并提出建议,下载地址:http://www.food4rhino.com/project/segghcommon(暂时无法连接,可进群索要)
群号为:82367748
|
举报