工大助手电费查询接口讲解

工大助手电费查询接口讲解

本人是工大的一名学生,平时没事就喜欢写写代码,今天我来教大家解析学校电费查询接口中的参数,首先打开工大助手的web端https://huthelper.cn/,先登录,进入电费查询栏,进去network发现接口地址https://api.huthelper.cn/api/v3/get/power_e/1/30/412/1740*******9/8c53c79c80********95423461a83d299cac3706/1dcf5b3dab025ddeffcbab3e49dfb5c7198a92c9
只有最后一部分1dcf5b3dab025ddeffcbab3e49dfb5c7198a92c9是关键的,中间部分是写死的,所以我们要做的就是拿到最后这一部分的参数,下面我们一起来解析这个接口:
在这里插入图片描述
在浏览器中右键检查,选中查询按钮可以找到这个按钮的点击事件
在这里插入图片描述
但是点进去之后发现所有的js全部是压缩的,这样就没法打断点了,所以我们接触fildder这个工具将部分js文件替换为本地的文件,我们只要将本地的js代码进行格式化就行了,经过多次断点调试找到关键性代码在这里在这里插入图片描述
在这里插入图片描述

先是进入第一个函数,参数

e=304121740********98c53c79c80d6d5a27995423461a83d299cac37061

经过对参数的分析发现参数的构成是

宿舍楼号码+宿舍门牌号+学号+(固定值)8c53c79c8************61a83d299cac3706+校区代码(0或者1)

在第一个函数的最开始调用了第二个函数,从函数名就不难发现这个函数是将传进来的字符串变成字节数组,现在我们用java来模拟这个过程

//获取第一步处理后的数组
public static long[] oneStep(String str){byte[] e = str.getBytes() ;int[] n = byteToWords(e) ;int o = 8*e.length ;int[] i = new int[80] ;long s = 1732584193 ;long c = - 271733879 ;long u = -1732584194 ;long l = 271733878 ;long f = -1009589776 ;n[o >> 5] |= 128 << 24  - o % 32 ;n[15 + (o + 64 >>> 9 << 4)] = o ;for (int p = 0; p < n.length; p += 16) {long m = s, h = c, d = u, y = l, v = f;for (int b = 0; b < 80; b++) {if (b < 16)i[b] = n[p + b];else {long g = (int)(i[b - 3] ^ i[b - 8] ^ i[b - 14] ^ i[b - 16]);i[b] = (g <= Integer.MAX_VALUE ? (int)g << 1 : (int)(g << 1)) | (g <= Integer.MAX_VALUE ? (int)g >>> 31 : (int)(g >>> 31)) ;}long a1 = s <= Integer.MAX_VALUE ? (int)s << 5 :  (int) (s << 5) ; long a2 = i[b] & 0x0FFFFFFFFl; long a6 = s <= Integer.MAX_VALUE ? (int)s >>> 27 : (int)((s & 0x0FFFFFFFFl ) >> 27) ;long a3 = (int)(c & u | ~c & l) ;long a4 = (int)(c ^ u ^ l) ;long a5 = (int)(c & u | c & l | u & l) ;long w = (a1 | a6) + f + a2 + (b < 20 ? 1518500249l + a3 : b < 40 ? 1859775393l + a4 : b < 60 ? a5 - 1894007588l : a4 - 899497514l);f = l;l = u;u = c <= Integer.MAX_VALUE ?  ((int)c << 30) | ((int)c >>> 2) : (int)(c << 30 | (c & 0x0FFFFFFFFl) >>> 2) ;c = s ;s = w <= Integer.MAX_VALUE ? (int)w : w ;}s += m;c += h;u += d;l += y;f += v ;}return new long[]{s , c , u , l , f} ;
}

因为在js中的数据类型和java有比较大的区别,经过断点调试发现里面有很多次数据大小超过了int型,所以我在java中使用长整形long来模拟,然后就是 >>> 这个运算符java中运行结果和js有区别,通过查资料发现 >>> 和 >> 的区别是 >>>会先将数据转换为无符号类型,所以我们在java中使用 >> 来模拟js中的 >>> ,先将数据和0x0FFFFFFFFl做与运算,再将数据进行移位就可以和js运行结果一致了,但是这个函数返回的也是一个数组,而我们要的是类似于1dcf5b3dab025ddeffcbab3e49dfb5c7198a92c9这样的字符串,

所以我们找运行完这个方法又跳到哪个方法中去了,通过一些断点找到了之后跳到那个方法了
在这里插入图片描述
通过调试发现浏览器依次执行了这三个方法,我们用java来模拟这三个方法,

