密码爆破之验证码的识别_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

密码爆破之验证码的识别

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


密码爆破之验证码的识别

通常对网站进行测试时找到后台地址后就想爆破一下,但是因为验证码的原因不能进行爆破,于是有了此文。 普通图形验证码识别的两种方法:一、第三方库识别验证码(这种方法我不太推荐,第二种选择更好一些)首先安装python的tesserocr这个库.,令人遗憾的是这个库的识别率不是很高,但可以通过大量的数据训练提高识别率。 通过审查元素可以发现验证码是一张图片 为了方便演示,我将图片保存到了本地。 第一种:首先建立一个Image对象,调用了tesserocr的image_to_text()方法,第二种方法是直接调用tesserocr的file_to_text()方法。 第二种方法的识别效率并不比第一种的识别效率好,所以我建议使用第一种方法。 输出的结果之中带有空白字符,所以在第一种方法获取结果后,我们采用正则来去除空白字符,最终结果为6495 提高识别效率 重新执行上面的代码结果为KKFT,这结果显然不是我们想要的。 对于这种情况,我们还需要做一下额外的处理,如转灰度、二值化等操作我们可以利用 Image 对象的 convert ()方法参数传人,即可将图片转化为灰度图像,我们还可以指定二值化的阔值 上面的方法采用的是默认阔值 127 不过我们不能直接转化原图,要将原图先转为灰度图像,然后再指定二值化阔值: image = image. convert(' L' )threshold = 80table = []for i in range(256):if i < threshold:table.append(0)else:table.append(1)image = image.point(table,’1' )image. show() 转换结果如图所示。此时的识别结果是正确的。获取到正确的验证码文本后,我们可以通过urllib或者requests模拟发送表单从而实现爆破的目的。 二、第三方API识别验证码这里我以某识别验证码的网站的api为例1:首先注册用户并登录2:注册软件id打开用户中心,找到软件ID 点击生成一个软件ID 软件名称和软件说明可以随意填写,自己看得懂就好。 然后获取官方的api,这个api是python2版本的,我们需要更改几个地方 之后我们在chaojiying.py中定义一些变量用于保存用户数据 soft_id是你生成软件ID的IDsoft_kind是价格体系中的验证码类型,如图所示 为了方便演示,我直接将要识别的验证码图片放到了本地 然后将Chaojiying_Client()这个类中传入三个参数,分别是xxx网站账号,xxx网站密码,软件id open中的路径更改成获取的图片路径之后退出编辑,终端运行python3 chaojiying.py 运行打印出了一个json数组,其中pic_str就是验证码的值。 准确无误!有了验证码的值就可以实现对有验证码的后台进行爆破(虽然这是废话…)对于其他类型的验证码(极验滑动验证码、点触验证码、微博宫格验证码),需要专业的爬虫知识,调用第三方api识别等待,请自行扩展学习。

密码爆破之验证码的识别