简单的数字验证码破解

在win10系统下,基于python的tesserocr模块,对简单的验证进行识别

第一步

首先安装Tesseract,下载链接
提取码:8q8e
除了路径选择,安装的时候一直next就可以了,然后再在path里面添加环境变量

其实就是安装的路径了
在这里插入图片描述

第二步

然后下载Tesseract对应版本的wheel文件,下载链接
我的是python3.7 ,所以下载它
在这里插入图片描述

然后在cmd使用 pip 安装wheel,tesserocr

# 使用清华大学安装镜像,快一点
pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn wheel
#相应的,也下载tesserocr库
pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn tesserocr

# 已安装的跳过此步
#D:\tesseract\是放wheel文件的路径
pip install D:\tesseract\tesserocr-2.4.0-cp37-cp37m-win_amd64.whl

安装成功后,可以试试效果
在这里插入图片描述

from PIL import Image
import tesserocr

images=Image.open('19.png')
print(tesserocr.image_to_text(images))

在这里插入图片描述
对于复杂的二维码图片,可以使用opencv对其进行初步处理再识别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于数字加减验证码的规则比较简单,可以通过手动识别的方式来破解。 首先,我们需要通过 Python 的 PIL 库来读取验证码图片,并将其转换为灰度图像。然后,我们可以使用图像处理技术来识别数字和符号,并计算出验证码的结果。 以下是一个示例代码,可以对数字加减验证码进行破解: ```python from PIL import Image # 读取验证码图片 im = Image.open('captcha.png') # 转换为灰度图像 im = im.convert('L') # 图像处理函数,用于处理数字和符号 def process_digit(im, x, y): digits = { (0, 1, 0, 1, 0, 1, 1, 1, 1, 1): 0, (0, 0, 0, 1, 0, 0, 0, 1, 0, 0): 1, (0, 1, 0, 0, 1, 1, 1, 0, 1, 1): 2, (0, 1, 0, 0, 1, 1, 0, 1, 1, 1): 3, (0, 0, 0, 1, 1, 1, 0, 1, 0, 0): 4, (0, 1, 0, 1, 1, 0, 0, 1, 1, 1): 5, (0, 1, 0, 1, 1, 0, 1, 1, 1, 1): 6, (0, 1, 0, 0, 0, 1, 0, 1, 0, 0): 7, (0, 1, 0, 1, 1, 1, 1, 1, 1, 1): 8, (0, 1, 0, 1, 1, 1, 0, 1, 1, 1): 9, (0, 0, 1, 0, 0, 0, 0, 0, 0, 0): '+', (0, 0, 1, 0, 0, 0, 0, 1, 0, 0): '-', } # 提取数字和符号的像素 pixels = [] for i in range(5): for j in range(7): pixel = im.getpixel((x + i, y + j)) pixels.append(pixel) # 识别数字和符号 digit = digits.get(tuple(pixels)) return digit # 获取验证码数字和符号 digits = [] for i in range(4): digit = process_digit(im, 13 + i * 18, 2) digits.append(digit) # 计算验证码的结果 result = eval(''.join(map(str, digits))) print('验证码:', digits) print('结果:', result) ``` 在上面的代码中,我们定义了一个图像处理函数 `process_digit`,该函数用于提取数字和符号的像素,并识别其对应的数字或符号。我们还定义了一个字典 `digits`,其中包含了数字和符号对应的像素值,用于识别验证码中的数字和符号。 在主函数中,我们使用 `process_digit` 函数来获取验证码数字和符号,并使用 Python 内置函数 `eval` 来计算验证码的结果。 这个方法的缺点是如果验证码中包含了噪点或干扰线,可能会影响识别的准确性。但是对于一般的数字加减验证码来说,这种方法已经足够有效了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值