天翼云登录参数JavaSrcipt逆向

news2025/2/25 15:56:13

天翼云登录参数 passwordcomParam_curTimecomParam_seqCodecomParam_signature JavaSrcipt逆向

目标网站

https://m.ctyun.cn/wap/main/auth/login?redirect=/my

目标参数

要逆向的有 password、comParam_curTime、comParam_seqCode、comParam_signature 四个参数
在这里插入图片描述

逆向分析

在这里插入图片描述
打开搜索工具栏,根据经验搜索**password:**得到
在这里插入图片描述
猜测password大概在此处加密

 userName: Object(w["g"])(r.value),
 password: encodeURI(Object(w["c"])(a.value, Object(w["f"])(Object(w["g"])(r.value))))                                    

此处添加断点,输入账号、密码,从新登录,断点断住,分析得出密码在此处加密。
只要解出 Object(u[“c”])、Object(u[“f”])、Object(u[“g”])、a.value、s.value 即可
在控制台输入 **a.value、s.value,**其值分别为账号、密码
在这里插入图片描述
Object(w[“c”]) 方法是一个 M 函数:

M = function(e) {
    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
        t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = t.enc,
        a = void 0 === r ? "Utf8" : r,
        o = t.mode,
        c = void 0 === o ? "ECB" : o,
        i = t.padding,
        u = void 0 === i ? "Pkcs7" : i,
        d = p.a.enc[a].parse(n),
        s = {
            mode: p.a.mode[c],
            padding: p.a.pad[u]
        }, l = p.a.TripleDES.encrypt(e, d, s);
    return l.toString()
}

p.a 属性不用扣代码,使用 crypto-js 第三方模块就可以

Object(w[“f”]) 方法是一个 _ 函数:

_ = function(e) {
    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
    if (e && "string" === typeof e) {
        var t = n.text || "0",
            r = n.length || 24;
        if (e.length < r) for (var a = e.length; a < r; a++)
        e += t;
        else e = e.substring(0, r);
        return e
    }
}

Object(w[“g”]) 方法是一个 K 函数:

Q = function() {
    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
    return e.replace(/\s+/g, "")
};

代码:

// crypto-js 模块安装命令:npm i crypto-js --save
const CryptoJS = require('crypto-js')

const T = function (e) {
    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""
        , t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}
        , a = t.enc
        , r = void 0 === a ? "Utf8" : a
        , c = t.mode
        , i = void 0 === c ? "ECB" : c
        , o = t.padding
        , u = void 0 === o ? "Pkcs7" : o
        , d = CryptoJS.enc[r].parse(n)
        , l = {
            mode: CryptoJS.mode[i],
            padding: CryptoJS.pad[u]
        }
        , s = CryptoJS.TripleDES.encrypt(e, d, l);
    return s.toString()
}

const F = function (e) {
    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
    if (e && "string" === typeof e) {
        var t = n.text || "0"
            , a = n.length || 24;
        if (e.length < a)
            for (var r = e.length; r < a; r++)
                e += t;
        else
            e = e.substring(0, a);
        return e
    }
}

const K = function () {
    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
    return e.replace(/\s+/g, "")
}

const password = encodeURI(T('abc123', F(K('123@163.com'))))
console.log(password)

运行结果与浏览器一致:

mY7jlZItWJ8=

comParam_curTime

全局搜索 comParam_curTime
在这里插入图片描述发现与 comParam_seqCode、comParam_signature 是放在一起的
return 处打上断点重新登录
comParam_curTime 值是变量 n:

n = (new Date).getTime() - h.getTimestampOffset()

h.getTimestampOffset() 是一个函数:

h.getTimestampOffset = function() {
    return localStorage.getItem("timestampOffset") || f
}

它返回一个整数形式的字符串,如果页面关闭后再打开,那么该字符串也随之改变。可以把它写成一个固定值
代码:

const n = (new Date).getTime() - '512'
console.log(n)

运行结果:

1663060561792

comParam_seqCode
comParam_seqCode 值是变量 r

r = Object(u["k"])()

Object(u[“k”]) 是一个 H 函数

