js逆向学习之旅——某书cookie加密

北京的夏天,外边热,屋里冷(公司开空调开的是真的狠),晚上还有蚊子大战。。搞得我最近休息不好,超容易烦躁。

近俩月我一直在折腾这个某书,上班一坐到工位前就开始恶心。可是为了拿薪水,我不得不忍着。。

啊,开始吧,铁汁儿!

我研究的是web端,接口数据是有缺失的(评论数、收藏数等等),需要这些数据童鞋可以走了。

以(https://www.xxx.com/discovery/item/60c348810000000001024506)为例(仅供学习交流,请勿用作商用

1. 前期研究

    抓过app端的应该知道哈,抓不到数据,我就直接略过了,小程序呢,得登录,我也就略过了,web端只需要cookie和ip,这就相对简单不少,所以大佬们有其他的途径,记得来艾特我让我也学学

2. chrome抓包及分析

    我们先正常走一遍,发现返回302,然后一系列链接后,出现了一个响应状态码200的请求

第一次请求302
最后请求200

然后我们对比一下这两次的请求头,只是cookie不一样,然后自己模拟一下请求,发现cookie中只需要参数timestamp2的值,那我们就全局搜索一下,看是否其他请求有返回

全局搜索timestamp2的值

如上图,timestamp2是由一个post请求响应头返回的,再看一下请求体

post请求体

一个id值,一个sign值,这里的id值是变化的(可以换一个ua自行尝试),sign基本不变(我后续解释),所以再全局搜索下id的值,搜不到,那就只能是js加密生成的,看请求的referer定位到web-login/canvas这个链接,但是304没有返回内容,post之前也没有js文件,所以我们清空application,清空network,打开xhr断点,刷新。

清空cookie,打上xhr

断点落在了187行,ctrl + f 搜索 ~~~  ,有sign参数特征,再往下看,u函数里调用了c + "hasaki" (截图截不全自己看下哈) ,且有返回值,我们在3648、3709行下断点

3648下断点
3709下断点

然后放开断点走一下

id值已生成—u函数的返回值

此时id值已经生成了,u函数传入的t,console输出一下,如下图,t的值就是post请求中sign的值+"hasaki",u函数返回值就是id值

console输出

所以我们可以把这段js抠出来,改吧改吧,然后模拟。

py模拟加密

3. sign值不变的原因

    我另外再说下为什么sign那一堆字符串的值基本不变。。有顾虑的其实fp:的值,因为其他除了ua都不变,fp值的生成是document创建了一个canvas对象n,转成了image/jpeg,最后用f函数加密成32位的字符串,这段js也可以抠出来,注意一下,f函数返回那块有一个E函数,其实是不足8位前补0,就自己定义一下就行,示例在下图

canvas对象创建
console输出
不足8位前补0js实现




最后,我还是要放几张我的两个大宝贝的照片,哈哈哈,没办法,他俩真的跟我太亲了。


我的小狗崽


我的小狗锤


锤锤真的看着就傻
精神小妹儿


hiahia~~

你可能感兴趣的:(js逆向学习之旅——某书cookie加密)