找回密码
 加入
搜索
查看: 2179|回复: 7

[AU3基础] [已解决] dllcall调用完美验证码识别系统

[复制链接]
发表于 2019-8-3 19:26:49 | 显示全部楼层 |阅读模式
本帖最后由 king8462 于 2019-8-4 18:57 编辑

网上找了个 “完美验证码识别系统”免费验证码识别软件,挺好用。自己制作好了识别库,但不会写dllcall语法,请高手帮帮忙,谢谢!


识别库密码163,这是dll语法。附件为验证码和dll及识别库文件。

----以下四个个函数用于载入识别库--------
Private Declare Function LoadWmFromFile Lib "WmCode.dll" (ByVal FilePath As String,ByVal Password As String) As Boolean
函数功能说明:从文件中载入识别库文件,成功返回True,否则返回False。
函数参数说明:
FilePath  :文本型,识别库文件所在全路径。
Password  :文本型,识别库调用密码

Private Declare Function LoadWmFromBuffer Lib "WmCode.dll" (ByVal FileBuffer As Long,ByVal FileBufLen As Long,ByVal Password As String) As Boolean
函数功能说明:从内存中载入识别库文件,成功返回True,否则返回False。
函数参数说明:
FileBuffer :整数型,一个记录了识别库文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组第一个成员的地址,或内存区域的地址。
FileBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。
Password  :文本型,识别库调用密码


Private Declare Function LoadWmFromFileEx Lib "WmCode.dll" (ByVal FilePath As String,ByVal Password As String) As Long
函数功能说明:从文件中载入识别库文件,成功返回Id,失败返回-1。
函数参数说明:
FilePath  :文本型,识别库文件所在全路径。
Password  :文本型,识别库调用密码

Private Declare Function LoadWmFromBufferEx Lib "WmCode.dll" (ByVal FileBuffer As Long,ByVal FileBufLen As Long,ByVal Password As String) As Long
函数功能说明:从内存中载入识别库文件,成功返回Id,失败返回-1。
函数参数说明:
FileBuffer :整数型,一个记录了识别库文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组第一个成员的地址,或内存区域的地址。
FileBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。
Password  :文本型,识别库调用密码


--------以下四个函数用于识别验证码-------------
Private Declare Function GetImageFromFile Lib "WmCode.dll" (ByVal FilePath As String,ByVal Vcode As String) As Boolean
函数功能说明:识别一个图像文件,成功返回True,否则返回False。
函数参数说明:
FilePath :文本型,图像文件所在全路径。
Vcode  :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。

Private Declare Function GetImageFromBuffer Lib "WmCode.dll" (ByVal ImgBuffer As Long,ByVal ImgBufLen As Long,ByVal Vcode As String) As Boolean
函数功能说明:识别一个记录了图像文件的二进制数据的字节数组,或一块同样功能的内存区域,成功返回True,否则返回False。
函数参数说明:
ImgBuffer :整数型,一个记录了图像文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组第一个成员的地址,或内存区域的地址。
ImgBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。




Private Declare Function GetImageFromFileEx Lib "WmCode.dll" (ByVal Id As Long,ByVal FilePath As String,ByVal Vcode As String) As Boolean
函数功能说明:识别一个图像文件,成功返回True,否则返回False。
函数参数说明:
Id : 整数型,使用LoadWmFromFileEx或LoadWmFromBufferEx返回的Id,用来指定哪个识别库识别.
FilePath :文本型,图像文件所在全路径。
Vcode  :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。

Private Declare Function GetImageFromBufferEx Lib "WmCode.dll" (ByVal Id As Long,ByVal ImgBuffer As Long,ByVal ImgBufLen As Long,ByVal Vcode As String) As Boolean
函数功能说明:识别一个记录了图像文件的二进制数据的字节数组,或一块同样功能的内存区域,成功返回True,否则返回False。
函数参数说明:
Id : 整数型,使用LoadWmFromFileEx或LoadWmFromBufferEx返回的Id,用来指定哪个识别库识别.
ImgBuffer :整数型,一个记录了图像文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组第一个成员的地址,或内存区域的地址。
ImgBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。


-----------以下一个函数用于设定识别库选项------------------
Private Declare Function SetWmOption Lib "WmCode.dll" (ByVal OptionIndex As Long,ByVal OptionValue As Long) As Boolean
函数功能说明:设定识别库选项。设定成功返回真,否则返回假。
函数参数说明:
OptionIndex :整数型,选项索引,取值范围1~10
OptionValue :整数型,选项数值。

参数详解:
        OptionIndex        OptionValue
1.        返回方式        取值范围:0~1     默认为0,直接返回验证码,为1返回验证码字符和矩形范围形如:S,10,11,12,13|A,1,2,3,4 表示识别到文本 S 左边横坐标10,左边纵坐标11,右边横坐标,右边纵坐标12

2.      识别方式        取值范围:0~4     默认为0,0整体识别,1连通分割识别,2纵分割识别,3横分割识别,4横纵分割识别。可以进行分割的验证码,建议优先使用分割识别,因为分割后不仅能提高识别率,而且还能提高识别速度

