设置星标,好文不错过!
咸鱼又来练手了,需求在这:
![5063c1d1069f9ec64920b4a91ac8e07d.png](https://img-blog.csdnimg.cn/img_convert/5063c1d1069f9ec64920b4a91ac8e07d.png)
想想有点激动:
分析请求
用浏览器抓一波登陆包:
![86dbee1168ff8376d0350391bc30ec3a.png](https://img-blog.csdnimg.cn/img_convert/86dbee1168ff8376d0350391bc30ec3a.png)
可以看到有 _abr_
和 beibeitoken
两个加密参数。
我们再找找发现beibeitoken
是上一个请求返回的:
![1978a40faff7ed98e7ad98b92ddadfbe.png](https://img-blog.csdnimg.cn/img_convert/1978a40faff7ed98e7ad98b92ddadfbe.png)
好像难度一下减少了一半。
定位加密位置
还是老套路,搜就完事了:
![37e0405b2177d3ace9f6a14998839aa7.png](https://img-blog.csdnimg.cn/img_convert/37e0405b2177d3ace9f6a14998839aa7.png)
通过关键字就找到一个相关文件,先进去看看。
![df1271bfe5f52d226bdfae67e193ea08.png](https://img-blog.csdnimg.cn/img_convert/df1271bfe5f52d226bdfae67e193ea08.png)
先打上断点,重新登录一下,成功进入断点说明位置十有八九是找到了,F11进去看看里面的加密逻辑是什么样的。
![bd33fdde2eb5e064af950031e1b547d9.png](https://img-blog.csdnimg.cn/img_convert/bd33fdde2eb5e064af950031e1b547d9.png)
看上去逻辑还蛮简单的,就是先这样再那样然后拼接在一起返回回来,完事儿~
分析加密
我们一个个跟进去研究下:
![64410595c83b244f033e3f9f12e99050.png](https://img-blog.csdnimg.cn/img_convert/64410595c83b244f033e3f9f12e99050.png)
u,d,a,e,s
这几个加密都可以通过上图的方法追踪到对应的加密。
这里我们主要研究f
与m
的加密逻辑。
先看看f
的加密逻辑:
1var f = d.length ? (0,l["default"])(d.join("&")) : ""
这里跟进去看看l["default"]
是什么:
![4fdd9d57e5318ba5552a2bf12d81f019.png](https://img-blog.csdnimg.cn/img_convert/4fdd9d57e5318ba5552a2bf12d81f019.png)
这里的e
是初始化加密算法,我们再跟进去看看:
![3fbaf0384cf0a5a28ef0a11a530a0883.png](https://img-blog.csdnimg.cn/img_convert/3fbaf0384cf0a5a28ef0a11a530a0883.png)
![273581654ef2eda474c11da430b30a59.png](https://img-blog.csdnimg.cn/img_convert/273581654ef2eda474c11da430b30a59.png)
看到这里我已经不怎么想扣代码了,这么多乱七八糟的什么东西,要是真抠出来估计头发要掉一半。
而且这个代码看着也不像自写的算法,估计也是套的通用的那几种算法,所以我开始翻之前扣过的代码,果然让我找到了:
![9ab4c40d5464f6359617b3669213d01f.png](https://img-blog.csdnimg.cn/img_convert/9ab4c40d5464f6359617b3669213d01f.png)
上面的代码是不是长得有点像,为了验证这个想法我把js里关于加密的代码扣下来look look
![b5ac4e48cbd912bbba4036bbbce551c2.png](https://img-blog.csdnimg.cn/img_convert/b5ac4e48cbd912bbba4036bbbce551c2.png)
不得不说好的编辑器可以让你事半功倍,看到图中划线的地方这个参数的加密方法就一目了然了。
我们可以直接把它改成Python实现:
from hashlib import md5
def md5value(s):
a = md5(s.encode()).hexdigest()
return a
接下来继续分析m
的加密方法:
1m = (0,c["default"])(g, "ytU7vwqIx2UXQNsi");
有了上面的铺垫,我们继续追进去分析一波:
![7459f7325eb4ed67d2256f803b18e90a.png](https://img-blog.csdnimg.cn/img_convert/7459f7325eb4ed67d2256f803b18e90a.png)
接下里就是编辑器表演的时候了
![a81e621668bf3a94dc99c968c1359f8e.png](https://img-blog.csdnimg.cn/img_convert/a81e621668bf3a94dc99c968c1359f8e.png)
好了,到这里就破案了,接下来你可以用Python实现也可以直接使用Node的CryptoJS加密实现。
下次练(tou)手(tu)再见~
推荐阅读:JS逆向 | 记一次翻车的练手经历Python爬虫进阶必备 | RSA 加密案例解析汇总(一)Python爬虫进阶必备 | 关于 AES 的案例分析与总结(一)Python爬虫进阶必备 | 关于AES 的案例分析与总结Python爬虫进阶必备 | MD5 hash 案例解析汇总(一)Python爬虫进阶必备 | 关于MD5 Hash 的案例分析与总结Python爬虫进阶必备 | XX同城加密分析Python爬虫进阶必备 | XX快药 sign 加密分析与加密逻辑复写Python爬虫进阶必备 | X笔网密码加密分析Python爬虫进阶必备 | X中网密码加密算法分析Python爬虫进阶必备 | 极X助手加密算法分析Python爬虫进阶必备 | X博密码算法扣取+如何去扣取一个完整的逆向案例Python爬虫进阶必备 | X天下与XX二手房密码加密分析Python爬虫进阶必备 | X咕视频密码与指纹加密分析
实战案例浅析JS加密 - 基础总结篇
实战案例浅析JS加密 - RSA与XXTEA
实战案例浅析JS加密(一) - DES与Base64