【JS逆向五】逆向模拟某网站的生成的【jsonKey】值 仅供学习

news2024/11/27 8:43:39

逆向日期:2024.02.07

使用工具:Node.js

加密方法:AES

文章全程已做去敏处理!!!  【需要做的可联系我】

可使用AES进行解密处理(直接解密即可):在线AES加解密工具

1、打开某某网站(请使用文章开头的AES在线工具解密):4ChonmNI5Lkh3tjTAa6Z06mJWyT4q4j0x86XqcGv7O42h1fyOjN7aJnHZoBMGMVj
2、随便输入账号,然后图片验证码输入后,点击获取验证码,可在控制台网络面板查看

3、仍然一样,全局搜索,幺幺嗨,这么简单就找到了,他这里是将一个字典转为了字符串在进行的加密,,首先我们要先模拟生成他字典中的内容,图片验证码可以ocr识别传进去,手机号可以先写固定,时间戳直接生成,【sessionId】这个玩意不知道是啥,我们直接去翻源代码

4、哎幺,我脑子最近有点傻,忘了先去分析【sessionId】值,才发现【sessionId】是用时间组成的,别问为什么,就因为脑子有点傻,在源码上浪费时间找了半天,直接看代码

5、按照网站的方法,【f】的参数我们也已经解决了,接下来直接进入【newEncrypt】,看看这么加密的

6、找到了,好家伙AES加密,把此段代码直接复制,放到本地,然后调用本地的库。我们只需略微修改即可

7、然后我们先测试一下,在控制台和本地都加密一下【1】,看结果是不是一样,,可以看到是一样的,接下来就直接模拟

8、加密完成后,可以通过测位数来检验你的加密是否有问题,下面可以看到,无论是我本地加密的结果,还是源网站的结果,位数都是一样的,说们我们这个就成功逆开了

【附上源码】
npm install crypto-js --save  // 安装本地包
// 安装 crypto 加解密包
// npm install crypto-js --save
// 对称加密算法 的结果将会是唯一性,不会变更
const CryptoJS = require('crypto-js')

