0x00 前言
前段时间由于经常碰上验证码爆破问题,便和一个朋友就此交换了意见,都认为可以使用google的开源项目
tesseract-ocr来实现。本着造轮子的精神,他无中生有,用python开发了一整个爆破平台(开发完毕要开源)。我人穷志短,就基于burpsuite开发个插件敷衍了事。
0x01 安装 tesseract-ocr
限于实验经验有限,这里只说
ubuntu和windows两种安装方法。
ubuntu: 参照链接进行安装。
windows: 下载 jTessBoxEditor,解压后添加目录下的tesseract-ocr路径到环境变量就可以愉快的玩耍了。
0x02 开发
程序实现的原理比较简单
1. 注册
burpsuite插件接口,实现BurpExtender类,关键代码如下,具体用法参见burpsuite api
public class BurpExtender implements IBurpExtender, ITab, IIntruderPayloadGeneratorFactory{
// 注册burpsuite插件回调接口
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks){
// TO DO
// 在这里调用界面初始化函数,并完成主要的代码功能。
// 程序逻辑为
// 1. 使用脚本对图片进行简单处理
// 2. 运行程序调用命令行的 tesseract 将图片转为字符串
}
public String getTabCaption() {
return "CheckCode";
}
public Component getUiComponent() {
return jTabPanelMain;
}
public String getGeneratorName() {
return "CheckCode";
}
public IIntruderPayloadGenerator createNewInstance(IIntruderAttack attack) {
return new IntruderPayloadGenerator(attack);
}
}
2.实现
IntruderPayloadGenerator类,在类中处理burpsuite的爆破参数
public class IntruderPayloadGenerator implements IIntruderPayloadGenerator{
public IntruderPayloadGenerator(IIntruderAttack attack){
}
// 返回是否还有 payload ,由 burpsuite 调用
public boolean hasMorePayloads() {
return true;
}
// 返回下一个 payload ,由 burpsuite 调用
public byte[] getNextPayload(byte[] baseValue) {
return baseValue;
}
// 重置 payload ,由 burpsuite 调用
public void reset() {
}
}
3.界面设计
由于
java开发界面比较麻烦,因此安装了eclipse插件WindowBulider Editor插件,接下来就是简单的画王八了,没有什么难度。一个小Tips:在BurpExtender类中加上main函数,在其中调用gui初始化函数,可以直接进行插件测试,避免繁琐的重新加载,同时方便debug。完成后就是下图这种鬼样子
还有这样
以及这样
0x03 测试
1.输入验证码
url直接测试,结果不太好,4个错了1个。
2.点选黑白灰度和二值化,将图片先转为灰度图,再进行二值化处理,效果好了一些,
4认识了。
3. Tesseract 选项用来输入tesseract程序的参数,比如用
-psm 7 digits来限定识别结果在tessdata/configs/digits当中。自己训练语言后,也使用这个参数来选择语言,如-psm 7 -l test。
0x04 训练
遇上识别难度更大一些的,只能自己训练语言来识别。由于验证码各家各样,又有各种干扰线,统一识别无法实现,加之
Tesseract官方提供的语言训练方法惨无人道,故此实现了一套较为简易的方案。
首先介绍一下官方的训练方法,网上已经有许多实现,如
Tesseract-OCR 字符识别—样本训练
tesseract_ocr 字符识别基础及训练字库、合并字库在进行测试的时候发现只要把多张tif合并成为一张图片,
tesseract就无法正常将之转为box文件。我的内心是崩溃的,如图
最后不得已只好将取出的多张验证码合并成一张进行训练,无奈之举。
1.点击
Add Train将处理后的图片添加到训练集中2.然后按
Step1:Create BoxFile创建box文件
3.对
TIF图片中的每个字符进行调整。
4.回到
CheckCode版面,按下Step2:Train,然后将burpsuite目录下的test.traineddata文件拷贝到tesseract-ocr\tessdata目录下。5.重新进行测试,勾选
Tesseract,输入命令-psm 7 -l test,效果如图
0x05 演示
这是
CSDN的验证码
本文介绍如何使用Tesseract-OCR实现验证码的自动识别,并基于BurpSuite开发插件进行爆破测试。文章涵盖安装配置、开发流程、界面设计及自定义训练等关键技术环节。
4807

被折叠的 条评论
为什么被折叠?



