天翼云登录参数JavaSrcipt逆向

天翼云登录参数 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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【摸鱼日常】使用Docker部署2048小游戏

一、本次实践介绍 ​1. 本次实践简介 本次实践部署环境为个人测试环境&#xff0c;快速使用docker部署2048小游戏。 rootWellDone:/home/goodjob# uname -aLinux WellDone 6.5.0-14-generic #14~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 20 18:15:30 UTC 2 x86_64 x86_64…

从零开始手写mmo游戏从框架到爆炸(二十四)— 装备系统二

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 本章主要是补充装备工厂&#xff0c;增加根据野怪等级和品质获得装备的方法&#xff1a; 增加的代码如下- EquipmentFactory: public static Equipment createEquipment(Monste…

pyspark分布式部署随机森林算法

前言 分布式算法的文章我早就想写了&#xff0c;但是一直比较忙&#xff0c;没有写&#xff0c;最近一个项目又用到了&#xff0c;就记录一下运用Spark部署机器学习分类算法-随机森林的记录过程&#xff0c;写了一个demo。 基于pyspark的随机森林算法预测客户 本次实验采用的…

目标检测-Transformer-ViT和DETR

文章目录 前言一、ViT应用和结论结构及创新点 二、DETR应用和结论结构及创新点 总结 前言 随着Transformer爆火以来&#xff0c;NLP领域迎来了大模型时代&#xff0c;成为AI目前最先进和火爆的领域&#xff0c;介于Transformer的先进性&#xff0c;基于Transformer架构的CV模型…

240Hz高刷电竞显示器 - HKC VG253KM

&#x1f389;&#x1f389;&#x1f389; 各位电竞爱好者们&#xff0c;今天给大家带来一款神秘武器&#xff0c;一款能够让你在游戏中大展拳脚的高刷电竞显示器 - HKC VG253KM&#xff01;&#x1f525;&#x1f525;&#x1f525; 这款显示器&#xff0c;哎呀&#xff0c;真…

【Vue3】插槽使用和animate使用

插槽使用 插槽slot匿名插槽具名插槽插槽作用域简写 动态插槽transition动画组件自定义过渡class类名如何使用animate动画库组件动画生命周期appear transition- group过渡列表 插槽slot 插槽就是子组件中提供给父组件使用的一个占位符父组件可以在这个占位符智能填充任何模板代…

深度学习 精选笔记(3)线性神经网络-线性回归

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

spring boot 集成科大讯飞星火认知大模型

首先到官网https://console.xfyun.cn/services/aidoc申请key 一、安装依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&…

记录 | docker权限原因导致service ssh start失败

【报错】 容器内启 ssh server 报错 有两个错&#xff1a; &#xff08;1&#xff09;/etc/ssh/sshd_host_rsa_key 权限太高&#xff1b; &#xff08;2&#xff09;/run/sshd用户组不为 root 解决方法&#xff1a; 方法一&#xff1a; 各自容器内对/etc/ssh/sshd_host_r…

41.仿简道云公式函数实战-数学函数-SUMIF

1. SUMIF函数 SUMIF 函数可用于计算子表单中满足某一条件的数字相加并返回和。 2. 函数用法 SUMIF(range, criteria, [sum_range]) 其中各参数的含义及使用方法如下&#xff1a; range&#xff1a;必需&#xff1b;根据 criteria 的条件规则进行检测的判断字段。支持的字段…

Spring篇----第九篇

系列文章目录 文章目录 系列文章目录前言一、@Qualifier 注解有什么用?二、@RequestMapping 注解有什么用?三、spring DAO 有什么用?四、列举 Spring DAO 抛出的异常。前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…

精益思维引领AI创新浪潮:从理念到实践的蜕变!

在人工智能&#xff08;AI&#xff09;飞速发展的今天&#xff0c;精益思维作为一种追求卓越、持续改进的管理哲学&#xff0c;正逐渐成为推动AI创新的重要动力。本文&#xff0c;天行健咨询将探讨精益思维如何与AI创新相结合&#xff0c;以及这种结合如何推动科技进步和社会发…

JetBrains系列工具,配置PlantUML绘图

PlantUML是一个很强大的绘图工具&#xff0c;各种图都可以绘制&#xff0c;具体的可以去官网看看&#xff0c;或者百度。 PlantUML简述 https://plantuml.com/zh/ PlantUML语言参考指引 https://plantuml.com/zh/guide PlantUML语言是依赖Graphviz进行解析的。Graphviz是开源…

每日一题 2867统计树中的合法路径

2867. 统计树中的合法路径数目 题目描述&#xff1a; 给你一棵 n 个节点的无向树&#xff0c;节点编号为 1 到 n 。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi] 表示节点 ui 和 vi 在树中有一条边。 请你返回树中的 合法路…

【Linux深入剖析】进程优先级 | 命令行参数 | 环境变量

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.进程优先级2.Linux…

hot100刷题记录-哈希

一、两数之和 题目&#xff1a;https://leetcode.cn/problems/two-sum/description/?envTypestudy-plan-v2&envIdtop-100-liked 方法1&#xff1a;枚举 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for id, num in enumerate(nums)…

jmeter 按线程数阶梯式压测数据库

当前版本&#xff1a; jmeter 5.6.3mysql 5.7.39 简介 JMeter 通过 bzm - Concurrency Thread Group 来实现阶梯式压测&#xff0c;它并不是JMeter的官方插件&#xff0c;而是一种由Blazemeter提供的高级线程组插件。可以在不同的时间内并发执行不同数量的线程&#xff0c;模拟…

相册图片怎么压缩?3种方法教你压缩图片

相册图片怎么压缩&#xff1f;相册图片压缩在日常生活中扮演着至关重要的角色。它不仅能够帮助我们节省手机或电脑的存储空间&#xff0c;避免设备因存储空间不足而运行缓慢&#xff0c;还能显著减少图片在上传、下载或分享时的时间。此外&#xff0c;压缩图片还能在一定程度上…

[算法沉淀记录] 排序算法 —— 选择排序

排序算法 —— 选择排序 基本概念 选择排序是一种简单的排序算法&#xff0c;它的工作原理是每次从待排序的列表中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其与列表中的第一个位置交换&#xff0c;然后继续对剩余的元素进行排序&#xff0c;直到整个列表…

【Java程序员面试专栏 算法思维】四 高频面试算法题:回溯算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间岛屿数量网格搜索分别向上下左右四个方向探索,遇到海洋…