MiGu 登录参数分析
目标:分析咪咕视频登录参数(enpassword、fingerPrint、fingerPrintDetail)
工具:NodeJs + Chrome 开发者工具
许久没有水文了,闲来无事特来混混脸熟 源码在此,欢迎白嫖,star 就更好啦
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 丫)
1 |
function getPwd(pwd) { |
虽然我们加密的函数已经找到了,but,我们是在自己的环境下并不一定有这个函数(c.encrypt)。所以现在需要去找 c.encrypt 新问题:p.RSAKey;没有定义;回到 chrome 进入 p.RSAKey-(选中点击进入 f db()) 进入 f db()扣出这个方法,然后改写 寻找 a.result.modulus, a.result.publicExponent 两个参数, 其实是 publickey 包返回的结果那么至此enpassword加密完成 补两个环境参数
1 |
window = this; |
fingerPrint、fingerPrintDetail参数破解
link480 下断点点击下一步,运行 运行一步, 进入RSAfingerPrint函数内,把 o.page.RSAfingerPrint 方法抠出来 在页面中观察 a,b 参数 观察发现: 其实 a,b,就是我们的a.result.modulus, a.result.publicExponent,
1 |
rsaFingerprint = function () { |
继续寻找;这两个
1 |
c = $.fingerprint.details |
浏览器里面测一下,把他从 console 拿出来