初级的滑动式验证图片识别方案

1 abstract

验证码作为一种自然人的机器人的判别工具,被广泛的用于各种防止程序做自动化的场景中。传统的字符型验证安全性已经名存实亡的情况下,各种新型的验证码如雨后春笋般涌现。目前最常见的一种形式就是“滑动拼图式”

关键字:验证码,图灵测试,图像识别,python,破解

2 内容概述

关于滑动式验证,最早由国内某网络安全公司首次提出的行为式验证,以滑动拼图解锁的方式呈现在世人面前。然后大概过了好几年之后,各种各样的滑动式验证产品都出来了,那么这些看似一样的产品,它们的安全性到底如何呢?

本文特意挑选出了一些后来者的小厂商的滑动式验证来做下实验,仅从第一步的图像学上分析一下安全性。因为我的主技术路线是图像学,关于前端的js并不熟悉,所以就只在图像学上点到即止即可。仅供会一些自动化技术的同学提供一些知识补充吧。

由于研究的实验对象实在是太简单,所以本文涉及的一些图像学的知识也不难,基本上python的初级选手就可以跑通本程序。仅供大家学习学习。

3 研究对象

某小站点上由小厂商提供的“滑动式验证”:

使用python写一个简单的爬虫自动化脚本,将此网站上的验证码资源多请求几次,并保存到本地,观查图片特点。

一般情况下,这一步是必须的,多下载一些图片,很多规律是可以一眼看出的。比如,从公开的页面中,连续请求此验证的资源 100次,下载100张图片后。

一眼看上去,此验证的图片素材都只有一种模式,那么就放心了,因为这个问题就比较单一,而不是多模式下你必须要解决多个问题。

4 定性分析

将这种单一模式的图片筛选一张出来,如下:

发现如下特点:

  1. 和前端展示相关的图片有:方块位置提示图A,小方块B,完整背景图C。
  2. A图完全是由B和C合成

显然,设计这个验证图片的人没啥安全方面的经验,有如下两个产品细节没有注意:

  1. 对图片没做任何的特殊处理
  2. 对外公开提供了过多信息

于是使得识别此图片的位置变得极其简单

5 定量分析

在前面一小节中,我们只是直观的看到了这些图片的一些特别,但是要解答这个题目,还需要进行量化,量化后才能程序化,程序化后才能全自动化。

使用matplotlib工具打开此图片。量化得到如下参数:

  1. 图片整体规格:w:240,h:450
  2. 由上到下分为三部分,每部分高度为150

6 求解图片

很明显,只要将第一张图和第三张图相应的像素相减,神奇的事情就发生了:

“左上” 减去 “右下” 就得到 “左下”的结果。

这个时候,对x方向的R通道的像素点进行累加统计。

得到如下的统计图:

然后对这个曲线求一阶导数或者只要发现有个突变值超过最大像素值的某百分比时,即可得到最左边的那个y方向突变点的位置。

到此为止,此图片的位置已经成功解出。

下面是相应的python代码:

import numpy as np
def get_boundary(mask, axis, ratio=0.6):"""对灰度图的某个channel做像素统计"""sum_along_axis = np.sum(mask, axis=axis)max_value = np.max(sum_along_axis)bound_value = max_value * ratiobvalue = (sum_along_axis >= bound_value).astype('int8')return np.where(bvalue != 0)[0][0]def get_predict_ans(img):"""根据分类出来的图像,找到相应的图像位置传入二进制的图片,返回答案:param img::return:"""nd_img = np.array(img)w_pos = get_boundary(nd_img, 0)  # 根据分布图找到边界位置return w_pos

7 最后总结

由于我不会前端技术,所以我的工作就到此为止。

但是后来有位会前端的网友研究了一下那个网站的验证码前端代码,据说其防护措施也只有图片这一层,只需要把答案放到http的接口里面上传,再加个时间标记就能稳稳的过了。然后借鉴本文解图片答案的思路,基本上可以达到:1s通过60次,成功率大概70%吧

对滑动式验证有兴趣的同学,如果你们想练手的,可以多去找一些新入场这个领域的厂商试试,基本上新入场的团队的都会犯一些非常低级的错误,但是请只是技术上在本地自己机器上跑跑试试,安全领域有风险,请自爱

同时告诫一些自己想现在开始做滑动式验证码的厂商,如果投入不够还有相应的技术和产品积累不够,进入这个领域的时候,请慎重,因为你的不成熟的工作只会成为本系统最大的漏洞。

8 扩展阅读

可能有很多读者会觉得本文的内容不够干,希望来点更刺激有趣的,请稳步下面的合辑文章,满足你的好奇心。

《验证码识别技术-文章合辑》https://zhuanlan.zhihu.com/p/30871712

