【JS逆向】XX快药 sign 加密逆向分析探索!

某快药sign签名算法逆向解析,JS代码没有混淆,比较直白,稍微能看懂js代码,能够 console.log 打印输出,再加上耐心,基本上都是可以调试出来。

不知道是不是网站很老,没有维护了,感觉sign直接复制过去是可以拿到数据,现在网站几乎没有多少数据了,不过逆向解析过程可以学习参考练手使用。

除了md5加密,还有字典值获取,循环,字符串拼接等等,有写过都能看出来。

网址:

代码语言:javascript
复制
aHR0cDovL3d3dy5kZGt5LmNvbS9jb21tb2RpdHkuaHRtbD9kZGt5Y2FjaGU9YTdiMTllODc5ZDJmMmYyNzlkMzU2ZjVhZmE2ZDVjZmY=
  1. 直接搜关键字 sign 看到可疑的js文件

2.点开js,格式解析,进入看看

3.继续搜索关键字 sign 有四个匹配项

4.找到最可疑的js代码段很明显

可以通过js代码:

代码语言:javascript
复制
for (var y = t.get("method") + p + r, v = MD5(y), k = e + "?sign=" + v, w = 0; w < l.length; w++)
                (t.get(l[w]) + "").indexOf("+") >= 0 || -1 != (t.get(l[w]) + "").indexOf("&") ? k += "&" + l[w] + "=" + encodeURIComponent(t.get(l[w])) : "pageUrl" == l[w] ? k += "&" + l[w] + "=" + encodeURIComponent(t.get(l[w])) : k += "&" + l[w] + "=" + t.get(l[w]);
            return k

很直白的看到 sign 的生成过程:

代码语言:javascript
复制
y = t.get("method") + p + r, 
v = MD5(y), 
sign=v,

5.我们在 return 处打上断点,看看值为多少

6.通过打上断点,刷新调试后,各个值都显现出来了

7.尝试抠出关键js代码段

8.取对应的参数的值

9.console.log 打印输出 各个值

python 中 md5 加密的使用:

代码语言:javascript
复制
import hashlib
import time
import json

def Md5(password):
md5 = hashlib.md5()
md5.update(password.encode('utf-8'))
return md5.hexdigest()