3.        识别模式        取值范围:0~1     默认为0,0识图模式,1为识字模式。识图模式指的是背景白色视为透明不进行对比,识字模式指的是白色不视为透明,也加入对比。绝大多数我们都是使用识图模式,但是有少数部分验证码,使用识字模式更佳。

4.        识别加速        取值范围:0~1     默认为0,0为不加速,1为使用加速。一般我们建议开启加速功能,开启后对识别率几乎不影响。而且能提高3-5倍识别速度。

5.        加速返回        取值范围:0~1     默认为0,0为不加速返回,1为使用加速返回。使用加速返回一般用在粗体字识别的时候,可以大大提高识别速度,但是使用后,会稍微影响识别率。识别率有所下降。一般不是粗体字比较耗时的验证码,一般不用开启

6.        最小相似度        取值范围:0~100   默认为90

7.      字符间隙        取值范围:-10~0   默认为0,如果字符重叠,根据实际情况填写,如-3允许重叠3像素,如果不重叠的话,直接写0,注意:重叠和粘连概念不一样,粘连的话,其实字符间隙为0.


Private Declare Function SetWmOptionEx Lib "WmCode.dll" (ByVal Id As Long,ByVal OptionIndex As Long,ByVal OptionValue As Long) As Boolean
函数功能说明:设定识别库选项。设定成功返回真,否则返回假。
函数参数说明:
Id : 整数型,使用LoadWmFromFileEx或LoadWmFromBufferEx返回的Id,用来指定哪个识别库识别.
OptionIndex :整数型,选项索引,取值范围1~10
OptionValue :整数型,选项数值。


-----------以下一个函数用于计算数学表达式------------------
Private Declare Function Calculator Lib "WmCode.dll" (ByVal Expression As String,ByVal CalcResult As String) As Boolean
函数功能说明:计算数学表达式。失败返回空文本,成功返回计算结果文本。功能简单,只是用来计算那些需要填写计算结果的验证码。计算完成返回真,否则返回假。
函数参数说明:
Expression :文本型,数学表达式,只能计算加,减,乘,除,次方运算,支持小括号,中括号,大括号运算,支持负数运算。
CalcResult :文本型,计算结果,使用需要将一个足够长的空白字符串赋值给它。


-----------以下两个函数用于设置文本参数为unicode格式------------------
Private Declare Function UseUnicodeString Lib "WmCode.dll" (ByVal OptionIndex As Long,ByVal OptionValue As Long) As Boolean
函数功能说明:设置传入传出dll的各个文本类型参数是否使用unicode格式,一次设置在程序运行期间有效。设置成功返回真,失败返回假
函数参数说明:
OptionIndex :整数型,选项索引,取值范围1~2
OptionValue :整数型,选项数值。取值范围:0~1
参数详解:
        OptionIndex                  OptionValue
1.     传入是否使用unicode格式    取值范围:0~1   默认为0使用ansi格式,为1使用unicode文本
2.     传出是否使用unicode格式    取值范围:0~1   默认为0使用ansi格式,为1使用unicode文本

PS:如果要让DLL传入或传出返回Unicode格式的字符文本,必须在加载字库之前先调用这个API,使用后所有API的文本参数【传入】或【传出】都将被视为unicode文本。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2019-8-4 13:07:26 | 显示全部楼层

评分

参与人数 1金钱 +10 收起 理由
king8462 + 10 很给力!

查看全部评分

 楼主| 发表于 2019-8-3 19:32:06 | 显示全部楼层
;使用识别验证码的dll
$AntiDll = DllOpen ("WmCode.dll") ;识别的dll路径
;$LocalCDS = @ScriptDir&"\blog.ce.cds";识别库的路径
$index = DllCall($AntiDll,"int","LoadWmFromFile","str",@ScriptDir&"\jxjy.dat",'163')


$ImgURL = @ScriptDir&"\1.jpg"
$CdsResult = DllCall($AntiDll,"int","GetImageFromFile","int",$ImgURL,"str",0)

DllClose($AntiDll) 
msgbox(0,'识别网页验证码结果',$CdsResult[2])

论坛里抄的这个不行,高手请帮忙修改一下。
发表于 2019-8-3 23:46:14 | 显示全部楼层
$index = DllCall($AntiDll,"int","LoadWmFromFile","str",@ScriptDir&"\jxjy.dat",'str', '163')
$CdsResult = DllCall($AntiDll,"int","GetImageFromFile","str",$ImgURL,"str", 0)
 楼主| 发表于 2019-8-4 08:48:24 | 显示全部楼层

$index = DllCall($AntiDll,"int","LoadWmFromFile","str",@ScriptDir&"\jxjy.dat",'str', '163')

你好,按你的代码,$index返回还是“0”。识别不到验证码啊。
发表于 2019-8-4 13:14:28 | 显示全部楼层

LZ后面那句没改 "str",$ImgURL …

评分

参与人数 1金钱 +10 收起 理由
king8462 + 10 赞一个! 谢谢A版的关注

查看全部评分

 楼主| 发表于 2019-8-4 18:55:47 | 显示全部楼层

谢谢!搞定了,早上可能是我电脑的问题。
发表于 2019-8-5 00:39:31 | 显示全部楼层
不错支持一下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 09:25 , Processed in 0.090316 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表