京东滑块登录

声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!

前言

这次会讲解某东滑块登录的逆向分析流程,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可私信我。

js逆向步骤:

    通过接口获取两张验证码图片 ——>  处理图片 ——>  通过cv2 或者ddddocr计算出缺口的距离 ——>  模拟封装滑块的轨迹参数  ——>  逆向加密轨迹的参数 ——>  加密并请求验证接口----登录接口参数分析。 

一、分析请求流程。

1.滑块的请求流程

a.https://iv.jd.com/slide/g.html
输入账号密码后,会触发滑块,可在https://iv.jd.com/slide/g.html接口看到跟滑块背景图相关的信息。
参数:appId,e这两个参数需要填写,appId可以固定

params = {
   
   
        "appId": appId,
        "scene": "login",
        "product": "click-bind-suspend",
        "e": e,  # 检测浏览器指纹的,同一台电脑浏览器指纹相同,所以暂时可以固定,这个值是根据这个(https://gia.jd.com/fcf.html?)接口返回的,这个接口就是检测浏览器指纹,暂时不分析。
        "j": "",
        "lang": "zh_CN",
        "callback": "jsonp_0914357298388242"
    }

在这里插入图片描述根据图片知道,返回的重要的数据有:(bg,patch)滑块相关的图片,challenge 后面滑块请求需要用到。

b.https://iv.jd.com/slide/s.html:滑块请求验证接口。
参数:
d:轨迹加密。
c:g接口获取到的数据challenge,
appId:跟该接口相同,固定
e:跟该接口相同,可以暂时固定
s:接口https://seq.jd.com/jseqf.html?bizId=passport_jd_com_login_pc&platform=js&version=1返回,这里不去分析。
o:登录的账号

 params = {
   
   
        'd': d,
        'c': challenge,
        'w': '242',#'278',
        'appId': appId,
        'scene': 'login',
        'product': 'click-bind-suspend',
        'e': e,
        'j': '',
        's': s,
        'o': '123',
        'o1': '0',
        'u': 'https://passport.jd.com/new/login.aspx?',
        'lang': 'zh_CN',
        'callback': 'jsonp_04201456052783201',
    }

在这里插入图片描述

2.登录的请求流程

1.登录首页分析:https://passport.jd.com/new/login.aspx
在这里插入图片描述
图片中标注处,是后面接口要用到的参数。
2.https://seq.jd.com/jseqf.html:这个接口返回的数据是登录接口中生成参数aksParamsB的参数seqSid。
在这里插入图片描述
3.https://passport.jd.com/publicKey/init:返回的数据,是后面登录接口参数的加密密钥。
在这里插入图片描述
4.https://passport.jd.com/uc/loginService?登录接口:
在这里插入图片描述
参数:aksParamsU,aksParamsB。

2.整体分析

二、分析接口参数。

根据前面的分析,主要要分析的参数有轨迹加密d、登录参数分析:aksParamsU,aksParamsB。

1.参数d分析。

通过堆栈分析得到轨迹加密的地方
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

'd': a['getCoordinate'](b),

b就是轨迹。进入到getCoordinate函数,分析具体是怎么加密的。
加密文件,加密函数:
在这里插入图片描述
把这个加密文件整体复制出来,缺啥补啥。

2.参数:aksParamsU,aksParamsB。
进入堆栈找到参数加密的地方。
在这里插入图片描述
参数生成的位置:
在这里插入图片描述
根据堆栈往上分析:this.url,this.data是什么。
在这里插入图片描述
通过上图得知,
this.url:

loginUrl + "?uuid=" + uuid + "&" + location.search.substring(1) + "&r=" + Math.random() + "&version=2015",

实际是:

 url = "/uc/loginService" + "?uuid=" + uuid + "&" + '' + "&r=" + Math.random() + "&version=2015";

this.data:

 var d = {
   
   
            uuid: $("#uuid").val(),
            eid: $("#eid").val(),
            fp: $("#sessionId").val(),
            _t: $("#token").val(),
            loginType: $("#loginType").val(),
            loginname: $("#loginname").val(),
            nloginpwd: getEntryptPwd($("#nloginpwd").val()),
            authcode: b,
            pubKey: $("#pubKey"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值