百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python调用易语言动态链接库,实现验证码通杀例子

myzbx 2024-12-16 14:52 16 浏览

今天成功把易语言调用验证码通杀的DLL在Python中成功调用了
特此共享出来,下面是识别截图:

识别方法1:

私信小编01即可获取大量Python学习资源

# 来源:http://www.sanye.cx/?id=12022
# 优点:载入快、识别速度高、识别精度较高
# 缺点:仅在32位Python环境中成功运行
 
 
# 获取上级目录
path = os.path.abspath(os.path.dirname(os.getcwd()))
# 获取验证码文件夹
img_list = os.listdir(path + r"\captcha")
# 载入识别库
dll = cdll.LoadLibrary(path + r"\ocr1\ocr.dll")
# 初始化识别库
dll.init()
# 遍历图片并识别
for i in img_list:
    # 读入图片
    with open(path + r"\captcha\{0}".format(i), "rb") as file:
        # 读入图片
        image = file.read()
        # 利用dll中的ocr函数进行识别
        Str = dll.ocr(image, len(image))
        # 返回的是指针,所以此处将指针转换为字符串,然后再编码即可得到字符串类型
        text = string_at(Str).decode("utf-8")
        print(f"识别返回:{text},类型:{type(text)},ID地址:{id(text)}")

识别方法2:

# 来源:[url=https://www.52pojie.cn/thread-1072587-1-1.html]https://www.52pojie.cn/thread-1072587-1-1.html[/url]
# 优点:识别速度高、识别精度高
# 缺点:仅在32位Python环境中成功运行、载入时间较长
 
# 获取上级目录
path = os.path.abspath(os.path.dirname(os.getcwd()))
# 载入识别库
dll = cdll.LoadLibrary(path + r"\ocr2\OCRS.dll")
 
# 载入字库与建立字库索引
with open(path + r"\ocr2\通杀英文数字库.cnn", "rb") as file:
    # 载入字库
    word_bank = file.read()
    # 建立字库索引
    work_index = dll.INIT(path, word_bank, len(word_bank), -1, 1)
# 读入待识别图片列表
img_list = os.listdir(path + "\captcha")
# 循环识别图片并输出
for i in img_list:
    # 打开指定图片
    with open(path + "\captcha\{0}".format(i), "rb") as file_img:
        # 读入图片
        image = file_img.read()
        Str = create_string_buffer(100)  # 创建文本缓冲区
        dll.OCR(work_index, image, len(image), Str)  # 利用DLL中的识别函数进行识别
        text = Str.raw.decode("utf-8")  # 对识别的返回值进行编码
        print(f"识别返回:{text},类型:{type(text)},ID地址:{id(text)}")

1.自己弄了一个类,下载下来直接使用,调用方法:

dll = Ver_code_1(DLL文件所在的文件夹目录)
#或者
dll = Ver_code_2(DLL文件所在的文件夹目录)
#识别图片:
dll.ocr(图片)

2.修正了识别库2空白字符未消除,无法正确判断长度的问题(可以利用固定长度判断是否符合,进行初步筛选,避免提交后网页返回验证码错误)

import os
from ctypes import *
 
 
class Ver_code_1:
    # 启动时需要传入ocr.dll
    def __init__(self, path):
        # 载入识别库
        self.dll = cdll.LoadLibrary(path + r"\ocr.dll")
        # 初始化识别库
        self.dll.init()
 
    def ocr(self, image):
        Str = self.dll.ocr(image, len(image))
        # 返回的是指针,所以此处将指针转换为字符串,然后再编码即可得到字符串类型
        return string_at(Str).decode("utf-8")
 
 
class Ver_code_2:
    def __init__(self, path):
        # 载入识别库
        self.dll = cdll.LoadLibrary(path + r"\OCRS.dll")
        # 载入字库与建立字库索引
        with open(path + r"\通杀英文数字库.cnn", "rb") as file:
            # 载入字库
            self.word_bank = file.read()
            # 建立字库索引
            self.word_index = self.dll.INIT(path, self.word_bank, len(self.word_bank), -1, 1)
 
    def ocr(self, image):
        Str = create_string_buffer(100)  # 创建文本缓冲区
        self.dll.OCR(self.word_index, image, len(image), Str)  # 利用DLL中的识别函数进行识别
        return Str.raw.decode("utf-8").rstrip('\x00')  # 对识别的返回值进行编码后返回,这里的\x00是删除缓冲区的空白符

注意!测试环境为:
Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:30:23) [MSC v.1928 32 bit (Intel)] on win32
经测试,无法在64位环境下调用,如有大佬能实现,烦请告知一下

