分析逆向案例十七——深圳大学登录逆向(新类型,有些加密参数是通过页面源代码获取的,不同于前面有发包)

网址:aHR0cDovL25ld2F1dGhzZXJ2ZXIuc3p1LmVkdS5jbi9hdXRoc2VydmVyL2xvZ2lu

登陆页面,找到登录接口,发现登录接口是document类型,而不是xhr类型,无法跟栈分析。

 

登陆两次,发现有两个加密参数,lt这个参数也是变化的。 

 

还记得土巴兔那一次的分析吗,可以在元素中搜索authserver/login

 

找到casLoginForm关键词,再搜索

找到疑似加密位置点击进去

 

再第二个encryptAES处打上断点 

 

分析这长串代码:

这段代码定义了两个函数 _etd_etd2,它们都用于对输入的密码进行 AES 加密并将加密后的值设置到表单的 #passwordEncrypt 输入框中。如果加密失败,则直接将未加密的密码设置到该输入框中。

下面是这两个函数的详细解释:

  1. _etd 函数:
    • 参数 _p0:需要加密的密码。
    • 使用默认的加密盐(pwdDefaultEncryptSalt)对密码进行 AES 加密。
    • 将加密后的密码设置到表单 #casLoginForm#passwordEncrypt 输入框中。
    • 如果加密过程出现错误,则将未加密的密码 _p0 设置到 #passwordEncrypt 输入框中。

 

function _etd(_p0) {try {var _p2 = encryptAES(_p0, pwdDefaultEncryptSalt);$("#casLoginForm").find("#passwordEncrypt").val(_p2);} catch(e) {$("#casLoginForm").find("#passwordEncrypt").val(_p0);}
}

_etd2 函数:

  • 参数 _p0:需要加密的密码。
  • 参数 _p1:用于加密的盐值。
  • 使用传入的盐值 _p1 对密码进行 AES 加密。
  • 将加密后的密码设置到表单 #casLoginForm#passwordEncrypt 输入框中。
  • 如果加密过程出现错误,则将未加密的密码 _p0 设置到 #passwordEncrypt 输入框中。
function _etd2(_p0, _p1) {try {var _p2 = encryptAES(_p0, _p1);$("#casLoginForm").find("#passwordEncrypt").val(_p2);} catch(e) {$("#casLoginForm").find("#passwordEncrypt").val(_p0);}
}

学习新知识:

  1. casLoginForm:

    • 假设 casLoginForm 是一个 jQuery 对象,表示登录表单。
  2. find("#username"):

    • casLoginForm 表单中查找 ID 为 username 的输入框,并将其存储在 username 变量中。
  3. find("#password"):

    • casLoginForm 表单中查找 ID 为 password 的输入框,并将其存储在 password 变量中。

最终,这段代码的作用是获取表单中的用户名和密码输入框,以便后续对它们进行操作,比如读取用户输入的值、进行加密等。

var username = casLoginForm.find("#username");
var password = casLoginForm.find("#password");
  1. password.val():

    • password 是之前从表单中获取的密码输入框。
    • .val() 方法用于获取输入框中的值(即用户输入的密码)。
  2. casLoginForm.find("#pwdDefaultEncryptSalt").val():

    • casLoginForm 是登录表单的 jQuery 对象。
    • .find("#pwdDefaultEncryptSalt") 从表单中查找 ID 为 pwdDefaultEncryptSalt 的输入框。
    • .val() 方法用于获取输入框中的值(即用于加密的盐值)。
  3. _etd2 函数:

    • _etd2 函数接受两个参数:第一个参数是密码,第二个参数是用于加密的盐值。
    • 该函数会尝试使用 AES 加密密码,并将加密后的结果设置到表单中的 #passwordEncrypt 输入框中。如果加密失败,则直接将原始密码设置到 #passwordEncrypt 输入框中。

总结一下,这段代码首先获取用户输入的密码和加密盐值,然后调用 _etd2 函数对密码进行加密,并将加密后的密码设置到表单中相应的隐藏输入框内。

