veryyoung
2013-12-30 22:02:54
精
Java破解简单验证码
前段时间写基于俺们学校教学管理平台的App,需要破解验证码,模拟登陆,然后抓取数据,显示在Android端
验证码破解的一般思路是下载验证码,提取出需要的部分,平均拆分成N(N=验证码字符个数)份
二值化(转化为黑白色,黑色为1,白色为0),取模,然后保存摸板
俺们学校的验证码比较弱,只有0-9 10个数字,建好这十个数字的模型
在模拟登陆之前先把验证码下载下来,也是提取出需要的部分,拆分,然后与摸板进行比较,这样验证码就能破解啦!
步骤总结如下:
(1)批量下载一部分验证码图片
(2)将这部分图片提取出需要的部分
(3)将提取出来的部分平均拆分成N(N=验证码字符个数)份
(4) 去噪,将图片灰度化与二值化
(5)提取每一个字符的特征,生成特征矢量或特征矩阵
(6)分类与学习。将特征矢量或特征矩阵与样本库进行比对,挑选出相似的那类样本,将这类样本的值作为输出结果。
下面借助代码和图片,具体讲解步骤:
(1)批量下载一部分验证码图片
这里借助了Apache的http://hc.apache.org/httpclient-3.x/
这个比较简单,代码就不贴了。所做的工作就是从 http://run.hbut.edu.cn/Account/GetValidateCode
下载了100张图片,保存到checkcode文件夹,命名为code_i.jgp
如图所示:
(2).将这部分图片提取出需要的部分
用windows自带的画图工具编辑图片,缩放到最大,如下图所示
可观察到周围有很多空白像素点,这些都是不需要的.裁剪出需要的部分,注意:要确保裁剪之后能平均裁剪为4等分
代码如下:
public static BufferedImage getSingleCode(BufferedImage image) { return image.getSubimage(6, 5, 36, 12); }
由最代码官方编辑于2014-6-27 13:37:46
猜你喜欢
请下载代码后再发表评论
文件名:CrashVeryCode.zip,文件大小:175.262K
下载
- /
- /CrashVeryCode
- /CrashVeryCode/.classpath
- /CrashVeryCode/.idea
- /CrashVeryCode/.idea/.name
- /CrashVeryCode/.idea/compiler.xml
- /CrashVeryCode/.idea/copyright
- /CrashVeryCode/.idea/copyright/profiles_settings.xml
- /CrashVeryCode/.idea/encodings.xml
- /CrashVeryCode/.idea/gradle.xml
- /CrashVeryCode/.idea/misc.xml
- /CrashVeryCode/src
- /CrashVeryCode/src/com
- /CrashVeryCode/src/com/young
- /CrashVeryCode/src/com
- /CrashVeryCode


liujun0104 LV5
4月14日
EdgarLi LV14
2022年7月19日
xxg2810 LV2
2021年3月8日
wyzl3321 LV25
2020年6月25日
wangdehai LV3
2020年1月1日
blueskyroof LV9
2019年11月28日
qwerasdfzxcv12 LV1
2019年2月15日
3207828 LV1
2018年12月14日
2985225214 LV10
2018年11月30日
TreasureUp LV1
2018年5月8日

liujun0104 LV5
4月14日
Sunsi12345 LV8
2022年12月7日
835512308 LV14
2022年7月22日
EdgarLi LV14
2022年7月19日
xueys123 LV13
2022年6月2日
JohnAlex LV9
2022年1月29日
Chillax LV1
2021年12月3日
tqlovemm
2021年10月22日
暂无贡献等级
Ace666 LV2
2021年10月19日
97437472
2021年4月24日
暂无贡献等级