H = function() {
    var e, n, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 32,
        r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 16,
        a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),
        o = [];
    if (r = r || a.length,
    t) for (e = 0; e < t; e++)
    o[e] = a[0 | Math.random() * r];
    else for (o[8] = o[13] = o[18] = o[23] = "-",
    o[14] = "4",
    e = 0; e < 36; e++)
    o[e] || (n = 0 | 16 * Math.random(),
    o[e] = a[19 === e ? 3 & n | 8 : n]);
    return o.join("")
}

运行结果:

C1255B5F897C5C4F6EC0379ED98A3890

comParam_signature

comParam_signature 值是变量 a

a = i()(n + r + i()(r + t + n));

ncomParam_curTime

rcomParam_seqCode

ts54zv9bm1vd5czfujy6nnuxj1l4g2ny6 固定值
i() 是 S 函数

function S(t, e, n) {
    return e ? n ? w(e, t) : x(e, t) : n ? m(t) : _(t)
}
r = function() {
    return S
}

代码:

function i(t, e) {
    var n = (65535 & t) + (65535 & e),
        r = (t >> 16) + (e >> 16) + (n >> 16);
    return r << 16 | 65535 & n
}

function a(t, e) {
    return t << e | t >>> 32 - e
}

function c(t, e, n, r, o, c) {
    return i(a(i(i(e, t), i(r, c)), o), n)
}

function u(t, e, n, r, o, i, a) {
    return c(e & n | ~e & r, t, e, o, i, a)
}

function s(t, e, n, r, o, i, a) {
    return c(e & r | n & ~r, t, e, o, i, a)
}

function f(t, e, n, r, o, i, a) {
    return c(e ^ n ^ r, t, e, o, i, a)
}

function l(t, e, n, r, o, i, a) {
    return c(n ^ (e | ~r), t, e, o, i, a)
}