[验证码识别技术]-初级的滑动式验证图片识别相关推荐

  1. android声纹识别技术,基于Android平台的声纹识别系统的研究与实现

    摘要: 社会的发展越来越快,计算机技术的应用也愈来愈广,已经渗透到生活的各个方面.在快节奏.信息化的时代,需要识别和交互的应用日益广泛,要求验证身份的场合越来越多,迅速判定一个人的身份是一个非常重要的 ...

  2. python简单图片识别_用Python进行简单的图片识别(1)

    起因是这样的,我想买一个定焦镜头,但也不是必需品,可以长期观望购买.最初的想法是,写个程序,每天爬一下各大电商网站的价格,或者直接爬etao把该镜头的价格记录下来,突然有一个惊爆的低价,就发邮件通知. ...

  3. python图片识别验证码软件_基于python图片识别工具(图片识别,车牌,PDF,验证码)...

    先上图  不多说. 对于一般的用户来说识别率还是能达到百分之90以上. 已经打包成exe文件.windows用户可以直接使用.要软件的加我QQ python代码: # -*- coding: UTF- ...

  4. 人工智能 :眼纹识别技术大显神通,一眼认出你

    网络安全不仅需要打响"人民战争",更是科学技术问题.不管是网络欺诈还是对应的安全措施,都随着科技的发展表现出越来越高的科技依赖性.这其中,生物识别技术在互联网安全.信息认证方面扮演 ...

  5. 指静脉识别技术在安防行业的应用前景

    成都电子科大的一群理工宅男组团研究"指静脉识别",截至目前已斩获11个奖项.采用这一识别系统,只需将手指放在识别器上,短短70毫秒,就能验证出个人独有的手指静脉图像是否和身份信息相 ...

  6. 自然场景文本检测识别技术集合(转)

    本文及其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造,自2019年1月出版以来已重印3次. 书的购买链接 书的勘 ...

  7. 人脸识别技术在智慧城城市建设中的深度应用

    人脸识别技术在智慧城城市建设中的深度应用 本文由本人发表于<中国安防>第144期-2017年10月刊智慧城市栏目 佳都新太科技股份有限公司 徐建明 1.   人脸识别技术在智慧城市应用中的 ...

  8. 最新图文识别技术综述

    点击我爱计算机视觉标星,更快获取CVML新技术 本文为52CV粉丝牛小明投稿,原文为发表在中文科技期刊的论文.作者参考了 77 篇较有影响力和最新的论文,详尽地综述了图像文本检测与识别的系统.算法.数 ...

  9. 全球及中国生物识别技术产业应用趋势及投资风险分析报告2021-2027年

    全球及中国生物识别技术产业应用趋势及投资风险分析报告2021-2027年 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS- ...

最新文章

  1. Dev-Cpp\MinGW64\x86_64-w64-mingw32\include
  2. OkHttp3源码详解(三) 拦截器-RetryAndFollowUpInterceptor
  3. 谁是最可爱的人--环卫工人
  4. 人工智能时代的数据中心该怎么建?腾讯给出了自己的答案
  5. 解读容器的 2020:寻找云原生的下一站
  6. 从控制台输入一个数 num 与之前定义的数 n 进行比较
  7. php package manager,package命令的安装教程
  8. 程序开源与不开源区别_如何在公司中启动开源程序
  9. 不要安全要性能,禁用补丁提高CPU性能
  10. c语言万能头文件用不,万能头文件不能用?
  11. 基于 Elasticsearch 的站内搜索引擎实战
  12. 爬取QQ空间说说日志、好友个人信息并进行加密
  13. gavin中文是什么意思_Gavin[加文,盖温]的中文翻译及英文名意思
  14. ORAN C平面传输和基本功能
  15. hololens拍照
  16. 乐观中谨慎 招聘调薪现贫富差距
  17. ANSVC无功补偿装置在南京某高等院校中的应用
  18. WMS系统是什么——史上最全WMS介绍
  19. 电商公布的销售额都增长了,不过电商行业其实在去年已衰退了
  20. KNIME的数据库连接

热门文章

  1. python导入py文件-Python导入其他文件中的.py文件 即模块
  2. python编程基础是什么-Python面向对象编程基础解析(一)
  3. 在NVIDIA Jetson Xavier NX上安装llvmlite报错:No such file or directory: ‘llvm-config‘: ‘llvm-config‘
  4. 从0到1演示用 Git Rerere 自动解决冲突
  5. 安装python3.7和PyCharm专业版
  6. OpenGL + VS2015 + Windows10配置
  7. 【读书笔记】iOS-属性
  8. 基于MD5的增强型摘要算法
  9. luogu 3806
  10. jQuery图片轮播