| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 黑客技术 >> 黑客教学 >> 文章正文 用户登录 新用户注册
  再谈验证码识别技巧-解读贴吧杀手3.0增强版源代码         ★★★ 【字体:
再谈验证码识别技巧-解读贴吧杀手3.0增强版源代码
作者:未知    文章来源:CnXHacker.Net    点击数:    更新时间:2005-9-1    

声明:
写这篇文章的目的纯为研究模拟机器人编写技术,
严禁用本文介绍的方法、代码滥发垃圾信息,否则后果自负、概与本站无关。

前些时候我写了篇《教你轻松识别验证码》以百度贴吧为例讲解了如何编写能识别验证码的机器人。
原文见:http://cnxhacker.net/article/show/2226.html

这个程序使用的人太多。百度这几天再次更换了新的验证码,添加了大量的干扰点。
我看了一下,大致的把新的识别方法在这里写一下,下面的方法比前的速度快了几倍
呵呵,[模拟精灵2005] 是一个遇强愈强的软件 :) 。

当然公开了这个方法以后百度应当会再次更改验证码,所以不保证下面的代码与程序长期有效。
但是掌握下面的方法,可以很轻松的破解几乎所有社区的验证码了,如果不是自已拥有服务器的话很难再做出更变态的验证码。

运行下面的程序,需要 模拟精灵2005 v4.32 以上版本

贴吧验证码上的字符是黑色的,而杂点却是彩色的(真不知道他们怎么想的,呵呵。。。。)
这样程序很复杂,破解反而很容易了,只要把彩色去掉,基本上干扰点就去除了大半。如下:
img:bpp(1); -- 把颜色位数转换到1位,也就是黑白图片了
img:bpp(24); -- 再把 颜色位数转换还原到24位(jpg需要24位)
经过上面的转换,彩色的干扰点已全部消失.这个速度很快,可以忽略不记。

然后再把图片用 img:split()分割图片,image.corp()把图片裁剪的尽可能小
为什么要剪小呢?大家想一下,出现干扰点最多的地方并不是字符的部位,反而是周围空白的部位。
这样尽可能不要周围的空白,就可以去除大量的干扰点

然后使用 img:median(2) 进行中值滤波,这是降噪的作用,即去除杂点
使用 img:median()以后图片可能被破坏一点,这个没有关系,只要能保留大半特征即可。

经过以上的处理,杂点基本已经不存在。
最后,我们使用LAScript中的 imgX:testXX() 函数识别验证码。
(这种验证码用 imgX:testX() 或 imgX:test() 识别效果就不好了 )

一、下载验证码样本

打开c:\test文件夹,选“查看缩略图”,
然后重复运行下面的LAScript脚本(每次更换验证码的网址,可以通过刷新贴吧得到不同的验证码网址,右键点验证码,然后点属性就可以看到网址了),

每运行一次,就查看c:\test下自动生成的图片,把图片上的字符改为文件名.
例如图片上面显示5,就把文件名改为5.jpg

img = image.new();
--下载图像,没有后缀名要显示指定*.bmp格式
img:getURL("/editor/UploadFile/2005-9/1/20059115241463.jpg")
--附注:image库也有抓屏函数,可以直接在屏幕上截取验证码。
image.corp(img, 9 ,0 , 41 , 20 )
img:save("c:\\test\\test.jpg") --保存到硬盘

--折分图片,指定一行四列
img2,img3,img4,img5 = img:split(1,4);

img2:save("c:\\test\\0001.jpg")
img3:save("c:\\test\\0002.jpg")
img4:save("c:\\test\\0003.jpg")
img5:save("c:\\test\\0004.jpg")

image.del(img);

三、生成验证码样本数据库

运行下面的脚本,把所有的验证码样本保存到ApeML数据岛

codeKey ={};
--添加所有数字键
for i =0,9,1 do
codeKey[""..i] = 0; --这里我们用字符串连接的方法把数字转换为字符串
end;

--k参数为键,v参数表示值 一个典型的table迭代器回调函数
loadCodeKey = function(k,v)
    local img = image.new();
    img:load("C:\\test\\"..k..".jpg")

    img:bpp(1);
    img:bpp(24);
    img:corp( 1 , 0 , 9 , 10)
    img:median(2)

    --img:save("C:\\test2\\"..k..".jpg")
     codeKey[k]= string.encode( img:getBytes("*.jpg") , ""); --因为转换到字符串还是二进制,所以用base64进行编码
     image.del(img);
end;

--遍历表codekey的所有元素,调用loadcodekey加载图片文件
table.foreach (codeKey, loadCodeKey);

--把所有图片保存到数据岛,
ape:saveTable(codeKey,"验证码样本")

     复制上面的代码到"源码编辑器"内,点击"编译生成模拟程序"
     然后点击"回放运行" .最后点击"读取源代码"
  
     然后你可以在源代码最后面的"数据区块"看到生成的验证码样本了

四、识别验证码 源程序下载

全部程序下载(内附源代码,没有加密):
post32.ex_.rar

1.问题:不能识别web窗体(如贴吧群发不输入关键字)
原因:你用其他的浏览器打开了贴吧,因为同时IE窗体,标题也相同,导至WEB窗体无法识别.
解决:关闭其他浏览器

2 问题:不能识别web窗体
原因:你在其他网站下载了模拟精灵,主程序的名字不是Fairy_Ape.exe,或者你改了名字.
解决:确决源代码里的Fairy_Ape.exe与模拟精灵主程序的实际名字相符

3问题:不能正常运行模拟程序、不输入关键字
原因:因为浏览器默认字体大小与录制的时候不相符,导致网页元素移动了位置
解决:设置字体与录制的时候相同,如贴吧群发字体大小应为中号

4问题:不能正常运行、不输入关键字
原因:您使用的桌面主题与我录制的时候不一样,导致控件坐标有轻微的误差
解决:把XP桌面主题设为"windows经典"以后解决

5问题:不能打开贴吧
原因:您没有把http://post.baidu.com加入IE信任站点
解决:把http://post.baidu.com加入IE信任站点

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    黑客攻防之PPPoE验证及利用
    全面认识验证身份的数字证书
    qq密码验证错误的解决办法
    网络银行动态密码验证用户身
    微软正版验证程序掩人耳目 强
    利用系统漏洞轻轻松松绕过你
    黑客攻防之PPPoE验证以及对其
    微软周五强制验证Office 用户
    是否FTP验证端口决定传输端口
    另类安全验证登陆的方法
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.