声明:本文只作学习研究,禁止用于非法用途,否则后果自负。如果侵权到了您的权益,请立即联系我删除!
前言
这次来分析一下七麦数据的analysis加密。
有什么写的不好的地方请多多指教😛。
目标网站:aHR0cHM6Ly93d3cucWltYWkuY24vYW5kYXBwL3NoZWx2ZXMvYXBwaWQvNTM4ODE3MA==
抓包分析
老规矩,还是先抓个包看看。
这一串字符串显然不是什么好东西😁,这次分析的目标就是这个analysis
。
加密分析
寻找加密位置
先打上xhr
断点,然后跟栈走到这里,
然后单步调试(后面是个异步,要慢慢跟),一直跟到这里面,
这个a
和前面抓包的url
里面的那一串很像,有木有😎。
加密逻辑分析
找到加密位置,就好办了,接下来就是分析是如何加密的。
直接从a
入手,
a = (0, n.cv)((0, n.oZ)(r, l))
r
的处理在这一部分,
Object.keys(e.params).forEach((function(t) {
if (t == h)
return !1;
e.params.hasOwnProperty(t) && r.push(e.params[t])
}
这一段代码是先将params
里的值push
到r
里,
r = r.sort().join("")
然后将r
拼接成字符串,
r = (0, n.cv)(r)
看看这个n.cv
方法是干嘛的,
就是做一个Base64编码
。
r += d + e.url.replace(e.baseURL, ""),
r += d + o,
r += d + 1
d
的值是'@#'
,o
在上面有定义。
这段代码就是继续往r
后面添加内容,最终的r
如下所示:
那l
是什么呢?
控制台打印看到l
是一串字符串。往上找到定义它的地方:
var l = (0, n.nF)("qimai|Technologyx", 1)
跟进去看看,
r
和l
都知道了,再看看n.oZ
是啥(n.cv
方法前面已经说过了)。
n.oZ
方法:
function g(e, t) {
t || (t = s());
for (var a = (e = e.split("")).length, n = t.length, o = "charCodeAt", r = 0; r < a; r++)
e[r] = i(e[r][o](0) ^ t[(r + 10) % n][o](0));
return e.join("")
}
加密的逻辑知道了,那么下面就是愉快的扣代码环节🤗。
扣完后运行的效果如下: