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

某校帮签到小程序m 加密参数解析

小程序解密清参考我以前的文章
VX小程序逆向

js版本

function n(e, a) {var t = (65535 & e) + (65535 & a);return (e >> 16) + (a >> 16) + (t >> 16) << 16 | 65535 & t
};function i(e, a, t, n, r, i, s) {return o(a & n | t & ~n, e, a, r, i, s)
};function o(e, a, t, o, r, i) {return n(function(e, a) {return e << a | e >>> 32 - a}(n(n(a, e), n(o, i)), r), t)
};function r(e, a, t, n, r, i, s) {return o(a & t | ~a & n, e, a, r, i, s)
};function s(e, a, t, n, r, i, s) {return o(a ^ t ^ n, e, a, r, i, s)
};function c(e, a, t, n, r, i, s) {return o(t ^ (a | ~n), e, a, r, i, s)
};function hexMD5(e) {console.log(e)return function(e) {for (var a = "0123456789abcdef", t = "", n = 0; n < 4 * e.length; n++) t += a.charAt(e[n >> 2] >> n % 4 * 8 + 4 & 15) + a.charAt(e[n >> 2] >> n % 4 * 8 & 15);return t}(function(e) {for (var a = 1732584193, t = -271733879, o = -1732584194, g = 271733878, d = 0; d < e.length; d += 16) {var l = a,p = t,u = o,m = g;a = r(a, t, o, g, e[d + 0], 7, -680876936), g = r(g, a, t, o, e[d + 1], 12, -389564586), o = r(o, g, a, t, e[d + 2], 17, 606105819), t = r(t, o, g, a, e[d + 3], 22, -1044525330);a = r(a, t, o, g, e[d + 4], 7, -176418897), g = r(g, a, t, o, e[d + 5], 12, 1200080426), o = r(o, g, a, t, e[d + 6], 17, -1473231341), t = r(t, o, g, a, e[d + 7], 22, -45705983), a = r(a, t, o, g, e[d + 8], 7, 1770035416), g = r(g, a, t, o, e[d + 9], 12, -1958414417), o = r(o, g, a, t, e[d + 10], 17, -42063), t = r(t, o, g, a, e[d + 11], 22, -1990404162), a = r(a, t, o, g, e[d + 12], 7, 1804603682), g = r(g, a, t, o, e[d + 13], 12, -40341101), o = r(o, g, a, t, e[d + 14], 17, -1502002290), a = i(a, t = r(t, o, g, a, e[d + 15], 22, 1236535329), o, g, e[d + 1], 5, -165796510), g = i(g, a, t, o, e[d + 6], 9, -1069501632), o = i(o, g, a, t, e[d + 11], 14, 643717713), t = i(t, o, g, a, e[d + 0], 20, -373897302), a = i(a, t, o, g, e[d + 5], 5, -701558691), g = i(g, a, t, o, e[d + 10], 9, 38016083), o = i(o, g, a, t, e[d + 15], 14, -660478335), t = i(t, o, g, a, e[d + 4], 20, -405537848), a = i(a, t, o, g, e[d + 9], 5, 568446438), g = i(g, a, t, o, e[d + 14], 9, -1019803690), o = i(o, g, a, t, e[d + 3], 14, -187363961), t = i(t, o, g, a, e[d + 8], 20, 1163531501), a = i(a, t, o, g, e[d + 13], 5, -1444681467), g = i(g, a, t, o, e[d + 2], 9, -51403784), o = i(o, g, a, t, e[d + 7], 14, 1735328473), a = s(a, t = i(t, o, g, a, e[d + 12], 20, -1926607734), o, g, e[d + 5], 4, -378558), g = s(g, a, t, o, e[d + 8], 11, -2022574463), o = s(o, g, a, t, e[d + 11], 16, 1839030562), t = s(t, o, g, a, e[d + 14], 23, -35309556), a = s(a, t, o, g, e[d + 1], 4, -1530992060), g = s(g, a, t, o, e[d + 4], 11, 1272893353), o = s(o, g, a, t, e[d + 7], 16, -155497632), t = s(t, o, g, a, e[d + 10], 23, -1094730640), a = s(a, t, o, g, e[d + 13], 4, 681279174), g = s(g, a, t, o, e[d + 0], 11, -358537222), o = s(o, g, a, t, e[d + 3], 16, -722521979), t = s(t, o, g, a, e[d + 6], 23, 76029189), a = s(a, t, o, g, e[d + 9], 4, -640364487), g = s(g, a, t, o, e[d + 12], 11, -421815835), o = s(o, g, a, t, e[d + 15], 16, 530742520), a = c(a, t = s(t, o, g, a, e[d + 2], 23, -995338651), o, g, e[d + 0], 6, -198630844), g = c(g, a, t, o, e[d + 7], 10, 1126891415), o = c(o, g, a, t, e[d + 14], 15, -1416354905), t = c(t, o, g, a, e[d + 5], 21, -57434055), a = c(a, t, o, g, e[d + 12], 6, 1700485571), g = c(g, a, t, o, e[d + 3], 10, -1894986606), o = c(o, g, a, t, e[d + 10], 15, -1051523), t = c(t, o, g, a, e[d + 1], 21, -2054922799), a = c(a, t, o, g, e[d + 8], 6, 1873313359), g = c(g, a, t, o, e[d + 15], 10, -30611744), o = c(o, g, a, t, e[d + 6], 15, -1560198380), t = c(t, o, g, a, e[d + 13], 21, 1309151649), a = c(a, t, o, g, e[d + 4], 6, -145523070), g = c(g, a, t, o, e[d + 11], 10, -1120210379), o = c(o, g, a, t, e[d + 2], 15, 718787259), t = c(t, o, g, a, e[d + 9], 21, -343485551), a = n(a, l), t = n(t, p), o = n(o, u), g = n(g, m)}return [a, t, o, g]}(function(e) {for (var a = 1 + (e.length + 8 >> 6), t = new Array(16 * a), n = 0; n < 16 * a; n++) t[n] = 0;for (n = 0; n < e.length; n++) t[n >> 2] |= (255 & e.charCodeAt(n)) << n % 4 * 8;return t[n >> 2] |= 128 << n % 4 * 8, t[16 * a - 2] = 8 * e.length, t}(e)))
}function getTokenData(e, a) {var o = ["content", "deviceName", "keyWord", "blogBody", "blogTitle", "getType", "responsibilities", "street", "text", "reason", "searchvalue", "key", "answers", "leaveReason", "personRemark", "selfAppraisal", "imgUrl", "wxname", "deviceId", "avatarTempPath", "file", "file", "model", "brand", "system", "deviceId", "platform", "code", "openId", "unionid", "clockDeviceToken", "clockDevice"];var r = new RegExp("[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]");for (var t = ["5", "b", "f", "A", "J", "Q", "g", "a", "l", "p", "s", "q", "H", "4", "L", "Q", "g", "1", "6", "Q", "Z", "v", "w", "b", "c", "e", "2", "2", "m", "l", "E", "g", "G", "H", "I", "r", "o", "s", "d", "5", "7", "x", "t", "J", "S", "T", "F", "v", "w", "4", "8", "9", "0", "K", "E", "3", "4", "0", "m", "r", "i", "n"], n = [], i = 0; i < 62; i++) n.push(i + "");var s = Math.round((new Date).getTime() / 1e3),c = function(e, a) {for (var t, n, o = e.slice(0), r = e.length, i = r - a; r-- > i;) t = o[n = Math.floor((r + 1) * Math.random())], o[n] = o[r], o[r] = t;return o.slice(i)}(n, 20),g = "";c.forEach((function(e, a) {g += t[e]}));var d, l = function(e) {for (var a = Object.keys(e).sort(), t = {}, n = 0; n < a.length; n++) t[a[n]] = e[a[n]];return t}(e),p = "";for (d in l) - 1 != ["content", "deviceName", "keyWord", "blogBody", "blogTitle", "getType", "responsibilities", "street", "text", "reason", "searchvalue", "key", "answers", "leaveReason", "personRemark", "selfAppraisal", "imgUrl", "wxname", "deviceId", "avatarTempPath", "file", "file", "model", "brand", "system", "deviceId", "platform", "code", "openId", "unionid", "clockDeviceToken", "clockDevice"].indexOf(d) || r.test(l[d]) || (p += l[d]);return p += s, p = (p = (p = (p = (p = (p = (p = (p = (p += g).replace(/\s+/g, "")).replace(/\n+/g, "")).replace(/\r+/g, "")).replace(/</g, "")).replace(/>/g, "")).replace(/&/g, "")).replace(/-/g, "")).replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, ""), p = encodeURIComponent(p), {md5: p = hexMD5(p),tstr: s,iArrStr: c && 0 < c.length ? c.join("_") : ""}
}getTokenData({},"*****************.action")

python3版本

import random
import time
import hashlib
import urllib.parse
import redef get_token_data(e, a):keywords = ["content", "deviceName", "keyWord", "blogBody", "blogTitle", "getType", "responsibilities", "street","text", "reason", "searchvalue", "key", "answers", "leaveReason", "personRemark", "selfAppraisal","imgUrl", "wxname", "deviceId", "avatarTempPath", "file", "file", "model", "brand", "system","deviceId", "platform", "code", "openId", "unionid", "clockDeviceToken", "clockDevice"]special_chars_pattern = r"[`~!@#$%^&*()+=|{}':;',\[\].<>/?~!@#¥%……&*()——+|{}&#8203;``【oaicite:0】``&#8203;‘;:”“’。,、?]"char_set = ["5", "b", "f", "A", "J", "Q", "g", "a", "l", "p", "s", "q", "H", "4", "L", "Q", "g", "1", "6", "Q", "Z","v", "w", "b", "c", "e", "2", "2", "m", "l", "E", "g", "G", "H", "I", "r", "o", "s", "d", "5", "7", "x","t", "J", "S", "T", "F", "v", "w", "4", "8", "9", "0", "K", "E", "3", "4", "0", "m", "r", "i", "n"]n = [str(i) for i in range(31)]current_time = int(time.time())def shuffle_array(arr, size):shuffled = arr.copy()i = 0while i < size:index = random.randint(i, len(shuffled) - 1)shuffled[i], shuffled[index] = shuffled[index], shuffled[i]i += 1return shuffled[size:]iArr = shuffle_array(n, 20)print(iArr)g = "".join([char_set[int(e)] for e in iArr])def sort_dict_by_key(data):return dict(sorted(data.items(), key=lambda x: x[0]))p = ""for key in sort_dict_by_key(e):if key not in keywords and not re.search(special_chars_pattern, e[key]):p += e[key]p += str(current_time)p = re.sub(r"\s+", "", p)p = re.sub(r"\n+", "", p)p = re.sub(r"\r+", "", p)p = re.sub(r"<", "", p)p = re.sub(r">", "", p)p = re.sub(r"&", "", p)p = re.sub(r"-", "", p)p = re.sub(r"\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]", "", p)p = urllib.parse.quote(p + g)md5_hash = hashlib.md5()md5_hash.update(p.encode())md5_digest = md5_hash.hexdigest()return {"md5": md5_digest,"tstr": current_time,"iArrStr": "_".join(iArr) if len(iArr) > 0 else ""}# 示例用法
data = {}
result = get_token_data(data, "student/clock/GetPlan!getDefault.action")
print(result)

