京东h5st 4.8逆向

最开始扒的时候版本号还是4.1,现在已经到了4.8了,原来的AES也没有了,现在都是魔改的加密方法,还整成了vmp。跟了一下整个流程,和原来的流程大差不差,h5st变长了,一共分9部分。简单走一下流程。

第一个加密参数 body
在这里插入图片描述
这里就是原生的SHA256,直接调crypto-js生成。
接着往下走跟到 sign方法里面

第二个参数也就是h5st第八段

在这里插入图片描述
跟进去就开始走vmp控制流了,对所有call这种调用方法的地方下断点。
先是通过_$y8方法生成一系列的环境值

在这里插入图片描述

在这里插入图片描述
对于这个参数可以写死,里面随机字符串生成方法直接用的4.1版本的代码

function bw() {var t, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},n = r.size,e = void 0 === n ? 10 : n,o = r.dictType,i = void 0 === o ? "number" : o,u = r.customDict,a = "";if (u && "string" == typeof u) t = u;else switch (i) {case "alphabet":t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";break;case "max":t = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";break;default:t = "0123456789"}for (; e--;) a += t[Math.random() * t.length | 0];return a}console.log(bw({size: 11,dictType: "max",customDict: null}))

然后用上面生成的对象转json,先调用的Utf8.parse,再调用Base64.encode生成第八段。
接着走到下一个方法,它直接生成h5st,跳进方法里面下断点。

第三个参数是h5st第一段,日期格式化,直接用原来的代码

_$vF = function(e) {return e.concat};function xb() {var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date.now(), t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "yyyy-MM-dd", r = new Date(e), n = t, a = {"M+": r.getMonth() + 1,"d+": r.getDate(),"D+": r.getDate(),"h+": r.getHours(),"H+": r.getHours(),"m+": r.getMinutes(),"s+": r.getSeconds(),"w+": r.getDay(),"q+": Math.floor((r.getMonth() + 3) / 3),"S+": r.getMilliseconds()};return /(y+)/i.test(n) && (n = n.replace(RegExp.$1, "".concat(r.getFullYear()).substr(4 - RegExp.$1.length))),Object.keys(a).forEach((function(e) {if (new RegExp("(".concat(e, ")")).test(n)) {var t, r = "S+" === e ? "000" : "00";n = n.replace(RegExp.$1, 1 == RegExp.$1.length ? a[e] : _$vF(t = "".concat(r)).call(t, a[e]).substr("".concat(a[e]).length))}})),n}var b = Date.now();
var s = xb(b, "yyyyMMddhhmmssSSS");

继续往下走就到了test方法里面,生成一串字符串key

在这里插入图片描述

下一个加密参数是h5st的第五段Sign,调用魔改的SHA256,传参和4.1版本的__gensign一样,前后为test生成的key,中间夹着查询信息拼接成的键值对。

最后一个参数是h5st的第九段SignDefault,和上面一样调用魔改的SHA256,加密参数也是两边是key中间夹着键值对。

整个过程调用的加密算法都是魔改的,可以先把加密算法扣下来。全抠下来,加上一些小方法不到2000行,最后导出直接调用就好。

在这里插入图片描述

注意一点就是里面用到的那些大数组不要在定义的地方去复制,要在调用的时候去复制,有些中间做了变动。

最后放上访问成功的截图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145254.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

玩具车检测系统源码分享

玩具车检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

web基础—dvwa靶场(十二)JavaScript Attacks

JavaScript Attacks (前端攻击) 本章节中的攻击旨在帮助您了解如何在浏览器中使用 JavaScript 以及如何对其进行操作,攻击可以通过分析网络流量来实现,但这不是本章节的重点而且可能要困难得多。 只需提交单词 “success” 即可攻击成功,显然…

编写程序,在一行上显示1-5数字,每个相邻的数字要求用空格进行分开

目录 前言 一、一行输出(使用一个System语句输出) 二、多行输出(使用多(N)个System语句输出) 三、循环输出(使用for语句循环在通过System语句输出) 四、完整代码 前言 1.本文所…

图神经网络池化方法

图神经网络池化方法 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…

windows C++-并行编程-并行算法(四)- 并行排序

并行模式库 (PPL) 提供了对数据集合并行地执行工作的算法。这些算法类似于 C 标准库提供的算法。并行算法由并发运行时中的现有功能组成。 PPL 提供三种排序算法:concurrency::parallel_sort、concurrency::parallel_buffered_sort 和 concurrency::parallel_radix…

志邦家居CIO吴俊涛谈转型:天润融通如何赋能家居行业未来

根据国家统计局、住建部等各部门综合数据显示,2024年国内泛家居全渠道销售额在预计将超过4.7万亿元,并且在存量房需求释放与智能家居品类创新的推动下,预计2027年将突破5.3万亿元,展现出强劲的增长弹性。 然而,家居行…

