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

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

相关文章:

天翼云登录参数JavaSrcipt逆向

天翼云登录参数 password 、comParam_curTime、comParam_seqCode、comParam_signature JavaSrcipt逆向 目标网站 https://m.ctyun.cn/wap/main/auth/login?redirect/my 目标参数 要逆向的有 password、comParam_curTime、comParam_seqCode、comParam_signature 四个参数 …...

AI与大数据:智慧城市安全的护航者与变革引擎

一、引言 在数字化浪潮的席卷下&#xff0c;智慧城市正成为现代城市发展的新方向。作为城市的神经系统&#xff0c;AI与大数据的融合与应用为城市的安全与应急响应带来了革命性的变革。它们如同城市的“智慧之眼”和“聪明之脑”&#xff0c;不仅为城市管理者提供了强大的决策…...

adb pull 使用

adb pull 是 Android Debug Bridge (ADB) 工具提供的一个命令&#xff0c;用于将设备上的文件拷贝到计算机上。通过 adb pull 命令&#xff0c;实现从 Android 设备上获取文件并保存到本地计算机上。 使用 adb pull 命令的基本语法如下&#xff1a; adb pull <设备路径>…...

算法【线性表的查找-顺序查找】

线性表的查找-顺序查找 顺序查找基本思想应用范围顺序表的表示数据元素类型定义查找算法示例分析 时间效率分析顺序查找的特点如何提高查找效率 顺序查找 基本思想 在表的多种结构定义方式中&#xff0c;线性表是最简单的一种。而顺序查找是线性表查找中最简单的一种。 顺序查…...

力扣1143. 最长公共子序列(动态规划)

Problem: 1143. 最长公共子序列 文章目录 题目描述思路复杂度Code 题目描述 思路 我们统一标记&#xff1a;str1[i]代表text1表示的字符数组&#xff0c;str2[j]代表text2表示的字符数组&#xff1b;LCS代表最长的公共子序列&#xff1b;&#xff08;我们易得只有str1[i]和str…...

如何使用群晖NAS中FTP服务开启与使用固定地址远程上传下载本地文件?

文章目录 1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP地址连接 本文主要介绍如何在群晖NAS中开启FTP服务并结合cpolar内网穿透工具&#xff0c;实现使用固定公网地址远程访问群晖FTP服务实现文件上传下载。 Cpolar内…...

C语言文件知识点

一.解释一些问题 1.标准输入文件&#xff08;sdtin&#xff09;&#xff0c;通常对应终端的键盘。 2.标准输出文件&#xff08;stdout&#xff09;和标准错误输出文件&#xff08;stderr&#xff09;&#xff0c;这两个文件 都对应终端的屏幕。 &#xff08;解释&#xff1a…...

C语言:数组指针 函数指针

C语言&#xff1a;数组指针 & 函数指针 数组指针数组名 数组访问二维数组 函数指针函数指针使用回调函数 typedef关键字 数组指针 数组本质上也是一个变量&#xff0c;那么数组也有自己的地址&#xff0c;指向整个数组的指针&#xff0c;就叫做数组指针。 我先为大家展示…...

全面介绍HTML的语法!轻松写出网页

文章目录 heading(标题)paragraph(段落)link(超链接)imagemap(映射)table(表格)list(列表)layout(分块)form(表单)更多输入:datalistautocompleteautofocusmultiplenovalidatepatternplaceholderrequired head(首部)titlebaselinkstylemetascriptnoscript iframe HTML&#xff…...

数学建模【相关性模型】

一、相关性模型简介 相关性模型并不是指一个具体的模型&#xff0c;而是一类模型&#xff0c;这一类模型用来判断变量之间是否具有相关性。一般来说&#xff0c;分析两个变量之间是否具有相关性&#xff0c;我们根据数据服从的分布和数据所具有的特点选择使用pearson&#xff…...

「优选算法刷题」:字母异位词分组

一、题目 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "na…...

【教程】 iOS混淆加固原理篇

目录 摘要 引言 正文 1. 加固的缘由 2. 编译过程 3. 加固类型 1) 字符串混淆 2) 类名、方法名混淆 3) 程序结构混淆加密 4) 反调试、反注入等一些主动保护策略 4. 逆向工具 5. OLLVM 6. IPA guard 7. 代码虚拟化 总结 摘要 本文介绍了iOS应用程序混淆加固的缘由…...

《银幕上的编码传奇:计算机科学与科技精神的光影盛宴》

目录 1.在电影的世界里&#xff0c;计算机科学不仅是一门严谨的学科&#xff0c;更是一种富有戏剧张力和人文思考的艺术载体。 2.电影作为现代文化的重要载体&#xff0c;常常以其丰富的想象力和视觉表现力来探讨计算机科学和技术的各种前沿主题。 3.电影中的程序员角色往往…...

linux提权之sudo风暴

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …...

数据结构之:跳表

跳表&#xff08;Skip List&#xff09;是一种概率性数据结构&#xff0c;它通过在普通有序链表的基础上增加多级索引层来实现快速的查找、插入和删除操作。跳表的效率可以与平衡树相媲美&#xff0c;其操作的时间复杂度也是O(log n)&#xff0c;但跳表的结构更简单&#xff0c…...

matlab 线性四分之一车体模型

1、内容简介 略 57-可以交流、咨询、答疑 路面采用公式积分来获得&#xff0c;计算了车体位移、非悬架位移、动载荷等参数 2、内容说明 略 3、仿真分析 略 线性四分之一车体模型_哔哩哔哩_bilibili 4、参考论文 略...

LeetCode第二题: 两数相加

文章目录 题目描述示例 解题思路 - 迭代法Go语言实现 - 迭代法算法分析 解题思路 - 模拟法Go语言实现 - 模拟法算法分析 解题思路 - 优化模拟法主要方法其他方法的考虑 ‍ 题目描述 给出两个非空的链表用来表示两个非负的整数。其中&#xff0c;它们各自的位数是按照逆序的方…...

web组态插件

插件演示地址&#xff1a;http://www.byzt.net 关于组态软件&#xff0c;首先要从组态的概念开始说起。 什么是组态 组态&#xff08;Configure&#xff09;的概念来自于20世纪70年代中期出现的第一代集散控制系统&#xff08;Distributed Control System&#xff09;&#xf…...

Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分&#xff0c;其启动过程是从Java部分的初始化开始&#xff0c;进而完成Native部分的初始化。 □创建新的IMS对象。 □调用IMS对象的start&#xff08;&#xff09;函数完成启动 同其他系统服务一样&#xff0c;IMS在SystemServer中的ServerT…...

搜维尔科技:【周刊】适用于虚拟现实VR中的OptiTrack

适用于 VR 的 OptiTrack 我们通过优化对虚拟现实跟踪最重要的性能指标&#xff0c;打造世界上最准确、最易于使用的广域 VR 跟踪器。其结果是为任何头戴式显示器 (HMD) 或洞穴自动沉浸式环境提供超低延迟、极其流畅的跟踪。 OptiTrack 主动式 OptiTrack 世界领先的跟踪精度和…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...