您的位置:首页 > 其它

验证码识别技术专题

2013-09-08 12:56 225 查看
 

原理: 

获得若干验证码图片样本,按照显示每个数字的区域分割,取得数字图片的样本.  

   

  破解的时候作同样的分割,每个区域与数字图片的样本比较,确定每个区域是什么数字.

 

功能分析:

一般校验码具有的功能:

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

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: