当前位置: 首页 > news >正文

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

网址:aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2J0Yy90eC1saXN0L3BhZ2UvNAo=

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

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

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

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

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

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

先看t,进入encryptTime()函数

再进入 encryptApikey()函数

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

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

获得t的代码:

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

获得e的代码:

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

再回过头来看comb

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

复现这段代码:

// 引入 Node.js 的 Buffer 类
const { Buffer } = require('buffer');function getApiKey(t, e) {var n = "".concat(t, "|").concat(e);// 使用 Buffer 来转换字符串为 Base64 编码var encoded = Buffer.from(n).toString('base64');return encoded;
}console.log(getApiKey(t,e))// 结果为MjgzMjMxMDY4Nzg0ODUyNXwtYjMxZS00NTQ3LTkyOTktYjZkMDdiNzYzMWFiYTJjOTAzY2M=
a = 1111111111111;
var time_stamp = (new Date).getTime();
function encryptTime(t) {var e = (1 * t + a).toString().split(""), n = parseInt(10 * Math.random(), 10), r = parseInt(10 * Math.random(), 10), i = parseInt(10 * Math.random(), 10);return e.concat([n, r, i]).join("")};
t = encryptTime(time_stamp)console.log(t)
var API_KEY = "a2c903cc-b31e-4547-9299-b6d07b7631ab";
function encryptApiKey() {var t = API_KEY, e = t.split(""), n = e.splice(0, 8);return t = e.concat(n).join("")
};
e = encryptApiKey()
console.log(e)// 引入 Node.js 的 Buffer 类
const { Buffer } = require('buffer');function getApiKey(t, e) {var n = "".concat(t, "|").concat(e);// 使用 Buffer 来转换字符串为 Base64 编码var encoded = Buffer.from(n).toString('base64');return encoded;
}console.log('最终结果为:',getApiKey(t,e))

http://www.lryc.cn/news/404482.html

相关文章:

  • CSS 导航栏:设计、定制与优化
  • JS 如何处理链接被用户点击中键的操作
  • Android 11 使用HAL层的ffmpeg库(1)
  • 友力科技数据中心搬迁方案
  • GitHub敏感信息扫描工具
  • Linux云计算 |【第一阶段】ENGINEER-DAY4
  • C++与VLC制作独属于你的动态壁纸背景
  • 平凯星辰黄东旭出席 2024 全球数字经济大会 · 开放原子开源数据库生态论坛
  • Mac OS 下安装 NVM,1秒教会你
  • 搭建博客系统#Golang
  • 算法——滑动窗口(day6)
  • 推荐一款基于Spring Boot 框架开发的分布式文件管理系统,功能齐全,非常便捷(带私活源码)
  • Mysql-查询
  • 广东科学技术职业学院计算机学院领导一行莅临泰迪智能科技参观交流
  • exo 大模型算力共享;Llama3-70B是什么
  • 测试——Junit
  • BUG ImportError: cannot import name ‘QAction‘ from ‘PySide6.QtWidgets‘
  • 对某次应急响应中webshell的分析
  • Vue3新特性
  • 一套功能齐全、二开友好的即时通讯IM工具,提供能力库和UI库,支持单聊、频道和机器人(附源码)
  • MySQL:JOIN 多表查询
  • 【机器学习】必会算法模型之:一文掌握 密度聚类,建议收藏。
  • 代码:前端与数据库交互的登陆界面
  • 发电机基础知识:负载组
  • 内网安全:各类密码的抓取
  • 前端面试题汇总2
  • 分布式服务框架zookeeper+消息队列kafka
  • 服务攻防-应用协议cve
  • Springcloud之gateway的使用详解
  • 中望CAD 建筑 v2024 解锁版下载、安装教程 (超强的CAD三维制图)