public static int[] byteToWords(byte[] e){int[] t = new int[32] ;for(int n=0 ,r=0 ; n<e.length ; n++ , r+=8){t[r >>> 5] |= e[n] << 24 - r%32 ;}return t ;
}public static List<Long> wordsToBytes(long[] e){List<Long> t = new ArrayList<Long>() ; for (int n = 0; n < 32 * e.length; n += 8)t.add(e[n >>> 5] >>> 24 - n % 32 & 255);return t ;
}public static String bytesToHex(List<Long> e){StringBuffer buff = new StringBuffer() ;for (Long l : e) {buff.append(Integer.toHexString((int) (l >>> 4)));buff.append(Integer.toHexString((int) (15 & l))) ;}return buff.toString() ;
}

好的然后写一个方法调用这些方法来生成一个可用的访问地址,

/*** * @param a 宿舍楼号* @param b 宿舍门牌号* @param c 学生学号* @param d 校区* @return*/
public static String getUrl(String a , String b , String c , Integer d){if(d != 1 && d != 2){throw new RuntimeException("校区不存在") ;}String str = a+b+c+"8c53c79c80d6d5a27995423461a83d299cac3706"+d ;long[] data = oneStep(str) ;List<Long> list = wordsToBytes(data) ;String key = bytesToHex(list);String url = "https://api.huthelper.cn/api/v3/get/power_e/"+d+"/"+a+"/"+b+"/"+c+"/8c53c79**************423461a83d299cac3706/"+key ;return url ;
}

在main方法中调试一下,将a写成学校任意楼号,b写该楼号的宿舍门牌号,c写一个学生学号,d写校区代码,所以在main方法中这样调用一下就行了

public static void main(String[] args) throws IOException {String path = getUrl("31", "410", "1740************9", 2);System.out.println(path) ;
}

程序允熙那个结果:

https://api.huthelper.cn/api/v3/get/power_e/2/31/413/1740**********9/8c5*******************461a83d299cac3706/f71326845b45b0c45c42371bdf139ac1aeb916f5

这个地址在任意浏览器都可以访问,代码全部在上面了自己整理一下就能用了

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python电费计算:简单高效的解决方案

Python电费计算: 简单高效的解决方案 随着智能家居技术的不断发展&#xff0c;人们越来越依赖电力。对于居家的人们来说&#xff0c;控制电费成本是一个重要的问题。智能计算机语言Python可以用来解决这个问题&#xff0c;为您的电费账单带来显著的改进。 简介 Python是一门…

chatgpt赋能python:Python计算电费

Python计算电费 电费是我们生活中必须面对的问题&#xff0c;尤其是在家庭和企业中&#xff0c;电费成为了必须要关注和计算的重要问题。本文将介绍如何使用Python计算电费&#xff0c;并为读者提供一个可靠的计算模型。 Python简介 Python是一种计算机编程语言&#xff0c;…

「AMD史上最大芯片」炸场CES:1460亿晶体管,可大幅压缩ChatGPT训练时间

鱼羊 Alex 发自 凹非寺量子位 | 公众号 QbitAI 一颗芯片塞进1460亿个晶体管。 还号称能将ChatGPT、DALLE等大模型的训练时间&#xff0c;从几个月缩短到几周&#xff0c;节省百万美元电费。 就在科技春晚CES 2023上&#xff0c;苏妈带着AMD“迄今为止最大芯片”来炸场子了。 这…

tomcat的配置

学习目标&#xff1a; tomcat配置 疑难杂症&#xff1a; 刚开始时候&#xff0c;下载的版本是tomcat 10版本&#xff0c;start.bat启动时&#xff0c;会出现一闪而过的情况&#xff0c;代表着没有配置成功&#xff0c;后来换成了tomcat 9版本&#xff0c;一下子就成功了&#…

为AI大模型打破算力瓶颈,腾讯云的第三次网络架构进化

毫无疑问&#xff0c;2023年正式进入了AIGC元年。从2019年3亿参数的Bert打开了预训练大模型之门&#xff0c;到2020年1750亿参数GPT-3&#xff0c;再到2021年1.6万亿参数的Switch Transformer&#xff0c;以及2022年底正式上线的ChatGPT&#xff0c;人类就此打开了AI预训练大模…

AI成为“工作刺客”,测试的未来在哪儿?

软件从开发-上线两步走到现在开发-测试-上线三步走&#xff0c;经历了一个重要的过程。测试在其中扮演了重要的角色&#xff0c;从开发自测到专门设立测试工程师&#xff0c;测试工程师从手工测试逐渐转为自动化测试。随着数据变革和开发运维的驱动&#xff0c;自动化测试已经成…

计算机行业会成为下一个土木工程吗?

昨天&#xff0c;在知乎热搜榜上看到一个很有意思的问题&#xff0c;有网友提问&#xff1a;计算机行业会成为下一个土木工程吗&#xff1f; 这个问题&#xff0c;乍一看&#xff0c;很多人说这是对计算机行业的侮辱&#xff0c;但是&#xff0c;咱们行内的人不要太敏感&#x…

