菜鸟求学习破解验证码的技术,大神请来!

心随乐动123 2015-02-06 11:08:08
菜鸟一枚,想学习如何识别图片验证码,用什么技术?验证码是jpg的图片。请大神来教育,C# Java都可以。
...全文
831 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-03-12
  • 打赏
  • 举报
回复
如果你能做出个程序,识别连我都识别不了的文字,那么至少说明它比我智商高
於黾 2015-03-12
  • 打赏
  • 举报
回复
有些网站的验证码很蛋疼的, 我自己用眼睛看,都要反复点"看不清",直到出现一个差不多能看清的,还有20%是靠猜的,可能需要反复输入几遍才能成功
於黾 2015-03-12
  • 打赏
  • 举报
回复
引用 26 楼 crystal_lz 的回复:
这个思路只能对简单验证码生效
简单验证码生效+1 如果字母数字很规则,而且互相之间没有连在一起,那么降噪,二值化,分解,然后一个一个做特征匹配就完事 但是有些验证码,互相都连在一起,或者变形的厉害,人眼看都看不出到底是U还是V,你让程序自动识别就太扯了 而且我见过有些网站的验证码本身就是动的,任何时间去抓取图像,都有至少2个字母是被遮挡的,你需要连续抓取图像,才能看到所有的字符都是什么
微wx笑 2015-03-12
  • 打赏
  • 举报
回复
找个开源的图形识别库,收集训练样本,测试调优。
encoderlee 2015-02-08
  • 打赏
  • 举报
回复
数字图像处理和模式识别,这可以算是一门学科了,需要长时间的积累学习才行,对数学的要求也很高
zujinsheng 2015-02-08
  • 打赏
  • 举报
回复
数字字母还好.. 如果是汉字, 蛋疼..
qq_25900609 2015-02-08
  • 打赏
  • 举报
回复
Citrix Provisioning Services 7.1 管理
crystal_lz 2015-02-08
  • 打赏
  • 举报
回复
引用 25 楼 crystal_lz 的回复:
以前做过一个百度推广验证码的识别 源码下载地址:http://download.csdn.net/download/crystal_lz/7647841 思路介绍在我博客有文章:http://clzf.co/blog.php?id=27
这个思路只能对简单验证码生效
crystal_lz 2015-02-08
  • 打赏
  • 举报
回复
以前做过一个百度推广验证码的识别

源码下载地址:http://download.csdn.net/download/crystal_lz/7647841
思路介绍在我博客有文章:http://clzf.co/blog.php?id=27
SPFarmer 2015-02-07
  • 打赏
  • 举报
回复
引用 15 楼 iiiu_2863645440 的回复:
安装测试验证码登陆示例 //填写验证码文本框 <asp:TextBox ID="txtVali" runat="server" Font-Size="9pt" Width="60px" BackColor="White"></asp:TextBox> //验证码显示地址 <img id="Img1" align="left" alt="看不清,请点击我!" onclick="this.src=this.src+'?'" src="../youyu/CheckCode.aspx" style="width: 49px; height: 22px" /> //绘制验证码 protected void Page_Load(object sender, EventArgs e) { //调用自定义方法绘制验证码 CreateCheckCodeImage(GenerateCheckCode()); }//codego.net/11/1/1/ private string GenerateCheckCode() { //创建整型型变量 int number; //创建字符型变量 char code; //创建字符串变量并初始化为空 string checkCode = String.Empty; //创建Random对象 Random random = new Random(); //使用For循环生成4个数字 for (int i = 0; i < 4; i++) { //生成一个随机数 number = random.Next(); //将数字转换成为字符型 code = (char)('0' + (char)(number % 10)); checkCode += code.ToString(); } //将生成的随机数添加到Cookies中 Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); //返回字符串 return checkCode; } private void CreateCheckCodeImage(string checkCode) { //判断字符串不等于空和null if (checkCode == null || checkCode.Trim() == String.Empty) return; //创建一个位图对象 System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); //创建Graphics对象 Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 for (int i = 0; i < 2; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 100; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); //将图片输出到页面上 System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } //校验验证码 HttpCookie cookie = Request.Cookies["CheckCode"]; if (String.Compare(cookie.Value, txtVali.Text, true) != 0) { Response.Write("<script lanuage=javascript>alert('验证码错误');location='javascript:history.go(-1)'</script>"); }
楼主是要破解,你这个是生成验证码吧
devmiao 2015-02-07
  • 打赏
  • 举报
