用Python+hackcaptcha破译12306图像验证码,信息安全之路

前言

今天是用h://github.com/CharlesPikachu/DecryptLogin

项目文档:

https://httpsgithubcomcharlespikachudecryptlogin.readthedocs.io/zh/latest/ 

pip安装这个包之后,你可以很轻松地实现各大网站的模拟登录操作,例如模拟登录知乎:

from DecryptLogin import login  lg = login.Login() infos_return, session = lg.zhihu(username='Your Username', password='Your Password') 

其中infos_return是一个字典对象,用于记录用户登录后的一些用Python+hackcaptcha破译12306图像验证码,信息安全之路

换句话说,在默认情况下,DecryptLogin库要求用户手动输入登录时遇到的验证码。

能不能让DecryptLogin自动处理验证码呢?

答案是当然可以,你只需要自己定义一个验证码处理函数,然后在登录的时候作为参数传入就ok了,示例代码如下:

from PIL import Image from DecryptLogin import login  '''定义验证码识别函数''' def crackvcFunc(imagepath):     # 打开验证码图片     img = Image.open(imagepath)     # 识别验证码图片     result = IdentifyAPI(img)     # 返回识别结果(知乎为数字验证码)     return result  lg = login.Login() infos_return, session = lg.zhihu(username='Your Username', password='Your Password', crackvcFunc=crackvcFunc) 

上面这些内容其实在项目文档里都有详细的介绍。

hackcaptcha包诞生了,一款主要服务于验证码自动识别的python第三方包,项目文档:

https://hackcaptcha-en.readthedocs.io/zh/latest/ 

因为开源hackcaptcha的主要目的是解决DecryptLogin库的验证码自动处理问题,所以hackcaptcha目前只支持两种类型的验证码自动处理,即数字(含英文字母)验证码以及12306的点击验证码。当然,以后会随着DecryptLogin库的更新而逐渐加入一些新的支持。你只需要pip安装这个库就可以开始使用它了(安装之前建议先提前在电脑上装好keras和对应版本的tensorflow):

pip install hackcaptcha 

对于数字验证码,hackcaptcha直接调用了百度的文字识别API:

https://ai.baidu.com/tech/ocr 

因为我看了一下:
用Python+hackcaptcha破译12306图像验证码,信息安全之路

用户每天可以免费调用这么多次,个人学习与玩耍使用完全是足够的

具体而言,你需要到上面那个网站上自己注册一个账号,并新建一个应用,从而获取到API Key和Secret Key就行了:
用Python+hackcaptcha破译12306图像验证码,信息安全之路

简单写几行代码就可以实现验证码识别的了:

from hackcaptcha.crackers import WebapisCracker cracker = WebapisCracker() infos_return = cracker.digital(imagepath='CAPTCHA IMAGE PATH', webapi_type='baidu', app_id='AppID', api_key='API Key', secret_key='Secret Key') 返回的结果格式为: {     'is_success': True,     'result': 'AFD2',     'error_msg': '' } 

对于12306的点击验证码,我查阅了网上的做法,一般就是把12306的验证码做一下图片分割:
用Python+hackcaptcha破译12306图像验证码,信息安全之路

然后分别训一个图片分类器和文字分类器就行了。所以我就直接拿来用了。只需要这样调用就行了:

from hackcaptcha.crackers import AlgorithmsCracker cracker = AlgorithmsCracker() infos_return = cracker.click(imagepath='CAPTCHA IMAGE PATH', algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5') 

返回的结果格式为:

{     'is_success': True,      'result': '1,2,5' } 

其中text.h5和object.h5这两个模型在这可以下载到:

https://github.com/CharlesPikachu/hackcaptcha 

我们可以结合DecryptLogin库来看下效果(请注意,下面的代码只适用于DecryptLogin版本号大于等于0.1.29的情况):

from DecryptLogin import login from hackcaptcha.crackers import AlgorithmsCracker  '''定义验证码识别函数''' def crackvcFunc(imagepath):     cracker = AlgorithmsCracker()     infos_return = cracker.click(imagepath=imagepath, algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')     return infos_return['result']  lg = login.Login() infos_return, session = lg.zt12306(username='用户名', password='密码', crackvcFunc=crackvcFunc) 

运行效果:
用Python+hackcaptcha破译12306图像验证码,信息安全之路

可以发现我们不再需要自己输入那令人头大的12306验证码,而直接调用训练好的模型进行自动识别输入即可实现12306的模拟登录操作了~

文章到这里就结束了,感谢你的观看,Python信息安全,下篇文章分享Python+Selenium破译淘宝滑块验证码破解

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

All done~私信获取完整源代码。。

往期回顾

用Python+Selenium破解春秋航空网滑块验证码,信息安全之路

用Python+Selenium破解B站滑块验证码,信息安全之路

简单实现入门级隐写术

版权声明:玥玥 发表于 2021-08-21 3:39:28。
转载请注明:用Python+hackcaptcha破译12306图像验证码,信息安全之路 | 女黑客导航