// 随机生成 16位
getAesKey = function(l) {
    l = l || 32;
    for (var n = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678", t = n.length, e = "", a = 0; a < l; a++)
        e += n.charAt(Math.floor(Math.random() * t));
    return e
}
var getAesKeys = getAesKey()

newEncrypt = function(l) {
    var n = CryptoJS.enc.Utf8.parse(getAesKeys)  // 源网站的 getAesKeys 值是随机16位  刷新网站后,此处的值也会刷新
      , t = CryptoJS.enc.Utf8.parse(getAesKeys)  // 源网站的 getAesKeys 值是随机16位  刷新网站后,此处的值也会刷新
      , e = CryptoJS.enc.Utf8.parse(l)
      , a = CryptoJS.AES.encrypt(e, n, {
        iv: t,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return CryptoJS.enc.Base64.stringify(a.ciphertext)
}
function times(){
    // ISO 8601标准 UTC 时间
    var currentDate = new Date();
    // 年
    var year = currentDate.getFullYear();
    // 月
    var month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); // 月份从0开始,需要加1
    // 日
    var day = currentDate.getDate().toString().padStart(2, '0');
    // 时
    var hours = currentDate.getHours().toString().padStart(2, '0');
    // 分
    var minutes = currentDate.getMinutes().toString().padStart(2, '0');
    // 秒
    var seconds = currentDate.getSeconds().toString().padStart(2, '0');
    // 进行组合
    sessionId = year.toString().substring(4, 2)+month+day+hours+minutes+seconds+Math.floor(Math.random() * 100000000).toString().padStart(8, '0');
    return sessionId
}

f = {
    "body": {
        "name": "18000000000",   // 账号
        "code": "yutuAK",       //  图片验证码
        "sessionId": times(),
        "option": "LOGIN"
    },
    "head": {
        "userCode": null,
        "channelCode": "101",
        "transTime": new Date().getTime(),    // 时间戳
        "transToken": "",
        "customerId": null,
        "transSerialNumber": ""
    }
}
G = newEncrypt(JSON.stringify(f))

console.log(G)
console.log(G.length)

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

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

相关文章

Spring Batch 批处理框架适配达梦数据库,实现从文件批量读取写入数据库(完整教程)

效果展示(达梦数据库): 技术简介: Spring Batch 是一个基于 Spring 的批处理框架,用于开发和执行大规模、高性能、可靠的批处理应用程序。它提供了丰富的功能和组件,用于处理复杂的批处理任务,例如大数据ETL(Extract-Transform-Load)、数据清洗、数据迁移、报表生成…

StringBuilder类常用方法(Java)

StringBuilder类常用方法 StringBuilder 是 Java 中常用的字符串缓冲区类&#xff0c;适用于频繁修改字符串的场景。 1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾。 StringBuilder sb new StringBuilder("Hello"); sb.…

9.0 Zookeeper 节点特性

本章节介绍一下 zookeeper 的节点特性和简单使用场景&#xff0c;正是由于这些节点特性的存在使 zookeeper 开发出不同的场景应用。 1、同一级节点 key 名称是唯一的 实例&#xff1a; $ ls / $ create /runoob 2 已存在 /runoob 节点&#xff0c;再次创建会提示已经存在。 …

SDWAN组网一般会需要哪些设备

随着企业网络需求的不断增长和变化&#xff0c; SD-WAN作为一种先进的网络架构技术&#xff0c;需要一系列设备来构建有效的组网。以下是SD-WAN组网所需的一些关键设备清单&#xff1a; &#xff08;1&#xff09;SD-WAN路youqi&#xff1a; SD-WAN路youqi是SD-WAN网络的核心设…

【Spring Boot】第一篇 创建简单的Spring Boot项目

导航 一. 简介二. 创建简单的Spring Boot项目1. 工具选择和版本确定2. 创建步骤 三. 部署项目四. 测试验证 一. 简介 Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的创建和配置过程&#xff0c;同时提供了很多开箱即用的功能&am…

Python轴承故障诊断入门教学

目录 往期精彩内容&#xff1a; 1 工作室实验平台介绍 2 轴承故障诊断教程—数据集 3 轴承故障诊断教程—算法模型 3.1 振动分析方法 3.2 频域特征提取 3.3 时域特征提取 3.4 模型基础的机器学习方法 3.5 深度学习方法 3.6 时频域融合方法 3.7 信号重构方法 3.8 基…

定制红酒:如何根据客户的口味偏好进行定制

在红酒定制服务中&#xff0c;了解并满足客户的口味偏好是至关重要的。云仓酒庄洒派深知这一点&#xff0c;并根据客户的口味偏好进行红酒的定制。以下是云仓酒庄洒派如何根据客户的口味偏好进行定制的详细步骤&#xff1a; 1. 深入了解客户的口味偏好 在定制服务开始之前&…

VS2017+Qt中文无法编译通过newline in constant解决办法

首先说我的解决办法 Tools->Extensions and Updates… 安装ForceUTF8(with BOM) 注意Force这个插件有好几个版本&#xff0c;一定要withBOM&#xff01;&#xff01;&#xff01;我之前安装的没有BOM导致改了各种设置还是一直编译不过&#xff0c;差点没气死我 另外代码里…

7.electron之渲染线程发送事件,主进程监听事件

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

深度学习图像分类相关概念简析+个人举例3(CNN相关补充,附详细举例代码1)

【1】激活函数&#xff08;Activation Function&#xff09;&#xff1a;在深度学习&#xff08;CNN&#xff09;中&#xff0c;激活函数用于引入非线性性质&#xff0c;帮助模型学习复杂的关系。常见的激活函数有ReLU、Sigmoid和Tanh等。 &#xff08;1&#xff09;ReLU激活函…

微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)-2.0.1

客户端注册临时实例&#xff0c;GRPC处理 客户端服务发现 及订阅处理

无人机在化工消防救援中的应用,消防无人机应用场景分析

火灾对社会环境具有较大影响&#xff0c;因此需要重视消防灭火救援工作&#xff0c;注重现代化技术的运用&#xff0c;将无人机应用到救援过程并保障其应用质量。无人机是一项重要技术&#xff0c;便于消防灭火救援操作&#xff0c;使救援过程灵活展开&#xff0c;排除不利影响…

Netty源码系列 之 EventLoop run()方法 源码

EventLoop[实现类为NioEventLoop&#xff0c;我们研究NioEventLoop即可] EventLoop是一个单线程的线程池 核心作用&#xff1a;处理执行IO操作&#xff08;accept&#xff0c;read&#xff0c;write事件&#xff09;&#xff0c;普通任务&#xff0c;定时任务 EventLoop封装…

Linux C/C++ 原始套接字:打造链路层ping实现

在C/C中&#xff0c;我们可以使用socket函数来创建套接字。我们需要指定地址族为AF_PACKET&#xff0c;协议为htons(ETH_P_ALL)来捕获所有传入和传出的数据包。 可以使用sendto和recvfrom函数来发送和接收数据包。我们需要构建一个合法的链路层数据包&#xff0c;在数据包的头…

Android14音频进阶:MediaPlayerService如何启动AudioTrack 下篇(五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

Swift Combine 发布者订阅者操作者 从入门到精通二

Combine 系列 Swift Combine 从入门到精通一 1. Combine核心概念 你只需要了解几个核心概念&#xff0c;就能使用好 Combine&#xff0c;但理解它们非常重要。 这些概念中的每一个都通过通用协议反映在框架中&#xff0c;以将概念转化为预期的功能。 这些核心概念是&#x…

ubuntu配置conda环境

博主最近新换了电脑&#xff0c;原本的笔记本便被打入了冷宫&#xff0c;后来想到这个电脑也不能浪费&#xff0c;因此想着把原本的电脑重装一下&#xff0c;博主装了个双系统&#xff0c;分别是window10与ubuntu&#xff0c;今天便拿ubuntu系统练下手。 首先安装nvidia驱动 …

【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)

什么是嵌入&#xff1f; OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于&#xff1a; Search 搜索&#xff08;结果按与查询字符串的相关性排序&#xff09;Clustering 聚类&#xff08;文本字符串按相似性分组&#xff09;Recommendations 推荐&#xff08;推荐具有…

Android 11 访问 Android/data/或者getExternalCacheDir() 非root方式

前言&#xff1a; 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt…

第5章——深度学习入门(鱼书)

第5章 误差反向传播法 上一章中&#xff0c;我们介绍了神经网络的学习&#xff0c;并通过数值微分计算了神经网络的权重参数的梯度&#xff08;严格来说&#xff0c;是损失函数关于权重参数的梯度&#xff09;。数值微分虽然简单&#xff0c;也容易实现&#xff0c;但缺点是计…