爬虫逆向实战(40)-某江酒店登陆(AES、MD5)

一、数据接口分析

主页地址:某江酒店

1、抓包

通过抓包可以发现数据接口是/api/member/login
在这里插入图片描述

2、判断是否有加密参数

  1. 请求参数是否加密?
    通过查看“载荷”模块可以发现,有TDFingerprintblackBoxMd5passwordsw四个加密参数,剩下的diddeviceInfo是可以写死的。
    在这里插入图片描述
  2. 请求头是否加密?
  3. 响应是否加密?
  4. cookie是否加密?

二、加密位置定位

1、password

通过搜索password:可以发现有一处加密的位置
在这里插入图片描述
点进去,打上断点,可以发现,就是可以断住,并且就是在这里进行的加密。
在这里插入图片描述

2、sw

我们可以发现,在上方password加密的位置,并没有其他参数,但是在下方调用了一个r.login方法,我们可以进入该方法查看。
在这里插入图片描述
进入之后,发现还有一层a.login,我们接着进入a.login方法查看,进入之后,可以发现,sw参数是在此处使用md5进行加密的。
在这里插入图片描述

3、TDFingerprintblackBoxMd5

虽然我们在上方的方法中,也发现了TDFingerprintblackBoxMd5,但是它们的生成位置不在这里
在这里插入图片描述
然后我们可以通过搜索_fmOpt.TDFingerprint =,可以发现一处赋值位置。
在这里插入图片描述
我们在此处打上断点,然后刷新页面,发现可以断住。
在这里插入图片描述
然后通过查看堆栈,可以发现data参数是由oooOoQ方法生成的。
在这里插入图片描述

三、扣js代码

passwordsw参数的加密都是使用的标准模块进行的加密,直接使用标准加密,然后再将TDFingerprint的生成方法扣出即可。
js源代码:

var CryptoJS = require('crypto-js')var QOoOoo = {};
var o00o0O = [];function o00Q00(QQQoO) {var Qo000 = ""var oQoQo = ['ghijklmnopqrstuv'['charAt']('0123456789abcdef'['indexOf'](QQQoO['substring'](0, 1))), QQQoO['substring'](1, 4), QQQoO['substring'](4, 14), QQQoO['substring'](14, 22), QQQoO['substring'](22, 23)];var Oo000 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']var oQOQO = [];var QOQQO = 0;oQOQO = [Oo000[parseInt(Math['random']() * 62)], Oo000[parseInt(Math['random']() * 62)], Oo000[parseInt(Math['random']() * 62)]];QOQQO = 1000o00o0O['push']("" + oQOQO[0] + oQOQO[1] + oQOQO[2])Qo000 = "" + oQoQo[0] + oQoQo[1] + oQOQO[0] + oQoQo[2] + oQOQO[1] + oQoQo[3] + oQOQO[2] + oQoQo[4];QOQQO++;return Qo000
}encryptAES = function (e) {var n = CryptoJS.enc.Latin1.parse("h5LoginKey123456"), a = CryptoJS.enc.Latin1.parse("h5LoginIv1234567"), t = e, o = CryptoJS.AES.encrypt(t, n, {iv: a,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});return o.toString()
}hex_md5 = function (text) {return CryptoJS.MD5(text).toString()
}function get_params(mobile, password, yzm) {let t = '7a2jY0'let deviceInfo = {"fingerPrintJs": "30c4e77f147c1e20d765a426d3903d48","userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","platform": "Win32"}let data = o00Q00('bWPH1712728929bkst3r3de')l = {groupTypeId: 2,type: 1,mobile: mobile,password: encryptAES(password),rememberMe: true,verifyCode: yzm,TDFingerprint: data,blackBoxMd5: hex_md5(data),did: 'd26ff897e3a0dd231c97e33c84ca4c0f',deviceInfo: deviceInfo,sw: hex_md5(t + mobile + deviceInfo.fingerPrintJs),channelCode: 'CA00046'}return l
}

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

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

相关文章

Android自定义控件ScrollView实现上下滑动功能

本文实例为大家分享了Android ScrollView实现上下滑动功能的具体代码,供大家参考,具体内容如下 package com.example.zhuang; import android.content.Context; import android.util.AttributeSet; import android.util.DisplayMetrics; import android…

Python---Numpy酒鬼漫步

import numpy as np# 模拟随机游走过程,返回每一步的结果(0或1) def random_walks(steps):draws np.random.randint(0, 2, sizesteps)return draws# 根据随机游走的结果计算每一步的方向步长,返回方向数组(1或-1&…

HTML5学习记录

简介 超文本标记语言&#xff08;HyperText Markup Language&#xff0c;简称HTML&#xff09;&#xff0c;是一种用于创建网页的标准标记语言。 编辑器 下载传送门https://code.visualstudio.com/ 下载编辑器插件 标题 标题通过 <h1> - <h6> 标签进行定义。 …

科技助力输电线安全隐患预警,基于YOLOv5全系列参数【n/s/m/l/x】模型开发构建电力设备场景下输电线安全隐患目标检测预警系统