function p(t, e) {
    var n, r, o, a, c;
    t[e >> 5] |= 128 << e % 32,
    t[14 + (e + 64 >>> 9 << 4)] = e;
    var p = 1732584193,
        h = -271733879,
        d = -1732584194,
        v = 271733878;
    for (n = 0; n < t.length; n += 16)
    r = p,
    o = h,
    a = d,
    c = v,
    p = u(p, h, d, v, t[n], 7, -680876936),
    v = u(v, p, h, d, t[n + 1], 12, -389564586),
    d = u(d, v, p, h, t[n + 2], 17, 606105819),
    h = u(h, d, v, p, t[n + 3], 22, -1044525330),
    p = u(p, h, d, v, t[n + 4], 7, -176418897),
    v = u(v, p, h, d, t[n + 5], 12, 1200080426),
    d = u(d, v, p, h, t[n + 6], 17, -1473231341),
    h = u(h, d, v, p, t[n + 7], 22, -45705983),
    p = u(p, h, d, v, t[n + 8], 7, 1770035416),
    v = u(v, p, h, d, t[n + 9], 12, -1958414417),
    d = u(d, v, p, h, t[n + 10], 17, -42063),
    h = u(h, d, v, p, t[n + 11], 22, -1990404162),
    p = u(p, h, d, v, t[n + 12], 7, 1804603682),
    v = u(v, p, h, d, t[n + 13], 12, -40341101),
    d = u(d, v, p, h, t[n + 14], 17, -1502002290),
    h = u(h, d, v, p, t[n + 15], 22, 1236535329),
    p = s(p, h, d, v, t[n + 1], 5, -165796510),
    v = s(v, p, h, d, t[n + 6], 9, -1069501632),
    d = s(d, v, p, h, t[n + 11], 14, 643717713),
    h = s(h, d, v, p, t[n], 20, -373897302),
    p = s(p, h, d, v, t[n + 5], 5, -701558691),
    v = s(v, p, h, d, t[n + 10], 9, 38016083),
    d = s(d, v, p, h, t[n + 15], 14, -660478335),
    h = s(h, d, v, p, t[n + 4], 20, -405537848),
    p = s(p, h, d, v, t[n + 9], 5, 568446438),
    v = s(v, p, h, d, t[n + 14], 9, -1019803690),
    d = s(d, v, p, h, t[n + 3], 14, -187363961),
    h = s(h, d, v, p, t[n + 8], 20, 1163531501),
    p = s(p, h, d, v, t[n + 13], 5, -1444681467),
    v = s(v, p, h, d, t[n + 2], 9, -51403784),
    d = s(d, v, p, h, t[n + 7], 14, 1735328473),
    h = s(h, d, v, p, t[n + 12], 20, -1926607734),
    p = f(p, h, d, v, t[n + 5], 4, -378558),
    v = f(v, p, h, d, t[n + 8], 11, -2022574463),
    d = f(d, v, p, h, t[n + 11], 16, 1839030562),
    h = f(h, d, v, p, t[n + 14], 23, -35309556),
    p = f(p, h, d, v, t[n + 1], 4, -1530992060),
    v = f(v, p, h, d, t[n + 4], 11, 1272893353),
    d = f(d, v, p, h, t[n + 7], 16, -155497632),
    h = f(h, d, v, p, t[n + 10], 23, -1094730640),
    p = f(p, h, d, v, t[n + 13], 4, 681279174),
    v = f(v, p, h, d, t[n], 11, -358537222),
    d = f(d, v, p, h, t[n + 3], 16, -722521979),
    h = f(h, d, v, p, t[n + 6], 23, 76029189),
    p = f(p, h, d, v, t[n + 9], 4, -640364487),
    v = f(v, p, h, d, t[n + 12], 11, -421815835),
    d = f(d, v, p, h, t[n + 15], 16, 530742520),
    h = f(h, d, v, p, t[n + 2], 23, -995338651),
    p = l(p, h, d, v, t[n], 6, -198630844),
    v = l(v, p, h, d, t[n + 7], 10, 1126891415),
    d = l(d, v, p, h, t[n + 14], 15, -1416354905),
    h = l(h, d, v, p, t[n + 5], 21, -57434055),
    p = l(p, h, d, v, t[n + 12], 6, 1700485571),
    v = l(v, p, h, d, t[n + 3], 10, -1894986606),
    d = l(d, v, p, h, t[n + 10], 15, -1051523),
    h = l(h, d, v, p, t[n + 1], 21, -2054922799),
    p = l(p, h, d, v, t[n + 8], 6, 1873313359),
    v = l(v, p, h, d, t[n + 15], 10, -30611744),
    d = l(d, v, p, h, t[n + 6], 15, -1560198380),
    h = l(h, d, v, p, t[n + 13], 21, 1309151649),
    p = l(p, h, d, v, t[n + 4], 6, -145523070),
    v = l(v, p, h, d, t[n + 11], 10, -1120210379),
    d = l(d, v, p, h, t[n + 2], 15, 718787259),
    h = l(h, d, v, p, t[n + 9], 21, -343485551),
    p = i(p, r),
    h = i(h, o),
    d = i(d, a),
    v = i(v, c);
    return [p, h, d, v]
}

function h(t) {
    var e, n = "",
        r = 32 * t.length;
    for (e = 0; e < r; e += 8)
    n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255);
    return n
}

function d(t) {
    var e, n = [];
    for (n[(t.length >> 2) - 1] = void 0,
    e = 0; e < n.length; e += 1)
    n[e] = 0;
    var r = 8 * t.length;
    for (e = 0; e < r; e += 8)
    n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32;
    return n
}

function v(t) {
    return h(p(d(t), 8 * t.length))
}

function y(t, e) {
    var n, r, o = d(t),
        i = [],
        a = [];
    for (i[15] = a[15] = void 0,
    o.length > 16 && (o = p(o, 8 * t.length)),
    n = 0; n < 16; n += 1)
    i[n] = 909522486 ^ o[n],
    a[n] = 1549556828 ^ o[n];
    return r = p(i.concat(d(e)), 512 + 8 * e.length),
    h(p(a.concat(r), 640))
}

function g(t) {
    var e, n, r = "0123456789abcdef",
        o = "";
    for (n = 0; n < t.length; n += 1)
    e = t.charCodeAt(n),
    o += r.charAt(e >>> 4 & 15) + r.charAt(15 & e);
    return o
}

