如有侵权,请联系我删除
1、引言
本文章只做分析,不提供源码
2、分析
首先看一下登录链接和需要什么参数
登录链接 参数1 参数2好了,看login的参数初步我们需解决(token, password, rsakey, ds, tk, dv, fuid, sig, shaOne, rinfo)
参数太多了,我们一个一个参数进行分析(注:下面分析的参数返回值不一定和上图的一样,原因是我边调试边写文章)
2.1 token参数生成
tokentoken的参数需要解决的有(gid, sig, shaOne)
先看比较简单一点的gid是怎么生成的
全局搜索发现只有三个js出现gid
全局搜索gid发现gid引用的是下图这个方法
gid生成还是通过全局搜索方法找shaOne参数
sig和shaOne参数生成好了,找到这我们验证下是否是在这个函数生成的,清除缓存强制刷新页面
和上图加密后的值一样,确定是从这个函数加密出来的
剩下的就是常规的操作了,一步一步扣代码就好了。
2.2 password参数生成
再生成password参数之前先要找到rsakey是哪里生成的
rsakey rsakey可以看出password就是rsa算法加密出来的
password加密2.3 ds和tk参数生成
login的ds和tk他是由viewlog接口返回的,现在我们看下viewlog接口需要什么参数,由下图看起来我们需要解决(as,fs, sb,tk)参数
可以看到as是由viewlog接口,那上一个viewlog是怎么有as的呢?现在我们清除缓存再刷新页面看看
as参数接口发现只需传ak参数就可以获取as返回值,注:虽然这个接口也返回了ds和tk,但这两个值不是login接口的
我们先定位到生成viewlog参数的地方,全局搜索viewlog
然后我们看下sb参数是由o赋值的,json格式化一下
mv 好像是鼠标移动的像素点,cr好像是一些页面参数
rzData初始化的地方 sb参数生成的地方找到sb参数生成的地方,代码我就不详细说了
而fs是由aes加密生成出来的,key是as加appspi0,values是sb
tk参数则是上一个viewlog返回值
ds和tk总结:
1. 首先访问viewlog接口。参数ak=31a4dfdeb6509f5257bcac99b7be676a
2. 再访问viewlog接口, 参数如下:
as=上个viewlog接口返回的as
fs=通过aes加密,key是as加appspi0,values是sb
sb=鼠标移动的像素点,以及一些浏览器参数,详细请看sb参数生成的地方
tk=上个viewlog接口返回的tk
2.4 dv参数生成
通过全局搜索定位到dv赋值的地方,发现是window.LG_DV_ARG.dvjsInput进行赋值的
再次通过全局搜索dvjsInput关键字,定位到生成的地方
通过堆栈,找到e的参数生成
后面就靠自己扣代码了
2.5 fuid 和rinfo参数生成
通过fuid = 关键词找到fuid生成的地方
浏览器指纹
总结,fuid参数:先生成浏览器指纹,通过aes加密,rinfo:将fuid参数传入_0x2ca40c函数进行加密
如不知浏览器指纹是什么请自行百度
2.6 sig, shaOne
请参考2.1 token生成,只是传入的参数不一样而已
3、Python代码
个别Python代码
4、测试
5、js转Python代码注意的点
5.1 &,>> 需要通过ctypes.c_int库执行
5.2 >>> 需要js2py第三方库进行转换
网友评论