相关文章:

某校帮签到小程序m 加密参数解析

小程序解密清参考我以前的文章 VX小程序逆向 js版本 function n(e, a) {var t (65535 & e) (65535 & a);return (e >> 16) (a >> 16) (t >> 16) << 16 | 65535 & t };function i(e, a, t, n, r, i, s) {return o(a & n | t &…...

Node.js |(六)express框架 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;express使用&#x1f407;初体验&#x1f407;express路由⭐️路由的使用⭐️获取请求参数⭐️获取路由参数&#x1f525;练习&#xff1a;根据路由参数响应歌手信息…...

包教包会:Mysql主从复制搭建

笑小枫的专属目录 一、无聊的理论知识1. 主从复制原理2. 主从复制的工作过程3. MySQL四种同步方式 二、docker下安装、启动mysql1. 安装主库2. 安装从库 三、配置Master(主)四、配置Slave(从)五、链接Master(主)和Slave(从)六、主从复制排错1. 错误&#xff1a;error connectin…...

Subset Selection

白话解释&#xff1a;https://www.geeksforgeeks.org/feature-subset-selection-process/ 貌似有一种比较常见的方法&#xff0c;称为多元逐步回归有3种筛选自变量的方法 &#xff08;1&#xff09;向前法&#xff1a;n个因变量情况&#xff0c;慢慢增加因变量到方程中&#x…...

【测开求职】面试题:计算机网络 精简版整理

本篇文章整理的是在秋招过程中遇到的计算机网络高频面试题,应付部分中小厂的测试开发工程师面试完全没有问题,如果时间充足的话,建议再看一下笔者的另外一篇文章:【测开求职】面试题:计算机网络 详细版整理,会让你对整个计算机网络有足够全面深刻的理解,亲测应付各个大厂…...

设计模式-代理模式(delegate)

什么是代理&#xff1f; 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方…...

MongoDB 安装与配置

MongoDB 安装与配置 MongoDB 是一个高性能、开源的 NoSQL 数据库&#xff0c;它提供了丰富的查询功能和高可用性。本文将详细讲解 MongoDB 的安装与配置过程。 1. MongoDB 安装 1.1 Windows 平台安装 下载 MongoDB 安装包 访问 MongoDB 官方下载页面&#xff08;https://w…...

rabbitMq创建交换机,以及路由键绑定队列教程

创建交换机&#xff1a; 创建队列&#xff1a; 创建路由&#xff0c;绑定到交换机&#xff1a;...

odoo16前端框架源码阅读——ormService.js

odoo16前端框架源码阅读——ormService.js 路径&#xff1a;addons\web\static\src\core\orm_service.js 简单翻译一下代码中的注释&#xff1a; ORM服务是js代码和python的ORM层通信的标准方法。 然后讲了One2many and Many2many特使的指令格式&#xff0c;每个指令都是3元…...

详谈滑动窗口算法与KMP算法区别以及二者在什么场景下使用

什么是滑动窗口算法 滑动窗口算法是一种用于解决数组&#xff08;或字符串&#xff09;中子数组&#xff08;或子字符串&#xff09;问题的算法。该算法通过维护一个固定大小的窗口&#xff08;通常是两个指针&#xff09;&#xff0c;该窗口在数组上滑动&#xff0c;以寻找符…...

k8s、数据存储

数据存储的概念 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的状态&#xff08;镜像最初的状态&#xff09;…...

Vue生命周期全解析:从工厂岗位到任务执行,一览无遗!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、生…...

常见产品结构四大类型 优劣势比较

一般&#xff0c;我们通过产品架构来构建用户体验&#xff0c;这样可以提供更清晰的导航和组织、优化用户流程和交互、增强产品的可扩展性和可维护性&#xff0c;提升用户的满意度和忠诚度。如果没有明确的产品结构&#xff0c;可能会导致功能冗余或功能缺失、交互流程混乱等问…...

如何优雅的开发?试试这个低代码项目

一、前言 众所周知&#xff0c;开发一个大型的企业级系统&#xff0c;公司往往需要大量的人力做支持后盾&#xff0c;如需要需求分析师、数据库管理员、前台美工、后台程序员、测试人员等。 在快速发展中的企业里&#xff0c;尤其是中小企业&#xff0c;都是一个萝卜多个坑&…...

个人开发常用idea插件

idea重装后必须要配置的几项&#xff1a; Maven&#xff1a; File-->Settings-->Maven字体&#xff1a; IDE字体设置&#xff1a;File-->Settings-->Appearance&#xff0c;设置成Consolas&#xff0c;Size&#xff1a;18代码字体设置&#xff1a;File-->Setti…...

如何使用ArcGIS Pro制作个性三维地形图

制作三维地图制作的多了&#xff0c;想着能不能换个“口味”&#xff0c;恰好看见制作六边形蜂窝图&#xff0c;灵光一闪&#xff0c;想着将二者结合&#xff0c;将平滑的三维地形图改成柱状图&#xff0c;从结果来看还可以&#xff0c;这里将制作方法分享给大家&#xff0c;希…...

支撑企业数字化经营,《2023指标平台白皮书》正式发布

导语 随着宏观经济步入新常态和市场不确定性加剧&#xff0c;我国企业的经营环境正在发生深刻变化。为了更好地应对挑战&#xff0c;企业需转向高质量发展&#xff0c;通过精细化管理等手段优化业务结构、提高运营效率和创新能力。在数字经济时代&#xff0c;借助数字化手段实现…...

【Linux】Linux的两种连接文件方法(ln | 符号链接和硬链接)

在一次线上配置文件时&#xff0c;不小心将配置文件config.py放在了错误的地方&#xff0c;而目前项目已经运行&#xff0c;又不能重新配置启动项目&#xff0c;那么如何将其他地方的文件放在当前配置目录来使用&#xff0c;并实现其他地方文件改动&#xff0c;配置目录下文件也…...

vue 点击滑动到页面指定位置(点击下滑滚动)的功能

需求 点击页面上的 文字 滑动到页面指定位置 三种方法 document.getElementById(show).scrollIntoView() // 默认滚动至节点置顶document.getElementById(show).scrollIntoView(false) // 默认滚动至节点显示document.getElementById(show).scrollIntoView({ behavior: &quo…...

LCD婴儿电子秤pcba/芯片方案设计

一、LCD婴儿秤方案技术规格 1&#xff0e;额定量程&#xff1a;20Kg 2&#xff0e;分度值&#xff1a;D10g、0.02LB 3&#xff0e;最小秤量&#xff1a;20G. 4&#xff0e;单位&#xff1a;KG/LB/LB&#xff1a;OZ 5&#xff0e;归零范围&#xff1a;满量程 6&#xff0e;低压侦…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...