验证码破解没有训练集?我教你生成一万个!

简介: 验证码破解没有训练集?我教你生成一万个!

前言

对于验证码破解,我在去年写过一篇文章我深度学习0基础,还训练出一个识别验证码模型!,并且把代码放在GitHub上,GitHub地址大家就直接访问前面那篇文章就知道了。最近有些GitHub上过来的小伙伴问我各种各样的问题,其中有一个就是如何生成训练所需要的数据集,这里也就是指验证码。

第一想到的就是通过一些类库生成与需要破解的验证码类似的数量级,当然这会花费你一定的时间。今天我给大家推荐一个python生成验证码的第三方库,并且我们来生成自己的数据集。


captcha

下载:


pip install captcha


如何生成验证码呢?我直接给大家上代码:


from captcha.image import ImageCaptcha
import random
list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
# 定义验证码尺寸
width, height = 170, 80
#生成一万张验证码
for i in range(10000):
    generator = ImageCaptcha(width=width, height=height)
    # 从list中取出4个字符
    random_str = ''.join([random.choice(list) for j in range(4)])
    # 生成验证码
    img = generator.generate_image(random_str)
    # 在验证码上加干扰点
    generator.create_noise_dots(img, '#000000', 4, 40)
    # 在验证码上加干扰线
    generator.create_noise_curve(img, '#000000')
    # 将图片保存在目录yzm文件夹下
    file_name = './yzm/'+random_str+'_'+str(i)+'.jpg'
    img.save(file_name)


关于每一句代码的意思,我都写在注释里了,所以这里不会过多的阐述。不过上面的ImageCaptcha还可以定义一些参数:


1.jpg


从源码中我们可以看到还可以定义字体、字体大小,当然这个根据你所要破解的验证码来决定。最后大家看下我生成的验证码照片:


2.jpg


3.jpg


总结

其实大家可以发现python的这个库并没有想象的那么强大,这里我要给大家推荐另一个库,只不过它不是python的,而是Java的,它所能设置的参数更加的详细。如果本文超过20在看,下篇文章我将详细的给大家介绍。有关于验证码训练的教程,看我我深度学习0基础,还训练出一个识别验证码模型!这篇文章。

相关文章
|
数据安全/隐私保护
stegano(图片隐写、摩斯密码)
stegano(图片隐写、摩斯密码)
112 0
|
数据安全/隐私保护 Python
BUUCTF 变异凯撒 1
BUUCTF 变异凯撒 1
253 0
|
存储 安全 数据库
你的密码安全吗?这三种破解方法让你大开眼界!
密码破解,是黑客们最喜欢的玩具之一。当你用“123456”这类简单密码来保护你的账户时,就像裸奔一样,等待着黑客的攻击。所以,今天我们就来聊聊密码破解知识,看看那些常见的密码破解方法,以及如何防范它们。
943 0
你的密码安全吗?这三种破解方法让你大开眼界!
|
算法 安全 网络安全
网络安全实验三 古典密码
网络安全实验三 古典密码
174 0
|
存储 机器学习/深度学习 人工智能
详解验证码与打码平台的攻防对抗
众所周知,验证码的出现是为了区分人和机器,但随着科技的发展,黑产从业者的可图之利增多,验证码的战场也进入了一段破解与抗破解的持久博弈。
460 0
详解验证码与打码平台的攻防对抗
|
安全 数据安全/隐私保护
弱密码检测又没过?教你一键设置高强度随机密码
有时候为了简单,总喜欢设置123456的弱密码,但是这种密码过于简单,不太安全。
178 0
|
人工智能 计算机视觉 Python
|
存储 算法 安全
程序员如何用Python编程暴力算法破解凯撒密码
  破解凯撒密码可以用到一项密码分析技术,叫作暴力算法(brute-force),它的攻击是通过尝试每一种可能解密密文的密钥实现的。没有什么能够阻挡密码分析人员猜测密钥、用密钥解密密文、观察输出,并在没能破解出密文的情况下寻找下一把密钥。正因为这样的暴力算法对凯撒密码来说过于有效,所以在实际应用中根本不应该使用凯撒密码去加密一段秘密信息。   在理想的情况下,一段密文不会落入任何人的手中,然而Kerckhoffs原则(以19世纪密码学家Auguste Kerckhoffs命名)表明,一段密文即使在所有人都知道来源且某些人可能得到的情况下,也应该保持其安全性。20世纪时,数学家Claude S
458 0