再见了,SVN!GitHub 宣布将淘汰 Subversion 支持

来源&#xff1a;InfoQ、编译&#xff1a;核子可乐、Tina 在 Git 的绝对统治下&#xff0c;你还记得 SVN 吗&#xff1f; 明年一月&#xff0c;GitHub 将从 GitHub.com 删除 Subversion 支持&#xff0c;GitHub Enterprise Server 不久后也将遵循此操作。 GitHub 是全球规模最…

百度正式推出「文心一言」,然而港股股价已暴跌近 10%,客观来说其能力与 ChatGPT 相较如何?...

击上方关注 “终端研发部” 设为“星标”&#xff0c;和你一起掌握更多数据库知识 本文首发于我的知乎&#xff1a;- 终端研发部的回答 - 知乎 https://www.zhihu.com/question/589941496/answer/2939249471 近几日&#xff0c;最火的就是ChatGPT了&#xff0c;比如今天推出的G…

重大突破,电脑能用鸿蒙系统了!

因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号&#xff0c;领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇&#xff1a;ChatGPT研究框架&#xff08;80页PPT&#xff0c;附下载&#xff09;…

KeepChatGPT: chatGPT增强插件,解决报错、保持活跃,让AI更丝滑

KeepChatGPT&#xff1a; chatGPT增强插件&#xff0c;解决报错、保持活跃&#xff0c;让AI更丝滑 这是一个ChatGPT的畅聊与增强插件。开源免费。不仅能解决所有报错不再刷新&#xff0c;还有保持活跃、取消审计、克隆对话、净化首页、展示大屏、展示全屏、言无不尽、拦截跟踪…

KeepChatGPT:让你跟chatGPT聊天有更好的体验

点击卡片“大数据实战演练”&#xff0c;选择“设为星标”或“置顶” 回复“资料”可领取独家整理的大数据学习资料&#xff01; 回复“Ambari知识库”可领取独家整理的Ambari学习资料&#xff01; 这是一个ChatGPT的畅聊与增强插件。开源免费。不仅能解决所有报错不再刷新&…

华为公布 HarmonyOS 3 升级最新进展;内部人士回应马斯克决定任命朱晓彤为特斯拉全球 CEO|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

让ChatGPT手把手教我们学操作系统是一种怎样的体验?

大家都知道现在 chatGPT 已经在多个领域展现了及其强大的功力&#xff01;比如文案策划&#xff0c;毕业论文方便&#xff0c;甚至很多程序员都直接让 chatGPT 帮忙写代码了&#xff0c;在一些模板化的代码方面&#xff0c;chatGPT 更展示了优秀的能力。 所以我突然迸发了一个…

chatgpt赋能python:Python记录名单

Python 记录名单 Python 是一种易于上手的编程语言&#xff0c;自其问世以来受到了广泛的应用和欢迎。它的应用范围广泛&#xff0c;从 Web 开发到数据分析和科学计算&#xff0c;从人工智能到机器学习和深度学习&#xff0c;都有着广泛的应用。下面是一个 Python 记录名单&am…

ChatGPT安全性受质疑 国家网信办发布《生成式人工智能服务管理办法(征求意见稿)》

你是否曾经和一款人工智能对话&#xff1f;它们似乎能够理解你的问题&#xff0c;并给出令人满意的答案。ChatGPT是目前最流行的人工智能。它是由OpenAI开发的一款基于GPT技术的自然语言处理模型。 通过训练大量的文本数据&#xff0c;ChatGPT可以理解并回答用户的问题&#xf…

终于放开了,封禁ChatGPT的高校:从“禁用”到“使用”的转变

在不久前&#xff0c;港大成为香港第一所禁止使用ChatGPT的大学&#xff0c;因为学校担心学生借助该工具进行学术剽窃。但是&#xff0c;这一措施在全球范围内已不是新鲜事&#xff0c;不少高校也采取了“禁用”AI工具的手段。然而&#xff0c;禁用可能只是掩耳盗铃。本文将从几…

人工智能机器人ChatGPT爆火没多久,管理规定就出台了

不久前爆火的人工智能聊天机器人ChatGPT&#xff0c;掀起了人工智能问答潮流&#xff1b;还有之前的“过气网红”Deepfake深度合成技术&#xff0c;改进了技术和用户体验&#xff0c;给大家带来了不少新鲜感。 但人工智能问答有时真假难辨&#xff0c;有时还会陷入伦理道德困境…

PMP学习笔记

目录 敏捷专题课 1.敏捷原则与理念 1.1 敏捷的使用场景 1.2 敏捷的“洋葱圈” 1.3 敏捷宣言 1.4 敏捷原则 2.Scrum体系 2.1 Scrum体系----3种角色 2.2 Scrum体系----3种工件 2.3 Scrum体系----5种活动(上) 2.4 Scrum体系----5种活动(下) 3.精益与kanban体系 kanba…