当前位置:   article > 正文

逆向案例二十三——请求头参数加密,某区块链交易逆向

逆向案例二十三——请求头参数加密,某区块链交易逆向

网址:aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2J0Yy90eC1saXN0L3BhZ2UvNAo=

抓包分析,发现请求头有X-Apikey参数加密,其他表单和返回内容没有加密。

直接搜索关键字,X-Apikey,找到疑似加密位置,注意这里断点是断不住的,但看上去也是这里进行了加密。

因此搜索关键字getApiKey,找疑似加密位置,打上断点。 

翻页后,进一步确认加密位置,貌似是comb这个函数进行了加密,进入这个函数。

打印参数,没错就是这里进行了加密。

它接收两个值,t和e分别是怎么来的呢?回归这里,t是获得时间戳再运用encryptTime()函数得到,e是encryptApikey()函数得到。

先看t,进入encryptTime()函数

再进入 encryptApikey()函数

直接复制并改写代码即可。

先搞定获得t和e的函数,最后在解决最终加密comb

获得t的代码:

  1. a = 1111111111111;
  2. var time_stamp = (new Date).getTime();
  3. function encryptTime(t) {
  4. var e = (1 * t + a).toString().split("")
  5. , n = parseInt(10 * Math.random(), 10)
  6. , r = parseInt(10 * Math.random(), 10)
  7. , i = parseInt(10 * Math.random(), 10);
  8. return e.concat([n, r, i]).join("")
  9. };
  10. t = encryptTime(time_stamp)
  11. console.log(t)
  12. // 结果为 2832309119911220

获得e的代码:

  1. var API_KEY = "a2c903cc-b31e-4547-9299-b6d07b7631ab";
  2. function encryptApiKey() {
  3. var t = API_KEY
  4. , e = t.split("")
  5. , n = e.splice(0, 8);
  6. return t = e.concat(n).join("")
  7. };
  8. e = encryptApiKey()
  9. console.log(e)
  10. //结果为 -b31e-4547-9299-b6d07b7631aba2c903cc

再回过头来看comb

o.Z是全局变量window,btoa是内置函数,转为base64格式。 

复现这段代码:

  1. // 引入 Node.js 的 Buffer 类
  2. const { Buffer } = require('buffer');
  3. function getApiKey(t, e) {
  4. var n = "".concat(t, "|").concat(e);
  5. // 使用 Buffer 来转换字符串为 Base64 编码
  6. var encoded = Buffer.from(n).toString('base64');
  7. return encoded;
  8. }
  9. console.log(getApiKey(t,e))
  10. // 结果为MjgzMjMxMDY4Nzg0ODUyNXwtYjMxZS00NTQ3LTkyOTktYjZkMDdiNzYzMWFiYTJjOTAzY2M=
  1. a = 1111111111111;
  2. var time_stamp = (new Date).getTime();
  3. function encryptTime(t) {
  4. var e = (1 * t + a).toString().split("")
  5. , n = parseInt(10 * Math.random(), 10)
  6. , r = parseInt(10 * Math.random(), 10)
  7. , i = parseInt(10 * Math.random(), 10);
  8. return e.concat([n, r, i]).join("")
  9. };
  10. t = encryptTime(time_stamp)
  11. console.log(t)
  12. var API_KEY = "a2c903cc-b31e-4547-9299-b6d07b7631ab";
  13. function encryptApiKey() {
  14. var t = API_KEY
  15. , e = t.split("")
  16. , n = e.splice(0, 8);
  17. return t = e.concat(n).join("")
  18. };
  19. e = encryptApiKey()
  20. console.log(e)
  21. // 引入 Node.js 的 Buffer 类
  22. const { Buffer } = require('buffer');
  23. function getApiKey(t, e) {
  24. var n = "".concat(t, "|").concat(e);
  25. // 使用 Buffer 来转换字符串为 Base64 编码
  26. var encoded = Buffer.from(n).toString('base64');
  27. return encoded;
  28. }
  29. console.log('最终结果为:',getApiKey(t,e))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/861023
推荐阅读
相关标签
  

闽ICP备14008679号