最近12306订票助手之类的软件很火,搞得XX部“专家”很抓狂。搞技术的人都知道,实现一个自动订票其实并非难事,不过是几个HTTP(S)操作,提交几个表单罢了。

但是最为关键的是表单中有一项是需要人工输入的,也就是验证码,验证码使用的初衷就是为了防止机器攻击。可惜XX部设计的验证码质量太差,攻破它实在不费多大劲。

【第一版本】

最开始XX部只设计了一种验证码,用于登录页面和订票页面,下面是笔者早期提取的样本:

分析一下其弱点:

1 背景太简单,可以轻易的二值化得到良好的二值图像

2 字体单一,没有做任何变形,只是位置有些变化

我们来看一下二值化的效果,固定阈值就够了:

要破解它只需要先找到字体,然后到验证码图像上匹配,得到最佳匹配位置和对应字母即可,具体情况代码中有。

【第二版本】

后来XX部在背景上做了点文章,看上去复杂了一点:

背景上多了两条固定颜色的线,看上去情况麻烦了,其实不然,用photoshop观察一下发现其实线与字的亮度是有明显差异的,可以大致过滤掉。

当然这时候不像原来处理得那么干净了。

【第三版本】

再后来,XX部增加了一种新的字体,两种验证码交替使用,以期防御攻击。唉,拿这么多钱就知道偷懒,光换字体不升级算法是不行的。当我发现自己的自动登录失效后,只用了两小时更新字体,代码稍作修改就搞定了。

下面贴张识别效果,总体识别率 > 90%

源码下载地址:

1 CSDN :

http://download.csdn.net/detail/renyou_hust/5014935

2 Google code:

svn checkout http://hack-12306.googlecode.com/svn/trunk/

12306 验证码识别源码相关推荐

  1. php短信接口加密_PHP短信接口、PHP短信验证码接口源码

    PHP短信接口.PHP短信验证码接口源码 时间:2016-06-13 11:53 来源:原创 作者:admin PHP短信接口文档源码,PHP发短信接口,PHP在线发短信,PHP微信发短信接口 /* ...

  2. 从零开始打造一个12306验证码识别系统

    12306验证码从简单的数字图片验证码进化到图形识别验证码,成功拦住了需要购票的民众,但并没有拦住机器,今天我们用一篇文章讲解如何从零开始设计并实现一套12306验证码识别系统,所有思路已成功实现并达 ...

  3. 验证码识别打码的常见问题及使用方法

    现在网络上很多人都在咨询,验证码识别打码是什么?验证码识别到底有什么用?自动打码是不是真的? 其实只要我们真正了解了验证码识别打码技术,也就不会被这样的问题烦恼了. 1.验证码识别打码是不是真是存在的 ...

  4. Android园区部队人脸识别源码门禁项目讲解

    Android园区部队人脸识别源码门禁项目讲解 这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别项目:部队人脸识别门禁系统. 大家都知道部队对人员管理安全要求是相当高的,很多保密的技 ...

  5. mnist 数据集的识别源码解析

    在基本跑完识别代码后,再来谈一谈自己对代码的理解: 1      前向传播过程文件(mnist_forward.py) 第一个函数get_weight(shape, regularizer); 定义了 ...

  6. python识别麻将牌_图像识别之麻将识别源码( 三 )

    图像识别之麻将识别源码( 三 ) 未经过允许不得转载,转载请联系我,如何联系,点我头像. 连载已经完结, 百度网盘测试APP下载地址: 提取码:pkbl 先见效果图,另外我已经上传到了抖音视频,想看N ...

  7. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  8. Android安卓麻将识别源码Demo( 三)

    Android安卓麻将识别源码Demo( 三) 未经过允许不得转载,转载请联系我,如何联系,点我头像. 连载已经完结, 百度网盘测试APP下载地址:  链接:https://pan.baidu.com ...

  9. 基于轻量级CNN的12306验证码识别分析系统

    在我很早的一篇文章中有写过图标型验证码识别的实践项目,这里主要是基于以往的实践经历做出的技术升级,包括:模型轻量化.界面开发.Grad-CAM热力图集成等. 话不多说,首先看效果: 基于CNN的轻量级 ...

  10. 12306验证码识别初尝试(3)——tesseract的长处与短处,使用百度文字识别与百度图片自动识别验证码并自动抢票,识别成功率10%

    12306验证码识别是我人生中"抢购"这一重大环节的第一步,所以我一定会把此环节写好,现在12306已经小小成功,接下来,我打算使用keras来深度学习解决12306抢票的问题,当 ...

最新文章

  1. shardingjdbc每月分表_shardingjdbc分库分表测试
  2. 【Android】SDDL刷机
  3. HDU4389(数位DP)
  4. redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
  5. oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例
  6. pitr 原理_PostgeSQL 数据库备份与恢复实验 (PITR)
  7. python3爬虫-通过requests爬取图虫网
  8. Kafka常见面试问题
  9. shell初学之nginx(域名)
  10. linux 数据库无法启动,【已回应】数据库无法启动,是怎么回事啊
  11. 鸿蒙系统原创,华为鸿蒙系统.docx
  12. 章节十六:编码和文件读写
  13. 日撸代码300行:第二天
  14. 力扣122题:买卖股票的最佳时机 II
  15. JQuery给指定的表格的输入框或其他组件赋值
  16. ios 获取是否静音模式_iOS音量和静音按键状态获取
  17. 阿里云服务器mysql开放远程连接步骤
  18. 小米手机解bl锁正规方法!
  19. 【备战十四届蓝桥杯 | 开篇】如何高效备战蓝桥杯
  20. JDK的安装与环境变量配置详细教程

热门文章

  1. 520表白小程序设计Python代码详解(PyQt5界面,B站动漫风)
  2. ue4 c++绘线 DrawLine
  3. 彩色图像处理之色彩学基础
  4. VB打造QQ批量登陆器
  5. 请别再使用 SimpleDateFormat 格式化时间了,DateTimeFormatter 更出色!
  6. 网页打印怎样去掉网址
  7. 0基础学php燕十八,燕十八PHP公益培训 PHP基础视频教程 (60集全)
  8. 圣彼得堡三大教堂_2020年9大最佳教堂网站建设者(适合初学者)
  9. sql server创建数据库代码模板
  10. 2020 GKCTF