【Mysql】为modified_time和created_time设置默认值

建立表SQL: CREATE TABLE your_table_name (id int(11) NOT NULL AUTO_INCREMENT,/* 其他字段 */created_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建日期,modified_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改…

如果 Linux 这么好,为什么没有更多的人使用它呢?

原文:DHH - 2024.09.02 几周前,我在推特上看到一个问题:“如果 Linux 这么好,为什么没有更多的人使用它呢?” 这是一个很合理的问题!在你仔细考虑之前,直觉上这是正确的。Linux 甚至是免费的&a…

neo4j关系的创建删除 图的删除

关系的创建和删除 关系创建 CREATE (:Person {name:"jack"})-[:LOVE]->(:Person {name:"Rose"})已有这个关系时,merge不起效果 MERGE (:Person {name:"Jack" })-[:LOVE]->(:Person {name:"Rose"})关系兼顾节点和关…

10_Python流程控制_循环

循环 循环是控制程序重复执行特定代码块的关键结构。Python提供了几种不同的循环结构,以满足不同的编程需求。 While循环 while 循环会重复执行一个代码块,只要指定的条件为真。 适用情况:不清楚具体的循环次数,或者当条件一直…

“科学突破奖”获得者连续两篇Nature,成功绘制人类主要激酶底物特异性图谱

激酶研究进展 近期Nature期刊发表关于酪氨酸激酶的研究文章。这是威尔康奈尔医学癌症中心Jared L. Johnson和Lewis C. Cantley团队自2023年成功绘制丝/苏氨酸激酶底物特异性图谱后,时隔一年后再次成功绘制酪氨酸激酶底物特异性图谱,为理解激酶在信号传导…

MyBatis 分批次执行(新增,修改,删除)

import com.google.common.collect.Lists;import java.util.Iterator; import java.util.List; import java.util.function.Consumer;/*** Description mybatis分批插入数据使用* Author WangKun* Date 2024/9/19 11:20* Version*/ public class MyBatisSqlUtils {/*** param d…

Linux进阶命令-scp

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令&am…

快速编写一款python漏洞批量检测工具

一、前言 以下列检测脚本示列: import requestsimport urllib3import re,string,randomfrom urllib.parse import urljoinimport argparseimport timeimport sslssl._create_default_https_context ssl._create_unverified_contexturllib3.disable_warnings(urllib…

如何给zip文件设置自动加密,保护压缩包不被随意打开

ZIP是日常生活和工作中经常用到的压缩文件格式,对于重要的文件,我们往往还会设置打开密码,保护压缩包不被随意打开。 如果每次压缩文件都要设置一次密码,操作久了还是有点麻烦,那有没有一种方法,只要压缩文…

usemeno和usecallback区别及使用场景

1. useMemo 用途: useMemo 用于缓存计算结果。它接受一个函数和依赖项数组,只有当依赖项发生变化时,才会重新计算该函数的返回值。否则,它会返回缓存的值。 返回值: useMemo 返回的是函数执行后的结果。 使用场景: 当一个计算量大的函数在每…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 三(61-)

环境&#xff1a;OpenCV3.2.0 VS2017 61、轮廓集合重排序(按轮廓面积从小到大) //对轮廓集合面积从大到小排序 bool compareValue_bs(const std::vector<cv::Point> & c1, const std::vector<cv::Point> & c2) {int area1 cv::contourArea(c1);int area…

【Python进阶】requests库有哪些常用的参数和方法?一篇文章带你详细了解!!!附带源码

常用的requests库参数和方法 常用方法 requests库中定义了多个常用的请求方法&#xff0c;其中requests.get()和requests.post()是最常用的方法。这些方法对应于HTTP协议中的GET和POST方法。 requests.get(url, paramsNone, **kwargs): 用于发送GET请求。requests.post(url…

116页可编辑PPT全面了解数据治理体系、平台,数据质量数据标准

概览 《行业大数据治理平台》是一个全面深入探讨大数据治理的PPT文档&#xff0c;共116页&#xff0c;涵盖了建设背景、解决方案、核心功能以及实际应用案例等多个方面。 核心议题 数据作为资产的重要性和全生命周期管理。信息系统建设方案的演变及其面临的问题。数据资产运营…

鸿蒙Harmony-Next 徒手撸一个日历控件

本文将介绍如何使用鸿蒙Harmony-Next框架实现一个自定义的日历控件。我们将创建一个名为CalendarView的组件&#xff08;注意,这里不能叫 Calendar因为系统的日历叫这个&#xff09;,它具有以下功能: 显示当前月份的日历支持选择日期显示农历日期可以切换上一月和下一月 组件…