验证码识别技术专题

原创 2006年06月06日 09:53:00

原理: 

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

 

功能分析:
一般校验码具有的功能:
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

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

poj 3666 Making the Grade (动态规划)

菜菜的说一下(若有幸被高人看见,请指导),初次学dp,这个题想了好久,不会~上网看了一个思路,看了好久,终于看懂了~ 好笨啊%>_   先附此人博客: http://blog.sina.com.cn/...

POJ3666 Making the Grade [DP,离散化]

题意: 给定一个序列,以最小代价将其变成单调不增或单调不减序列,这里的代价看题目公式。 思路: 很容易想到是DP。 1. 对前i个序列,构成的最优解其实就是与两个参数有关。一个是这个序列处理...

POJ2777 Count Color 线段树

题意: 给一个固定长度为L的画板 有两个操作: C A B C:区间AB内涂上颜色C。 P A B:查询区间AB内颜色种类数。 思路: 首先显然是要线段树。 每个节点有如下参数:...

《机器学习》第三章决策树学习 ID3算法 c++实现代码

很久没写含这么多stl的程序了,很故意的用set,map,vector,熟手一下。 也记录一下吧,虽然写得比较渣。 三个文件: 测试数据:data.txt D1 Sunny ...

POJ 2356 Find a multiple [抽屉原理]

题意: 给定n个正数,请你从中找出若干个数,其和刚好是n的倍数。 思路: 抽屉原理。 sum[0]=0; sum[i]=(a[1]+a[2]+a[3]...a[i])%n; 如果存...

POJ3666 Making the Grade [DP,离散化]

#include #include #include #include #include #include using namespace std; #define maxn 3000 #...

【POJ 3666】Making the Grade(离散化+DP)

【POJ 3666】Making the Grade(离散化+DP)题目大意: 给出长为n的序列,每次可以选择其中一个元素 +1或-1 问至少几次这种操作,能够将序列变为单调不增或不减序列?元素可...

POJ 1458 Common Subsequence——LCS

#include #include #include #include using namespace std; const int maxn = 5000; char str1[maxn],...

POJ3666

Making the GradeTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uDescript...

HDU 5532 Almost Sorted Array (dp)

Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/O...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)