验证码识别技术专题

来源:互联网 发布:腾讯视频软件下载 编辑:程序博客网 时间:2024/06/18 14:23
 

原理: 

获得若干验证码图片样本,按照显示每个数字的区域分割,取得数字图片的样本.  
   
  破解的时候作同样的分割,每个区域与数字图片的样本比较,确定每个区域是什么数字.

 

功能分析:
一般校验码具有的功能:
1、显示内容
显示内容一般是数字或者数字+字符,还有更变态的,显示的内容是随机汉字。
如何随机生成汉字,请看:
《用C#生成随机中文汉字验证码的基本原理》
http://wulei8899.cnblogs.com/archive/2005/06/29/183200.html

2、内容显示
内容显示这里,有很多做法,常见的有以下几种:
2.1 以一个不常被看到的字体显示内容,
2.2 字体随机倾斜显示
2.3 每个字随机显示不同颜色
2.4 内容随机显示在不同位置。
2.5 文字采用就渐变颜色,同一个字就有好几种颜色组成。

3、背景显示
常见背景显示方案:
3.1、使用干扰线来,后面随机显示数条干扰线,这些线的颜色跟字体的颜色类似
3.2、干扰点,后面随机显示数个干扰点,这些点的颜色跟字体的颜色类似
3.3、干扰色块,后面随机出现一个色块进行干扰

常见几种开源的校验码生成代码


效果图:
相关文章:ASP.net 验证码(C#) 
http://blog.csdn.net/SW515/archive/2005/02/03/279364.aspx
我个人在这些开源校验码中,最喜欢这个,校验码不会复杂到用户识别不了,而程序判断又有相当的难度


相关文章:ASP 生成 彩色 可变长 验证码程序
http://www.codefans.com/ArticleView/Article_6728.html

Asp.Net 动态生成验证码
http://sleeping.cnblogs.com/archive/2005/12/19/299980.html

象 DEV-Club 那样的彩色校验码
http://www.blueidea.com/tech/program/2003/709.asp

C#的彩色验证码
http://www.codefans.com/ArticleView/Article_6745.html

VerifyCode(asp),gif验证码生成技术
http://www.codefans.com/ArticleView/Article_6735.html

region 实现一个验证码的类
http://www.innerv.com/blogview.asp?logID=509&cateID=5

如何在asp.net中动态生成验证码
http://www.dwww.cn/new/2005911154522249.html

256色BMP图片验证码识别脚本
http://www.51cto.com/html/2005/1101/10438.htm

QQ验证码识别源代码(C#/NET1.1)
http://www.intodigi.com/Net/Website/Program/NET/12082.html

 

附加站外提交参考

使用 .NET 的 HttpWebRequest 可轻松实现站外提交功能,
代码如下:

            ASCIIEncoding encoding=new ASCIIEncoding();
            
string
 postData="
TextBox1=33&Button1=Button
"
;
            
byte
[]  data =
 encoding.GetBytes(postData);

            
//
 Prepare web request

            HttpWebRequest myRequest =
                (HttpWebRequest)WebRequest.Create(
"http://localhost/testform1.aspx");
            myRequest.Method 
=
 "POST
"
;
            myRequest.ContentType
=
"application/x-www-form-urlencoded"
;
            myRequest.ContentLength 
=
 data.Length;
            Stream newStream
=
myRequest.GetRequestStream();
            
//
 Send the data.

            newStream.Write(data,0,data.Length);
            newStream.Close();


解释:
postData 为你要提交的数据
比如 CSDN 的登录页面 http://www.csdn.net/member/UserLogin.aspx
输入用户名密码和校验码,并提交之后,浏览器便将下面的数据提交到服务器:
 

 

CSDNUserLogin%3Atb_UserName=yourName&CSDNUserLogin%3Atb_Password=yourPassword&CSDNUserLogin%3Atb_ExPwd=2332


其中的 yourName 为你实际登陆时提交的用户名, yourPassword 即为你的密码, 2332 是我刚才登陆时的验证码

这里介绍个工具: Visual Sniffer , google 一下便可轻松找到下载地址。
可以使用 Visual Sniffer 来捕捉提交的数据信息:
1. 访问你需要站外提交的页面,比如 CSDN 登陆页 http://www.csdn.net/member/UserLogin.aspx
2. 填写好需要的资料,比如用户名和密码,
3. 打开 Visual Sniffer, 点“开始拦截”
4. 在访问的页面中提交。
5. 等提交成功之后,在 Visual Sniffer 中“停止拦截”
6. 在 Visual Sniffer 的左侧栏的加号中依次点开,右边是它拦截到的内容,
   找到 内容含有 POST  http://www.csdn.net/member/UserLogin.aspx  的节点
以下是我拦截的内容供参考:


POST http://www.csdn.net/member/UserLogin.aspx HTTP/
1.0
Accept: image/gif
, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://www.csdn.net/member/UserLogin.aspx
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Pragma: no-cache
User-Agent: Mozilla/
4.0
 (compatible
;
 MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)

Host: www.csdn.net
Content-Length: 
355

Proxy-Connection: Keep-Alive
Cookie: ASPSESSIONIDAAAATBQC
=FMEGGCKDBKHAMMCGKPFDMBFG; ASP.NET_SessionId=lusprmnom05lr445tmteaf55; userid=699879

__EVENTTARGET
=&__EVENTARGUMENT=&__VIEWSTATE=dDwtMTcwMzgxNjQ2Mjs7bDxDU0ROVXNlckxvZ2luOmNiX1NhdmVTdGF0ZTtDU0ROVXNlckxvZ2luOkltYWdlX0xvZ2luOz4%2Btu1q2wmRZoAJTi9L73w1zBleylY%3D&CSDNUserLogin%3Atb_UserName=testusername&CSDNUserLogin%3Atb_Password=testpassword&CSDNUserLogin%3Atb_ExPwd=9232&from=&CSDNUserLogin%3AImage_Login.x=36&CSDNUserLogin%3AImage_Login.y=6
GET http://www.csdn.net/mycustompage.htm?aspxerrorpath
=/member/UserLogin.aspx HTTP/1.0
Accept: image/gif
, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://www.csdn.net/member/UserLogin.aspx
Accept-Language: zh-cn
UA-CPU: x86
Pragma: no-cache
User-Agent: Mozilla/
4.0
 (compatible
;
 MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)

Host: www.csdn.net
Proxy-Connection: Keep-Alive
Cookie: ASPSESSIONIDAAAATBQC
=FMEGGCKDBKHAMMCGKPFDMBFG;
 ASP.NET_SessionId=lusprmnom05lr445tmteaf55; userid=699879


 

注意:PostData 参数之间是以 " & " 进行 连接的

OK,通过以上简单示例,只要稍微修改下,即可做成多站点自动登陆,或自动网上投票等功能!

参考网址:

http://dev.csdn.net/article/28/28374.shtm
http://www.knowsky.com/18774.html
http://www.netomatix.com/HttpPostData.aspx

 

 

 

原创粉丝点击