function b(t) {
    return unescape(encodeURIComponent(t))
}

function m(t) {
    return v(b(t))
}

function _(t) {
    return g(m(t))
}

function w(t, e) {
    return y(b(t), b(e))
}

function x(t, e) {
    return g(w(t, e))
}

function S(t, e, n) {
    return e ? n ? w(e, t) : x(e, t) : n ? m(t) : _(t)
}

function aaa(){
    n = (new Date).getTime() - "512"
    t = "s54zv9bm1vd5czfujy6nnuxj1l4g2ny6"
    r = "D10FE9733A3314D7DD777734F5476ACA"
    return S(n + r + S(r + t + n));
}

调用aaa()
运行结果:

e5555b27c401a8533f0a8ad5afe77427

参考网站:https://www.gaoyuanqi.cn/crawler-tianyiyun/

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

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

相关文章

面试redis篇-08数据淘汰策略

原理 当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。 Redis支持8种不同策略来选择要删除的key: noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是…

一款开源.NET WPF界面库介绍

一款开源.NET WPF界面库介绍 这是一个WPF版的Layui前端UI样式库&#xff0c;该控件库参考了Web版本的LayUI风格&#xff0c;利用该控件库可以完成现代化UI客户端程序&#xff0c;让你的客户端看起来更加简洁丰富又不失美感 如何使用 步骤一 : 添加LayUI.Wpf Nuget包; Inst…

vscode与vue/react环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理)&#xff0c;此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号&#xff1a; 配置系统变量 因为在执…

备战蓝桥杯Day17 - 链表

链表 基本概念 链表是由一系列节点组成的元素集合。 每个节点包含两部分&#xff1a;数据域 item 、指向下一个节点的指针 next 通过节点之间的相互链接&#xff0c;形成一个链表 1. 链表的初始化 # 手动建立链表 # 链表的初始化 class Node(object):def __init__(self, …

消息中间件篇之Kafka-高性能设计

一、高性能设计 消息分区&#xff1a;不受单台服务器的限制&#xff0c;可以不受限的处理更多的数据。 顺序读写&#xff1a;磁盘顺序读写&#xff0c;提升读写效率。 页缓存&#xff1a;把磁盘中的数据缓存到内存中&#xff0c;把对磁盘的访问变为对内存的访问。 零拷贝&a…

互联网加竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

C#,动态规划(DP)N皇后问题(N Queen Problem)的回溯(Backtracking)算法与源代码

1 N皇后问题&#xff08;N Queen Problem&#xff09; 在N*N的方格棋盘放置了N个皇后&#xff0c;使得它们不相互攻击&#xff08;即任意2个皇后不允许处在同一排&#xff0c;同一列&#xff0c;也不允许处在与棋盘边框成45角的斜线上。 2 回溯算法 回溯算法实际上一个类似枚…

水果FL Studio21.2.3.4004里的一个动态视觉插件Fruity Dance的教程

这是一篇关于水果&#xff08;FL Studio&#xff09;里的一个动态视觉插件Fruity Dance的教程。前部分较多地引用了FL的帮助文档&#xff0c;后部分结合了我操作的一些经验。 &#xff08;文中这种颜色的字可略过不看&#xff0c;属于一些基础操作的解释补充&#xff09; 准备材…

Qt6.8 GRPC功能使用(1)标准GRPC C++ exmple编译环境搭建

MSYS2 环境搭建 1. MSYS2 安装 https://www.msys2.org/#installation 网页中找到Installation&#xff0c; 提供下载&#xff0c; 本次下载版本是 [msys2-x86_64-20240113.exe](https://github.com/msys2/msys2-installer/releases/download/2024-01-13/msys2-x86_64-202401…

NXP实战笔记(十一):32K3xx基于RTD-SDK在S32DS上配置DFLASH、MemAcc、Fee

目录 1、概述 2、RTD-SDK配置之Cache_Ip 3、RTD-SDK配置之Mem_43_InFls 4、RTD-SDK配置之MemAcc 5、RTD-SDK配置之Fee 6、代码示例 1、概述 S32K3目前安装的RTD普遍使用的是R22-11版本的AUTOSAR规范&#xff0c;作为一直使用AUTOSAR4.2.2的程序员来讲&#xff0c;属实迭代…