回复
看下《模式识别》,清华大学出版社出版
泡泡龙 2015-02-07
  • 打赏
  • 举报
回复
简单的用ocr或者自己做字模匹配 复杂的需要处理几十种算法
SmileSkyNet 2015-02-07
  • 打赏
  • 举报
回复
关键看这个图片验证码的复杂度,如果不是很复杂(如只是数字或字母的话可以用DM插件穷举)我就用这办法解决了一个验证码登录的问题,不过那网站只是数字,每个数字形状是一样的就是颜色不同
iiiu_2863645440 2015-02-07
  • 打赏
  • 举报
回复
安装测试验证码登陆示例 //填写验证码文本框 <asp:TextBox ID="txtVali" runat="server" Font-Size="9pt" Width="60px" BackColor="White"></asp:TextBox> //验证码显示地址 <img id="Img1" align="left" alt="看不清,请点击我!" onclick="this.src=this.src+'?'" src="../youyu/CheckCode.aspx" style="width: 49px; height: 22px" /> //绘制验证码 protected void Page_Load(object sender, EventArgs e) { //调用自定义方法绘制验证码 CreateCheckCodeImage(GenerateCheckCode()); }//codego.net/11/1/1/ private string GenerateCheckCode() { //创建整型型变量 int number; //创建字符型变量 char code; //创建字符串变量并初始化为空 string checkCode = String.Empty; //创建Random对象 Random random = new Random(); //使用For循环生成4个数字 for (int i = 0; i < 4; i++) { //生成一个随机数 number = random.Next(); //将数字转换成为字符型 code = (char)('0' + (char)(number % 10)); checkCode += code.ToString(); } //将生成的随机数添加到Cookies中 Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); //返回字符串 return checkCode; } private void CreateCheckCodeImage(string checkCode) { //判断字符串不等于空和null if (checkCode == null || checkCode.Trim() == String.Empty) return; //创建一个位图对象 System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); //创建Graphics对象 Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 for (int i = 0; i < 2; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 100; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); //将图片输出到页面上 System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } //校验验证码 HttpCookie cookie = Request.Cookies["CheckCode"]; if (String.Compare(cookie.Value, txtVali.Text, true) != 0) { Response.Write("<script lanuage=javascript>alert('验证码错误');location='javascript:history.go(-1)'</script>"); }
wjq 2015-02-07
  • 打赏
  • 举报
回复
感觉难度高于在有材料的情况下组装核反应堆啊。。。
zfcode 2015-02-07
  • 打赏
  • 举报
回复
建议直接去使用网络打码平台吧。。。
本拉灯 2015-02-06
  • 打赏
  • 举报
回复
willhuo 2015-02-06
  • 打赏
  • 举报
回复
菜鸟就不用考虑了,这东西很难,比一般东西都难,图行学你先去看看吧
T_MonkiJin 2015-02-06
  • 打赏
  • 举报
回复
引用 13 楼 zujinsheng 的回复:
[quote=引用 12 楼 T_MonkiJin 的回复:] [quote=引用 11 楼 Z65443344 的回复:] [quote=引用 9 楼 TianShangYouHuiJi 的回复:] 我不是菜鸟,也不详称霸世界。 我只有一个梦想 矮穷矬一枚,求漂亮女友。。
网络时代,这都不是事,只要你肯花几百块钱,几天就到,送货上门[/quote] 要范冰冰版还是凤姐版 。年底5折优惠[/quote] 使用效果如何..[/quote] 只有你想不到的,没有做不到的。还可以编码哦,亲
zujinsheng 2015-02-06
  • 打赏
  • 举报
回复
引用 12 楼 T_MonkiJin 的回复:
[quote=引用 11 楼 Z65443344 的回复:] [quote=引用 9 楼 TianShangYouHuiJi 的回复:] 我不是菜鸟,也不详称霸世界。 我只有一个梦想 矮穷矬一枚,求漂亮女友。。
网络时代,这都不是事,只要你肯花几百块钱,几天就到,送货上门[/quote] 要范冰冰版还是凤姐版 。年底5折优惠[/quote] 使用效果如何..
加载更多回复(10)

110,541

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