简单图片验证码破解

这几天我也玩了一下图片验证码的破解。不过我破解的验证码比较简单,见附件图片。

对于这样简单的图片验证码来说,只有数字,并且数字的位置是固定的。这样的图片验证码破解其实真算不上破解,其实就是图片拆分比较就可以了。

以下为思路:
1.图片的数字是固定位置的,所以先把图片裁剪为4张小图片,也就是4个小验证码。
BufferedImage subimage1 = image.getSubimage(7, 3, 9, 13);
BufferedImage subimage2 = image.getSubimage(20, 3, 9, 13);
BufferedImage subimage3 = image.getSubimage(33, 3, 9, 13);
BufferedImage subimage4 = image.getSubimage(46, 3, 9, 13);

2.对每个裁剪出来的图片,对图片的每个点都取其灰度值,(自己加周围8个灰度值再除以9,算出其相对灰度值),新建一个二维数组用于存放对图片分析后的值,当图片点的灰度值大于140时,把该点对应的二维数组值置为0,否则置为1。

3.把得到的二维数组值转为字符串,然后与经过一定量后得到的0---9的字符串比较,最相似度最高的那个数字。


详细代码见附件压缩文件

你可能感兴趣的:(java,破解,图片验证码)