Js逆向实现滑动验证码图片还原的示例代码


Posted in Javascript onMarch 10, 2020

本文列举两个例子:某象和某验的滑动验证

一、某验:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s

未还原图像:

Js逆向实现滑动验证码图片还原的示例代码

还原后的图:

Js逆向实现滑动验证码图片还原的示例代码

从服务端请求来的图片是打乱后的,给用户看的时候是完整的,这个过程肯定是运行了某段js代码,将打乱的图片进行还原操作。所以我们需要找到这段js,然后还原它的代码逻辑,实现图片的还原操作,找到缺口距离,实现滑动操作。

如果你仔细观察的话,你会发现还原后的图它是canvas生成出来的

Js逆向实现滑动验证码图片还原的示例代码

那你应该会想到,那段js中会生成canvas,然后使用它下面的一些方法,实现图片的还原操作,所以我们需要知道他啥时候生成canvas,找到位置,然后慢慢往下调试,找到还原代码。

这时我们就需要使用油猴插件,进行hook了。如果对油猴不了解的同学,可以谷歌百度下,学习下,这是非常有用的,代码如下:

// ==UserScript==
// @name     hook createElement
// @namespace  http://tampermonkey.net/
// @version   0.1
// @description try to take over the world!
// @author    朱宇
// @match    *://*/*
// @grant    none
// ==/UserScript==

(function() {
  'use strict';

  // Your code here...
  let _createElement = document.createElement.bind(document);

  document.createElement = function (elm) {
    console.log("createElement:",elm);
    if (elm === "canvas") {
      // debugger;
    }
    return _createElement(elm);
  }
})();

我们现在来看看效果,刷新页面:

Js逆向实现滑动验证码图片还原的示例代码

那我们就可以能快速定位到创建canvas的位置了,

Js逆向实现滑动验证码图片还原的示例代码

下面就是慢慢分析代码了,具体就不多说了

Js逆向实现滑动验证码图片还原的示例代码

Js逆向实现滑动验证码图片还原的示例代码

Js逆向实现滑动验证码图片还原的示例代码

这个例子主要就是对油猴插件(hook)的使用吧。

二、某象:aHR0cDovL2Nkbi5kaW5neGlhbmctaW5jLmNvbS9jdHUtZ3JvdXAvY2FwdGNoYS11aS9kZW1vLw==

同样的验证码图片还原也是使用canvas生成的,如果使用上面的方式的话,没啥效果的

Js逆向实现滑动验证码图片还原的示例代码

但是通过search关键字canvas还是能过发现一些猫腻的。

Js逆向实现滑动验证码图片还原的示例代码

Js逆向实现滑动验证码图片还原的示例代码

Js逆向实现滑动验证码图片还原的示例代码

Js逆向实现滑动验证码图片还原的示例代码

好了,两个例子就是这样了,具体还原代码,有兴趣自己去实现吧。

到此这篇关于Js逆向实现滑动验证码图片还原的示例代码的文章就介绍到这了,更多相关Js逆向滑动验证码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS类中定义原型方法的两种实现的区别
Mar 08 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
基于jQuery实现收缩展开功能
Mar 18 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
浅谈JS的基础类型与引用类型
Sep 13 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
javascript 的变量、作用域和内存问题
Apr 19 Javascript
vue中echarts3.0自适应的方法
Feb 26 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
基于Webpack4和React hooks搭建项目的方法
Feb 05 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 #Javascript
jquery实现烟花效果(面向对象)
Mar 10 #jQuery
非常漂亮的js烟花效果
Mar 10 #Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 #Javascript
微信小程序实现搜索功能
Mar 10 #Javascript
原生JS实现烟花效果
Mar 10 #Javascript
JS实现iframe中子父页面跨域通讯的方法分析
Mar 10 #Javascript
You might like
如何正确理解PHP的错误信息
2006/10/09 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
理解javascript回调函数
2014/12/28 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python手机号码归属地查询代码
2016/05/04 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
python3爬取各类天气信息
2018/02/24 Python
python增加图像对比度的方法
2019/07/12 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
python操作excel让工作自动化
2019/08/09 Python
python剪切视频与合并视频的实现
2020/03/03 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
党员党性分析材料
2014/02/17 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书