_etd2(password.val(), casLoginForm.find("#pwdDefaultEncryptSalt").val());

某变量.find('#某变量1) 一般是从class = 某变量1中取出值

再次点击登录,打印参数,发现果然是这个加密函数,但是又引出了_p1是怎么来的?

 

 

经过上面的分析,大致知道要在源码中去_p1,而且是搜索pwdDefaultEncryptSalt

 

顺便搜索lt,发现果然也在源码中。

 

找齐密钥和加密参数后,回到加密函数encryptAES,进入其中,

再进入_gas函数发现就是一个AES的加密。

 

这个AES需要三个参数,加密的数据_rds(64)+data(data是123456),_p1是密钥,_rds(16)是iv值。

现在就是函数_rds()不知道了。进入_rds(),发现下面代码,没有什么特别的,全部复制下面的内容即可。

总结,这个登录口加密分析:加密lt参数从源码中获得。密码经过AES加密,密钥从源码中获得,把密码和rds生成的内容结合作为最终加密数据,把rds生成的内容作为iv值 。这就是整个的加密流程,可以自己试着写代码!

学到的东西给就是从源码中获取需要的内容,有时是参数的加密值,有时是某种加密方式的密钥。联想古诗文网登录逆向,它里面也有两个加密参数是从源码中获取的。

 

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

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

相关文章

君方智能设计平台-夹点交互编辑架设计与实现

1.背景介绍 在图形平台开发中,实现强大的图形编辑功能对于用户体验至关重要。夹点(Grips)编辑是其中的一个关键部分,它不仅简化了用户与图形对象的交互,还提供了多种功能,从简单的移动和缩放到复杂的旋转和…

JS爬虫实战之极验四代

极验四代滑块验证码 一、目标网站说明二、流程步骤1. 逆向步骤一般分为:2. 接口确认1- 确认流程2- 获取verify的参数3- 构建requests验证verify的参数4- 锁定secode参数的作用 ok,让我们去获取verify接口中的响应!!! 3…

风光摄影:相机设置和镜头选择

写在前面 博文内容为《斯科特凯尔比的风光摄影手册》读书笔记整理涉及在风景拍摄中一些相机设置,镜头选择的建议对小白来讲很实用,避免拍摄一些过曝或者过暗的风景照片理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好…

240712_昇思学习打卡-Day24-LSTM+CRF序列标注(3)

240712_昇思学习打卡-Day24-LSTMCRF序列标注(3) 今天做LSTMCRF序列标注第三部分,同样,仅作简单记录及注释,最近确实太忙了。 Viterbi算法 在完成前向训练部分后,需要实现解码部分。这里我们选择适合求解…

【Linux】进程间通信——消息队列和信号量

目录 消息队列(message queue) 信号量(Semaphore) system V版本的进程间通信方式有三种:共享内存,消息队列和信号量。之前我们已经说了共享内存,那么我们来看一下消息队列和信号量以及它们之间…

Docker容器的生命周期

引言 Docker 容器作为一种轻量级虚拟化技术,在现代应用开发和部署中扮演着重要角色。理解容器的生命周期对于有效地管理和运维容器化应用至关重要。本文将深入探讨 Docker 容器的生命周期,从创建到销毁的各个阶段,帮助读者更好地掌握容器管理…

Unity最新第三方开源插件《Stateful Component》管理中大型项目MonoBehaviour各种序列化字段 ,的高级解决方案

上文提到了UIState, ObjectRefactor等,还提到了远古的NGUI, KBEngine-UI等 这个算是比较新的解决方法吧,但是抽象出来,问题还是这些个问题 所以你就说做游戏是不是先要解决这些问题? 而不是高大上的UiImage,DoozyUI等 Mono管理引用基本用法 ① 添加Stateful Component …

【正点原子i.MX93开发板试用连载体验】录音小程序采集语料

本文最早发表于电子发烧友论坛:【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 接下来就是要尝试训练中文提示词。首先要进行语料采集,这是一…

【2-1:RPC设计】

RPC 1. 基础1.1 定义&特点1.2 具体实现框架1.3 应用场景2. RPC的关键技术点&一次调用rpc流程2.1 RPC流程流程两个网络模块如何连接的呢?其它特性RPC优势2.2 序列化技术序列化方式PRC如何选择序列化框架考虑因素2.3 应用层的通信协议-http2.3.1 基础概念大多数RPC大多自…

STM32Cubemx配置生成 Keil AC6支持代码

文章目录 一、前言二、AC 6配置2.1 ARM ComPiler 选择AC62.2 AC6 UTF-8的编译命令会报错 三、STM32Cubemx 配置3.1 找到stm32cubemx的模板位置3.2 替换文件内核文件3.3 修改 cmsis_os.c文件3.4 修改本地 四、编译对比 一、前言 使用keil ARM compiler V5的时候,编译…

M J更改图像生成方式的参数选项

一个完整的/imagine命令可能包含几个内容,例如图像 URL、图像权重、算法版本和其他开关。 /imagine参数应遵循以下顺序: /imagine prompt: https://example/tulip.jpg a field of tulips in the style of Mary Blair --no farms --iw .5 --ar 3:2 在这种情况下,“开关”是指…

如何压缩pdf文件大小,怎么压缩pdf文件大小

在数字化时代,pdf文件因其稳定的格式和跨平台兼容性,成为了工作与学习中不可或缺的一部分。然而,随着pdf文件内容的丰富,pdf文件的体积也随之增大,给传输和存储带来了不少挑战。本文将深入探讨如何高效压缩pdf文件大小…

【保姆级教程】CenterNet的目标检测、3D检测、关键点检测使用教程

一、代码下载 仓库地址:https://github.com/xingyizhou/CenterNet?tab=readme-ov-file 二、目标检测 2.1 下载预训练权重 下载预训练权重ctdet_coco_dla_2x.pth放到models文件夹下 下载链接:https://drive.google.com/file/d/18Q3fzzAsha_3Qid6mn4jcIFPeOGUaj1d/edit …

《昇思25天学习打卡营第19天|生成式-Pix2Pix实现图像转换》

学习内容:Pix2Pix实现图像转换 1.模型简介 Pix2Pix是基于条件生成对抗网络(cGAN, Condition Generative Adversarial Networks )实现的一种深度学习图像转换模型,该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c…

热题系列9

剑指 Offer 39. 数组中出现次数超过一半的数字 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半&am…

防火墙nat策略实验和多出口实验和智能选路实验

要求 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9,多出口环境基于带宽比例进行选路&#xff0c…

GuLi商城-商品服务-API-品牌管理-OSS获取服务端签名(续)

如何进行服务端签名直传_对象存储(OSS)-阿里云帮助中心 gulimall-third-party服务的代码: package com.nanjing.gulimall.thirdparty.controller;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.BinaryUtil; impor…

电脑如何快速删除相同的文件?分享5款重复文件删除工具

您有没有发现最近电脑运行速度变慢了?启动时间变得更长,甚至完成简单任务也难以如常?这可能是因为重复文件堆积所致。我们发现,清理或移动这些重复的文件和文件夹可以产生惊人的效果。通过删除不必要的重复文件和垃圾文件&#xf…

【C++】:继承[下篇](友元静态成员菱形继承菱形虚拟继承)

目录 一,继承与友元二,继承与静态成员三,复杂的菱形继承及菱形虚拟继承四,继承的总结和反思 点击跳转上一篇文章: 【C】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数…

YOLOv5白皮书-第Y5周:yolo.py文件解读

本文为365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 本次训练是在前文《YOLOv5白皮书-第Y2周:训练自己的数据集》的基础上进行的。 前言 文件位置:./models/yolo.Py 这个文件是YOLOv5网络模型的搭建文件,如果你想改进YOLOv5&…