当前位置:   article > 正文

顶象滑块非常简单的案例学习

顶象滑块

声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究

案例分析

目标案例:aHR0cHM6Ly93d3cudml2by5jb20uY24vc2VydmljZS9tb2JpbGVQaG9uZUF1dGhlbnRpY2l0eUNoZWNrL2luZGV4

  1. 对应接口和难点
    a的请求
    在这里插入图片描述

c1的第一次请求
在这里插入图片描述
c2的第二次请求
在这里插入图片描述
v1的请求
在这里插入图片描述

参数分析

观众老爷们最近有点忙,也没时间学习,这两天有时间了正好学一下顶象的滑块,这个非常弱化版的,主要是学一个思路。
通过修改发现,c值可以赋值为空,t值也是同理,ak是产品id,aid是dx-+时间戳加随机数,其他固定就行
在这里插入图片描述
通过里面的返回值可以知道p1和p2分别对应的应该就是缺口和图片,o是对图片的还原,sid是后面需要的
在这里插入图片描述
那么我们先来看图片的还原,我这边使用的canvas去下的断,可自行下断尝试,之前的滑块里面有讲过
在这里插入图片描述
那么我们继续看第一次v1的Param,通过initiator
在这里插入图片描述
我们可以看到通过断点发现他是通过对这些参数进行的加密
在这里插入图片描述
这里可以看到lid的生成就是时间加一个函数,我们直接扣下来就行,喜欢那个下面自取哈
在这里插入图片描述
lid的生成js代码

function lid() {
            for (var i = 32, a = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', u = [], f = 0; f < i; f++)
                u[f] = a['charAt'](Math['floor'](Math.random() * a['length']));
            return u['join']("")
        };

function get_lid(){
    return (new Date).getTime() + lid()
}
console.log(get_lid())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

python代码

import math
import random
  
def get_lid():
    a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    return "".join(a[math.floor(random.random() * len(a))] for _ in range(32))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

可以看到appKey是固定的我已经刷了很多次了
在这里插入图片描述
那么我们来看Param的加密,可以看抠出来的js或者python, 第一次就是这样了
在这里插入图片描述
js版本

var u = "=x1LItAH4sf8gp6ewnXQTiKuF_5EkC2m7WjdrM"
    , f = "UlGhvYo3aRzcq-VPyJBb9NZOD0S";

function y(r) {
    return r.split("").reverse().join("")
};
function encode(r, o) {
            if (!r)
                return "";
            for (var i, a, u, f, c, s, l, v, g = "", p = 0; p < r[(v = "htgnel",
            v.split("").reverse().join(""))]; )
                i = r['charCodeAt'](p++),
                a = r.charCodeAt(p++),
                u = r['charCodeAt'](p++),
                f = i >> 2,
                c = (3 & i) << 4 | a >> 4,
                s = (15 & a) << 2 | u >> 6,
                l = 63 & u,
                isNaN(a) ? s = l = 64 : isNaN(u) && (l = 64),
                g = g + o.charAt(f) + o['charAt'](c) + o.charAt(s) + o.charAt(l);
            return g
        }

function S(r) {
    var e = encode(JSON.stringify(r), y(u + f));
    return e
};

S({
    "lid": "", // lid
    "lidType": 1,
    "cache": true,
    "appKey": "" // appkey 固定的
}) // 自己填写入参
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

第二次的入参是, 除了lid是上面生成的,我们直接用就好其他基本都可固定,然后调用上面的加密即可,到这里两个c1都已经结束了
在这里插入图片描述
我们接着看v1接口里面的ac的函数
在这里插入图片描述
每次可以发现在加密完之后会重载,他就是在第一次的ua
在这里插入图片描述
开始发现是空
在这里插入图片描述
这里是他的检测,这个网站检测的比较少,基本就是熟悉下流程
在这里插入图片描述
基本都是围绕这app进行的,那么我们可以多看app
在这里插入图片描述
可以看到这个是第一次
在这里插入图片描述
我们可以看到下面就是指纹了
在这里插入图片描述
那么我们继续看sendSA,可以发现是对sa进行的加密,sa是通过recordSA,后调用app函数
在这里插入图片描述
这里可以看到他是对滑块缺口进行的加密
在这里插入图片描述
那么到这里就结束了!!!
可以看下熟悉下顶象的流程,第二次滑块的正常调度依然可通过。
我们下期再见!!!
拜拜!!!
在这里插入图片描述

效果展示

第一次的
在这里插入图片描述
二次验证的
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/527646
推荐阅读
相关标签
  

闽ICP备14008679号