怎么做招聘有哪些网站,工业设计app,wordpress 翻页电子书,做app一般多少钱网址#xff08;加密后#xff09;#xff1a;aHR0cHM6Ly93d3cuaWNpYmEuY29tL3RyYW5zbGF0ZQ 文章目录 抓包sign值结果加密 逆向sign值第一步第二步1.2.3. 解密content第一步1.2.3. 抓包
F12 - 翻译框输入spider - 点击Fetch/XHR - 找到接口 index.php? 开头的…网址加密后aHR0cHM6Ly93d3cuaWNpYmEuY29tL3RyYW5zbGF0ZQ 文章目录 抓包sign值结果加密 逆向sign值第一步第二步1.2.3. 解密content第一步1.2.3. 抓包
F12 - 翻译框输入spider - 点击Fetch/XHR - 找到接口 index.php? 开头的接口
得到如下界面:
sign值 结果加密 逆向sign值
经过测试sign是与单词有关的现在进入代码进行跟栈
点击 发起程序 经过逐个查看takeResult 处应该是加解密的地方
点击跳转 跳转到 v 开头的行在这里下个断点重新输入spider浏览器会在这里断住
仔细观察右边的作用域发现出现了sign的值 由此可知sign的值是r的值故在上面的r处打上断点重新输入spider
第一步
var r u()(6key_web_new_fanyi.concat(s.LI).concat(t.q.replace(/(^\s*)|(\s*$)/g, ))).toString().substring(0, 16);(“6key_web_new_fanyi”.concat(s.LI).concat(t.q.replace(/(^\s*)|(\s*$)/g, “”)) 经过多次测试,s.LI是 6dVjYLFyzfkFkk 先看这段,别看他又臭又长,其实进行的操作只是将s.Li和t的q值加入到6key_web_new_fanyi后,而查看作用域可以发现, t.q spider 所以这段的结果就是 6key_web_new_fanyi6dVjYLFyzfkFkkspider,其中spider就是你输入的词 经过多次测试,这个是定值,也就是说,u()函数的参数是一个定值 u() 在进入e函数时,得到如下函数: function(e) {return function(t, r) {return new e.init(r).finalize(t)}
}这里面的e.init®并无任何作用,只是起到初始化进行迷惑我们的操作,所以直接不看,现在我们需要进入finalize()函数,因为这个函数才是接收主要参数的函数,此前任何和init有关的函数都不是我们需要的finalize函数 进入主要函数之后,我们会看到,在init函数之后,会进入reset函数
在reset之后,我们继续下一步,会进入_doReset函数 这里我们可以清楚的看到,使用的是MD5加密算法,而_hash对于我们来说并没有任何用处,所以我们不需要他,只需要知道这个是MD5加密就行
在知道u()函数具体是做什么的之后,可能会有如下疑惑: 为什么我们在控制台输出u()(定值)后,会需要toString()才能变为密文,我们只需要知道,在js中,实现md5加密后需要加上toString()来完成这一神奇操作,而在python中,只需要简单的进行md5加密后就可以得到与之一样的密文 .subString(start: end) 这个就是将字符串进行切片,从start到end,且不包含end,所以我们需要用到的其实只是密文的前16位 进行到这里,我们只是完成了sign加密的第一步,获取到第一次加密的密文,这个密文将会作为第二次加密的明文 第二步
进行完第一步之后,我们需要在他的下一步打上断点:
1. 这里传的参数r就是上一步最后得到的16位的密文
废话不多说,直接进入函数
2. 返回l,继续跟
又回到第一点,由此可知,这个(0, _.$Q) $Q 且返回函数l,参数为第一步的16位密文
继续跟
3. 到这里,局势已经非常明了,这个第二次加密就是AES加密,前面两步时在对加密的参数进行调整
(1)不管如何变,t一直是最后面那一串字符
(2)将t传入到s()函数,根据多次测试,s函数就是将t进行解编码之后(利用urllib.parse.unquote可以解编码), 再通过字符运算将其转化为16位的字母数字的字符串,再s()函数的结果擦混入到parse函数,得到加密的key
进入parse函数: parse的括号里的参数并未起到任何作用,不用管
直接继续跟: 得到这个,经过不同单词测试,这个key也是固定值,一个数组:
[1278502466, 1950627174, 1279473990, 1366766130]
(3)将需要加密的数据和密钥传入AES.encrypt即可得到密文
(4)效果一样,将对象转化为字符串 至此,sign逆向完成,后面我会将js代码和python代码贴出 解密content 观察这段代码不难发现这是对翻译接口进行了post请求后面的sign就是我们上面得到的sign值拼接起来进行请求返回了data值也就是e
在then中对e做了处理所以我们可以判断content处就是结果的解密处
第一步
给content处打上断点重新输入spider发现会在这里断住
1. 可以看到和我们预期的一样e就是返回的加密数据
废话不多说直接跟
2. B6返回了f继续跟
ok还是回到了第一点我们继续往下跟
3. 看到这里解密函数也出来了又是AES解密数据是e也就是返回的密文密钥key是r不出意外r是根据t的值进行生成的跟上面的加密sign值一样这里的r经过我的测试生成逻辑和上述一样只是参数不一样且为固定值
[1633773667, 861169273, 1715684717, 1163014963]
在后续,对解密之后的数据进行了解码为utf-8的操作,不仅如此,解密之后还可能出现中文字符序列化的情况,这个时候就需要python的json.loads()进行转化