电力的普及让我们的生活变得更加便利&#xff0c;四通八达的电网连接着生活的方方面面&#xff0c;电力能源主要是依托于庞大复杂的电网电力设备进行传输的&#xff0c;有效地保障电网场景下输电线的安全对于保障我们日常生活所需要的电力有着重要的意义&#xff0c;但是电力设…

Spring Boot项目启动时执行指定的方法

项目场景&#xff1a; 本文介绍Spring Boot项目启动时执行指定的方法两种常用方式和他们之间的区别。 实现方案&#xff1a; 方式一&#xff1a;使用注解PostConstruct Component public class PostConstructTest {PostConstructpublic void postConstruct() {System.out.prin…

【Web开发】jquery图片放大镜效果制作变焦镜头图片放大

jquery图片放大镜效果制作变焦镜头图片放大实现 整体步骤流程&#xff1a; 1. 前端html实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"…

【测试开发学习历程】python面向对象

1 面向对象的基本概念 面向对象&#xff1a;是把构成问题事务分解成各个对象&#xff0c;建立对象的目的不是为了完成一个步骤&#xff0c;而是为了描叙某个事物在整个解决问题的步骤中的行为。 怎么理解面向对象&#xff1f; 面向对象是一种编程思想&#xff0c;就是把要解决…

ruoyi-nbcio-plus基于vue3的flowable的自定义业务提交申请组件的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

NAV2 ros galactic安装教程

sudo apt install ros-galactic-gazebo-* 这个必须下载 sudo apt-get install -y ros-galactic-rmw* 这个也是 使用操作系统中的包管理器安装 Nav2 包: sudo apt install ros-galactic-navigation2 sudo apt install ros-galactic-nav2-bringup安装Turtlebot 3 软件包: sudo…

Java快速入门系列-8(Web开发基础)

第8章 Web开发基础 8.1 Servlet与JSP8.1.1 Servlet简介8.1.2 JSP简介与使用8.1.3 Servlet与JSP协作8.2 Web服务器与Tomcat8.2.1 安装与配置Tomcat8.2.2 配置与管理Web应用8.3 MVC设计模式与Java Web应用8.3.1 MVC原理8.3.2 MVC在Java Web中的应用8.4 RESTful API设计与实现8.4.…

参数化方案对耦合模式影响试验

今天建立几个实验 HIST_model_test_lthf_tbf HIST_model_test_lthf_phiq HIST_model_test_sshf_tbf HIST_model_test_pblh_zli HIST_model_test_nocouple 十天过去了&#xff0c;这次运行的速度显然慢了好多&#xff0c;还没运行到2000年&#xff0c;没办法只能就地取材了。 我…

虚拟货币:数字金融时代的新工具

在数字化时代的到来之后&#xff0c;虚拟货币逐渐成为了一种广为人知的金融工具。虚拟货币是一种数字化的资产&#xff0c;它不像传统货币那样由政府或中央银行发行和监管。相反&#xff0c;虚拟货币通过密码学技术和分布式账本技术来实现去中心化的发行和交易。 虚拟货币的代…

xss跨站脚本攻击笔记

1 XSS跨站脚本攻击 1.1 xss跨站脚本攻击介绍 跨站脚本攻击英文全称为(Cross site Script)缩写为CSS&#xff0c;但是为了和层叠样式表(CascadingStyle Sheet)CSS区分开来&#xff0c;所以在安全领域跨站脚本攻击叫做XSS 1.2 xss跨战脚本攻击分类 第一种类型:反射型XSS 反射…

JVM规范中的运行时数据区

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

Qt 多窗体

前言 在 Qt编程中经常会遇到要在多个界面之间切换的情况&#xff0c;如从登录界面跳转到主界面&#xff0c;从主界面跳转到设置界面&#xff0c;再返回到主界面。我们将会用一个简单的示例来实现多窗体功能。 登录窗口 创建基类为QMainWindow&#xff0c;类名为LoginWin。再使用…

SpringBoot中的Redis的简单使用

在Spring Boot项目中使用Redis作为缓存、会话存储或分布式锁等组件&#xff0c;可以简化开发流程并充分利用Redis的高性能特性。以下是使用Spring Boot整合Redis的详细步骤&#xff1a; 1. 环境准备 确保开发环境中已安装&#xff1a; Java&#xff1a;用于编写和运行Spring…

特征工程(III)--特征构造

有这么一句话在业界广泛流传&#xff1a;数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已。由此可见&#xff0c;特征工程在机器学习中占有相当重要的地位。在实际应用当中&#xff0c;可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

comfyui便携版(绿色版)安装CLIP报错no module named ‘CLIP‘

具体说来就是其中的ImageRewardFilter需要用到。 要求得有CLIP 我们一般装模块都通过 pip install xxx这样的命令来装&#xff0c; 具体到comfyui便携版的模块安装上&#xff0c;一般用的是 python -m pip install xxx这样的形式&#xff08;以模块化的形式安装到当前便携版的…

牛客 计算某字符出现次数

计算某字符出现次数 计算某字符出现次数 要点&#xff1a;1.大写字母ASCII码65开始&#xff0c;小写97开始&#xff1b; 2.或者用库函数tolower©&#xff1a;tolower©是一个标准库函数&#xff0c;它是C中库的一部分。这个函数接受一个字符&#xff08;大写或小写&…