设为主页 | 加入收藏 | 繁體中文

突破百度贴吧的验证码限制


  这段代码的意思便是检测图片0度和90度的直线。
  现在我们就说说详细操作了。先得到一幅验证码图片,这个得到的要领有许多,我建议用屏幕指定位置抓图来完成,然后保存成BMP款式,举行图像的二值化处置惩罚。二值化处置惩罚便是把图片转换成两种颜色,不过需要设置一个适当的阀值(由于24位图的一个点是由RGB3个颜色分量来控制,那么我们得到这3个分量的值后除以3便是阀值了),如许才气起到消灭部分乐音的结果。我们假定阀值为128 现在我们看看这段代码
  var
  p: PByteArray;
  Gray, x, y: Integer;
  Bmp: TBitmap;
  begin
  Bmp := TBitmap.Create;
  Bmp.Assign(Image1.Picture.Bitmap);
  //设置为24位真黑色
  Bmp.PixelFormat := pf24Bit;
  randomize;
  for y := 0 to Bmp.Height - 1 do
  begin
  p := Bmp.scanline[y];
  for x := 0 to Bmp.Width - 1 do
  begin
  //一个象素点三个字节
  Gray := Round(p[x * 3 + 2] * 0.3 + p[x * 3 + 1] * 0.59 + p[x
  * 3] * 0.11);
  if gray > 128 then //全局阀值128
  begin
  p[x * 3] := 255;
  p[x * 3 + 1] := 255;
  p[x * 3 + 2] := 255;
  end
  else
  begin
  p[x * 3] := 0;
  p[x * 3 + 1] := 0;
  p[x * 3 + 2] := 0;
  end;
  end;
  end;
  Image2.Picture.Bitmap.Assign(Bmp);
  Bmp.Free;
  如许我们就得到了一幅二值化的BMP。
  得到这副图后,我们需要对图像举行分割,便是把它酿成4个小位图,分别装入4个数字。分割算法很简单,由于验证码的数字位置左右跳动幅度不大,源代码就不再给出。
  然后我们要做的便是把这副图举行几个方向的hough变换检测,由控制θ的角度来完成,好比说这个 这是数字3 我们可以看到它有什么特性没有?它横着由三横组成,竖着由2竖组成!我们就划定 如果横着有3条直线,竖着有两条直线,那么这个数便是3了!以是我们只需用hough算子检测 0 & 90 度就能确定反正有几多直线了,再看这个 这是数字1 我们就划定竖有一条最长的直线,然而横的直线如果不凌驾竖直线长的1/2那么便是1了。其他数以此类推!
  当然实际操作当然没有这么简单,由于还是有部分乐音点没有消灭干净,但是这的确阐明了我们的头脑!以是每个数有需要准备几套特性编码,如果呈现多个数,就看使用编码数最多的数便是我们要识别的数了。最后便是统计了,统计函数我们现在给出
  function Repeatcount(s:string;d:string):integer;
  var i:integer;
  begin
  i:=0;
  while pos(d,s)>0 do
  begin
  i:=i+1;
  delete(s,pos(d,s),length(d));
  end;
  result:=i;
  end;
  使用这个函数,我们就可以确定呈现最多的p的次数以及使用编码最多的次数了!笔者随文附送了一个检测0度和90度的检测器,读者可以多试频频就明白了!(如图)
  当然只要这两度检测是远远不够的,实际应用中,可以使用0~90度中恣意一度检测,好比说7,它的竖由于不是90度的(直的)以是要用其他的度数来检测! 这里也总结一下,恣意数字,只需我们能得到相应的特性,那么我们就可以对它举行识别!
  总结一下创新的:
  1、   得到图片,举行二值化的变换、消灭乐音。
  2、   分割图像,保存成相应的BMP文件。
  3、   对其举行几个方向的HOUGH变换检测,根据相应的验证码来定!
  (你也可以做更多的检测,好比有英文字母就需用到其他算法了!)
  4、   对特性举行统计,得出识别结果。
  接下来要做的便是做个post步伐了,这个太简单了,代码你就本身写吧!不过也要做到如下细节:做成多线程步伐举行发贴,否则步伐会得到响应的。最好是可以导入大量的署理IP的,然后便是发贴的内容最后加上几个随机字符,如许可以防止重复贴的过滤!最紧张的,只是做测试,发贴量不要太多、不要乱发广告贴!
  以是说再安全的验证码也有软肋,我们只需发明就可以找出其中的毛病!当然不但是针对百度,其他论坛的特性码异样能识别!当然网络安全技能也是双刃剑,我这里再次夸大!这种要领的确能识别许多紧张的部分的一些要害验证码,但是读者如果使用其要领举行粉碎,那曾经违反了中华人民共和国的相干法律,是要付刑事责任的!而且与笔者有关!
  实在上述要领曾经不是只是对验证码举行识别了,完全可以用到实际生活中去,好比说手写体识别、车牌识别等等,但是实际生活中我们还要举行更多的加工,好比说圆形检测,多边形检测等等。以是说从网络安全技能中,也有许多工具能造福社会,还等待我们一连创造!
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: