Erlo

Python高级爬虫实战,JS解密咪咕音乐登录参数分析

2020-08-11 15:00:28 发布   246 浏览  
页面报错/反馈
收藏 点赞

目标:分析咪咕视频登录参数(enpassword、fingerPrint、fingerPrintDetail)

工具:NodeJs + Chrome 开发者工具

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

许久没有水文了,闲来无事特来混混脸熟

 

enpassword

找到登录入口:

查找方式:

点击登录 —> 开启chrome开发者工具 -> 重载框架 —> 抓到登录包

如下:

加密参数寻找

清空之后,使用错误的账号密码登录。一共两个包两张图片。图片开源不看,具体看包,最后在authn包中看到了我们登录所加密过的三个参数,如下

海里捞针-找参数

在搜索框(ctrl + shift + F )下搜索enpassword参数,进入source File 发现link 93,name并未加密;那么就是在它的class 属性 J_RsaPsd中。再次找!

海里捞针-找参数、埋断点

找到三个 J_RsaPsd,每个都上断点,然后在点登录一下

encrypt:加密函数,b.val加密对象(输入的密码)

将其扣出来!

为什么扣这里?因为这里为加密处!由明文转为密文。那我们拿到这些就以为着拿到了加密的函数。就可以自己实现加密

c = new p.RSAKey;
c.setPublic(a.result.modulus, a.result.publicExponent);
var d = c.encrypt(b.val());

该写如下:(js丫)

虽然我们加密的函数已经找到了,but,我们是在自己的环境下并不一定有这个函数(c.encrypt)。所以现在需要去找c.encrypt

新问题:p.RSAKey;没有定义;回到chrome进入p.RSAKey-(选中点击进入f db())

进入f db()扣出这个方法,然后改写

寻找a.result.modulus, a.result.publicExponent两个参数,

其实是publickey包返回的结果那么至此enpassword加密完成

补两个环境参数

 

 

1

2

window = this;

navigator = {};

fingerPrint、fingerPrintDetail参数破解

link480 下断点点击下一步,运行

运行一步, 进入RSAfingerPrint函数内,把o.page.RSAfingerPrint方法抠出来

在页面中观察a,b参数

观察发现:

其实a,b,就是我们的a.result.modulus, a.result.publicExponent,

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

rsaFingerprint = function () {

    a = "00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817";

    b = "010001";

    var c = $.fingerprint.details

        , d = $.fingerprint.result

        , e = c.length

        , f = ""

        , g = new m.RSAKey;

    console.log(a, b)

    g.setPublic(a, b);

    for (var h = g.encrypt(d), i = 0; e > i; i += 117)

        f += g.encrypt(c.substr(i, 117));

    return {

        details: f,

        result: h

    }

}

rsaFingerprint()

继续寻找;这两个

 

 

1

2

c = $.fingerprint.details

d = $.fingerprint.result

浏览器里面测一下,把他从console拿出来

 

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认