关于DLL改64位的思路:

我找到了论坛中的IDA pro,成功将DLL进行了反编译,如图:

其实最关键的就是以上的init以及ocr两个函数,但是后续如何将IDA pro项目转换为64位,然后进行编译,目前没有找到合适的方法,如果有大佬麻烦告知一下。

相关推荐

一键生成高颜值图表!让你的文字瞬间有画面感,职场人必备!

哈喽,打工人们!忙碌的周中,大熊又来给你们带来一个超实用的效率神器啦!这次的宝藏网站绝对是那种用过就离不开的"真香"型产品!假设你明天就要做重要汇报,可面对一大堆密密麻麻的文字材料,你...

批量将 Word 转换为 PDF/Excel/Txt/图片等多种格式

Word文档是我们工作中经常会打交道的一种文档格式,我们也经常会有需要对Word文档进行格式转换的需求,比如将Word格式转换为PDF、将Word文档转换为Excel、将Word...

绝了!一键用AI生成高颜值动态PPT(附详细步骤+Prompt)

大家好,我是一名酷爱研究AI的产品经理,最近我有个新发现:那些花了你3天做出来的PPT,现在用AI可以1小时搞定!而且颜值还高!为什么AI做PPT比传统方式效率高10倍?我用一张图就能告诉你:AI生成...

ztext - 简单几行代码创建酷炫3D特效文字的开源JS库

把网页上的文字变成酷炫的3D风格,还能制作旋转动效,有了ztext.js,只需要几行代码。ztext能做什么ztext.js是一个能把常规的平面文字变成3D样式的前端开源代码库,让开发者...

文字内插入小图片,也太可爱了吧(文字中怎么插图片)

图文排版H5手机版秀米有小伙伴留言问添加图片的时候可不可以把图片添加到文字之间比如下面这句话中的小贴纸图片后面可以接着输入文字其实吧这就是咱们的『文字内插入小图片』功能嘛可以用来在文字内加个表情包又...

Linux环境下C++代码性能分析方法(linux怎么写c++代码)

技术背景在开发C++应用程序时,找出代码中运行缓慢的部分是进行性能优化的关键。在Linux系统上,有多种工具和方法可用于对C++代码进行性能分析,每种方法都有其特点和适用场景。实现步骤手动中断调试法在...

SVG互动图文,让你的文章更有趣!教你4种简单易学的黑科技玩法!

如果你是一个公众号创作者,那么你一定想知道如何让你的文章更加吸引人,更加有趣,更加有创意。你可能已经尝试过各种图文排版技巧,但是你是否知道,有一种黑科技可以让你的文章变得更加酷炫,更加互动,更加爆款?...

Videoscribe怎么实现实心中文汉字的手绘制作

很多朋友在制作手绘视频的时候,不知道怎么输入实心的中文汉字,之前我们已经给大家分享了怎么输入汉字的方法,但是有一点遗憾的是输出的汉字是空心的手绘展示,在视觉上并不是非常的美观。经过大家不断的探索,终于...

一款用于将文本转化成图表的现代化脚本语言

大家好,又见面了,我是GitHub精选君!今天要给大家推荐一个GitHub开源项目terrastruct/d2,该项目在GitHub有超过10.3kStar,用一句话介绍该项目就是:...

探秘 Web 水印技术(制作水印网站)

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

不忍心卸载的五款神仙工具(不忍心卸载的五款神仙工具是什么)

001.效率工具uTools-装机必备的生产力工具集uTools是一款非常强大的可以装下几乎所有效率工具的电脑生产力工具集,目前拥有Windows、Mac和Linux三个版本。软件界面...

「SVG」飞花令!这份最高检工作报告“超有料”

原标题:【SVG】飞花令!这份最高检工作报告“超有料”栏目主编:秦红文字编辑:沈佳灵来源:作者:最高人民检察院...

svg|2025政府工作报告,有没有你关心的数据?

··<setattributeName="visibility"begin="click+0s"dur="1ms"fill="freeze"restart="never"to="hi...

videoscribe只能输入英文,如何输入中文文本?

videoscribe只能输入英文,如何输入中文文本?打开VideoScribe软件,打开要添加中文字体的位置。打开Photoshop并在文件中创建一个新的透明背景图层。注意:必须是透明背景层。...

五个流行的SVG在线编辑器(svg编辑工具)

随着响应网络的发展,越来越多的高质量的SVG在线编辑器被公众所熟知。SVG矢量图形也越来越受欢迎,以便在任何设备上呈现图像,甚至一些易于使用的SVG在线编辑器,可以替代PS,本文总结了五种流行的SVG...