备考2025年考研数学(三):2015-2024年考研数学真题练一练

今天&#xff0c;我们继续分享2015年-2024年的考研数学三填空题&#xff0c;随机做5道真题&#xff0c;并提供解析。看看正在备考2025年考研的你能做对几道。 考研数学和政治、英语一项&#xff0c;都是拉分大户&#xff0c;但是数学如果掌握了技巧&#xff0c;吃透了知识点的话…

跨境电商营销进化史:从传统广告到智能化策略的全面探析

随着全球化的不断推进和互联网技术的飞速发展&#xff0c;跨境电商在过去几年里取得了显著的发展。在这个竞争激烈的市场中&#xff0c;企业们纷纷调整营销策略以应对不断变化的消费者需求和市场趋势。本文Nox聚星将和大家探讨跨境电商营销策略的演变过程&#xff0c;从传统的推…

H6601 惠海 降压恒压芯片 支持12V24V36V48V60V72V80V 外围简单 动态负载良好 纹波小

降压恒压芯片的工作原理及其特性&#xff1a; 开关模式&#xff1a;降压恒压芯片通常使用开关模式电源供应&#xff08;SMPS&#xff09;技术&#xff0c;通过高速开关晶体管&#xff08;通常是MOSFET&#xff09;来控制电流的流动&#xff0c;从而将输入电压降低到所需的输出…

提速互联 智向未来 | 广和通AIoT模组及解决方案惊艳MWC 2024

2月26日&#xff0c;以“未来先行”为主题的世界移动通信大会2024&#xff08;以下简称&#xff1a;MWC 2024&#xff09;在巴塞罗那正式拉开帷幕。全球移动运营商、垂直行业客户、生态伙伴齐聚一堂&#xff0c;共同探讨5G-A、人工智能、NTN、可持续循环等全球科技趋势与创新技…

GaussDB SQL调优:选择合适的分布列

一、背景 GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库&#xff0c;该产品具备企业级复杂事务混合负载能力&#xff0c;同时支持优异的分布式事务&#xff0c;同城跨AZ部署&#xff0c;数据0丢失&#xff0c;支持1000扩展能力&#xff0c;PB级海量存储等企业级数…

OSI参考模型和TCP/IP网络参考模型

1、OSI参考模型 1.1 产生背景 为了解决网络之间的兼容性问题,实现网络设备间的相互通讯,国际标准化组织ISO于1984年提出了OSIRM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI参考模型很快成为计算机网络通信的基础模型。由于种种原因,并没有…

React回顾

一、基础 1、使用babel解析 2、不直接使用jsx&#xff0c;jsx写起来很繁琐 3、jsx语法规则 4、函数式组件的使用 5、函数式组件渲染 6、类组件渲染 7、类组件中事件调用this指向问题 8、类组件不能直接改变状态 9、props接收数据类型限制 类型限制放到类组件内部&#xff0c;用…

OSCP靶场--Algernon

OSCP靶场–Algernon 考点: 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.243.65 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-26 21:17 EST Nmap scan report for 192.168.243.65 Host is up (0.30s latency). No…

PyTorch概述(八)---ADAM

import torch torch.optim.Adam(params,lr0.001,betas(0.9,0.999),eps1e-8,weight_decay0,amsgradFalse,*,foreachNone,maximizeFalse,capturableFalse,differentiableFalse,fusedNone) 类torch.optim.Adam实现Adam算法 Adam算法描述 输入:初始化:for t1 to ...do if maximi…

基于AI将普通RGB图像转换为苹果Vision Pro支持的空间照片

将 RGB 图像转换为空间图片 一、引言 随着AR和VR技术的普及,空间照片格式(.HEIC)逐渐受到关注。这种格式允许用户在AR/VR设备上体验到更为真实的立体空间效果。为了让更多的普通图片也能享受这种技术,我们开发了这款可以将普通RGB图像转换为苹果Vision Pro支持的.HEIC格式的…