【JS逆向学习】马蜂窝 cookie 加密(加速乐)

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!

逆向目标
  1. 网址:https://www.mafengwo.cn/i/24292737.html
  2. 接口:https://www.mafengwo.cn/i/24292737.html
  3. 参数:cookie
逆向过程

老规矩,先分析网络请求
在这里插入图片描述
总共发起了三次网络请求:

# 1. 第一次请求
Request URL: https://www.mafengwo.cn/i/24292737.html
Request Method: GET
Status Code: 521
 
# 2. 第二次请求
Request URL: https://www.mafengwo.cn/i/24292737.html
Request Method: GET
Status Code: 521

# 3. 第三次请求
Request URL: https://www.mafengwo.cn/i/24292737.html
Request Method: GET
Status Code: 200 OK

我们使用抓包工具来看下
在这里插入图片描述
然后我们观察下获取到实际内容的第三次请求,可以看到是加速乐
在这里插入图片描述
Application 标签页下
在这里插入图片描述

逆向分析

我们下来分析第一次请求,按照如下方式复制curl请求
在这里插入图片描述
粘贴到如下
在这里插入图片描述
复制右侧的python脚本执行

# 第一次请求可以不带cookie
import requests

headers = {
    "Host": "www.mafengwo.cn",
    "Pragma": "no-cache",
    "Cache-Control": "no-cache",
    "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"macOS\"",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    "Sec-Fetch-Site": "same-origin",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-User": "?1",
    "Sec-Fetch-Dest": "document",
    "Referer": "https://www.mafengwo.cn/i/24292737.html",
    "Accept-Language": "en-US,en;q=0.9"
}
url = "https://www.mafengwo.cn/i/24292737.html"
response = requests.get(url, headers=headers)

print(response.text)
print(response)

# 输出如下
<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('_')+('s')+('=')+(-~[]+'')+(-~[6]+'')+(~~{}+'')+(1+7+'')+(1+[0]-(1)+'')+(3+'')+((2^1)+'')+((1<<1)+'')+(-~(3)+'')+(1+8+'')+('.')+(-~(8)+'')+((1<<1)+'')+(2+6+'')+('|')+('-')+(-~[]+'')+('|')+(+!+[]+'')+('%')+(-~1+'')+('B')+('k')+('h')+(6+'')+(-~1+'')+('T')+('I')+('g')+('S')+('u')+('D')+('y')+(~~false+'')+('i')+('w')+('T')+('U')+('i')+('b')+('C')+('Z')+('x')+('v')+('U')+('%')+(0+1+0+1+'')+('B')+('M')+('%')+((1+[2]>>2)+'')+('D')+(';')+(' ')+('M')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+((1|2)+'')+(3+3+'')+(~~{}+'')+((+[])+'')+(';')+(' ')+('P')+('a')+('t')+('h')+('=')+('/')+(';')+(' ')+('S')+('a')+('m')+('e')+('S')+('i')+('t')+('e')+('=')+('N')+('o')+('n')+('e')+(';')+(' ')+('S')+('e')+('c')+('u')+('r')+('e');location.href=location.pathname+location.search</script>

我们直接把script 标签内的 js代码 拷贝出来执行

document = {};
location = {};
document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('_')+('s')+('=')+(-~[]+'')+(-~[6]+'')+(~~{}+'')+(1+7+'')+(1+[0]-(1)+'')+(3+'')+((2^1)+'')+((1<<1)+'')+(-~(3)+'')+(1+8+'')+('.')+(-~(8)+'')+((1<<1)+'')+(2+6+'')+('|')+('-')+(-~[]+'')+('|')+(+!+[]+'')+('%')+(-~1+'')+('B')+('k')+('h')+(6+'')+(-~1+'')+('T')+('I')+('g')+('S')+('u')+('D')+('y')+(~~false+'')+('i')+('w')+('T')+('U')+('i')+('b')+('C')+('Z')+('x')+('v')+('U')+('%')+(0+1+0+1+'')+('B')+('M')+('%')+((1+[2]>>2)+'')+('D')+(';')+(' ')+('M')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+((1|2)+'')+(3+3+'')+(~~{}+'')+((+[])+'')+(';')+(' ')+('P')+('a')+('t')+('h')+('=')+('/')+(';')+(' ')+('S')+('a')+('m')+('e')+('S')+('i')+('t')+('e')+('=')+('N')+('o')+('n')+('e')+(';')+(' ')+('S')+('e')+('c')+('u')+('r')+('e');location.href=location.pathname+location.search
console.log(document.cookie);

// OUTPUT
__jsl_clearance_s=1708933249.928|-1|1%2Bkh62TIgSuDy0iwTUibCZxvU%2BM%3D; Max-age=3600; Path=/; SameSite=None; Secure

同上继续分析第二次请求,返回值如下

# 返回内容
<script>
    document.cookie = ('_') + ('_') + ('j') + ('s') + ('l') + ('_') + ('c') + ('l') + ('e') + ('a') + ('r') + ('a') + ('n') + ('c') + ('e') + ('_') + ('s') + ('=') + (-~false + '') + (3 + 4 + '') + (~~[] + '') + (-~[7] + '') + (1 + 8 + '') + (3 + '') + (1 + 5 + '') + ((1 << 2) + '') + ((+false) + '') + (-~(4) + '') + ('.') + (1 + 5 + '') + (3 + 4 + '') + (-~0 + '') + ('|') + ('-') + (-~[] + '') + ('|') + ('n') + ('r') + ('m') + ('%') + (0 + 1 + 0 + 1 + '') + ('B') + ('u') + ('b') + ('O') + ('H') + ('M') + ('G') + ('e') + ('B') + ('D') + ('A') + (([2] + 0 >> 2) + '') + ('Q') + ('X') + ('Q') + ('C') + ('D') + (-~(4) + '') + ('d') + ('K') + ('W') + ('m') + ('f') + ('I') + ('%') + (3 + '') + ('D') + (';') + (' ') + ('M') + ('a') + ('x') + ('-') + ('a') + ('g') + ('e') + ('=') + (-~[2] + '') + ([2] * (3) + '') + (~~{} + '') + ((+false) + '') + (';') + (' ') + ('P') + ('a') + ('t') + ('h') + ('=') + ('/') + (';') + (' ') + ('S') + ('a') + ('m') + ('e') + ('S') + ('i') + ('t') + ('e') + ('=') + ('N') + ('o') + ('n') + ('e') + (';') + (' ') + ('S') + ('e') + ('c') + ('u') + ('r') + ('e');
    location.href = location.pathname + location.search
</script>

# 输出如下
__jsl_clearance_s=1708934799.525|-1|P7xfo%2FD8ppojDXKRuV6GCZe%2BgW8%3D; Max-age=3600; Path=/; SameSite=None; Secure

# 返回Headers
Connection:keep-alive
Connection:close
Date:Mon, 26 Feb 2024 08:33:25 GMT
Server:nginx
Set-Cookie:__jsluid_s=384752ae6df9332fabc335968c604588; max-age=31536000; path=/; HttpOnly; SameSite=None; secure
Transfer-Encoding:chunked
X-Via-Jsl:ecc62cf,-

可以看到通过第二次请求,我们可以拿到 __jsluid_s__jsl_clearance_s
最后,第三次请求带上第二步生成的两个参数 __jsluid_s__jsl_clearance_s,就可以拿到最终结果

结果验证
import requests


headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    "Accept-Language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
    "Cache-Control": "no-cache",
    "Connection": "keep-alive",
    "Pragma": "no-cache",
    "Referer": "https://www.mafengwo.cn/i/24292737.html",
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "same-origin",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
    "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"macOS\""
}
cookies = {
    "__jsluid_s": "384752ae6df9332fabc335968c604588",
    "__jsl_clearance_s": "1708936405.739|0|L5szFUsv5X88tahEhh3Yk256Pi8%3D"
}
url = "https://www.mafengwo.cn/i/24292737.html"
response = requests.get(url, headers=headers, cookies=cookies)

print(response.text)
print(response)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四 . 分支和循环——Java基础篇

四 . 分支和循环 1 . switch的基本语法 if 和 swicth 的对比: if既可以用于范围校验, 也可以用于等值校验swicth对于if效率更高,只能用于等值校验 语法格式: switch(表达式){case 常量值1:语句块1;//break;case 常量值2:语句块2;//break; // ...[default:语句块n1;break;] }…

H12-821_77

77.如图所示的交换网络&#xff0c;所有交换机都运行了STP协议&#xff0c;当拓扑稳定后&#xff0c;在以下哪台交换机上修改配置BPDU的发送周期&#xff0c;可以影响STD配置BPDU的发送周期&#xff1f; A.STC B.SWD C.SWA D.SWB 答案&#xff1a;C 注释&#xff1a; 在根桥上…

Mysql 高可用解决方案

1.环境说明 操作系统&#xff1a;centos7.7 主服务器&#xff1a;node2(192.168.1.102) 从服务器&#xff1a;node3(192.168.1.103) keepalived中虚拟ip(VIP):192.168.1.100 2.准备事项 主库和从库数据库的版本一致把主库的数据同步给从库一份 3.主库配置 3.1 编辑MySQL配…

机器学习:朴素贝叶斯算法(Python)

一、朴素贝叶斯算法的实现 naive_bayes_classifier.py import numpy as np import collections as cc # 集合的计数功能 from scipy.stats import norm # 极大似然估计样本的均值和标准方差 from data_bin_wrapper import DataBinsWrapperclass NaiveBayesClassifier:"…

绝对路径拼接漏洞 [NISACTF 2022]babyupload

打开题目 最开始以为是文件上传的漏洞 结果发现无论我们上传什么文件都会显示bad filename 去网上看了大佬的wp知道 我们直接去看源代码得到提示 /source 那我们去访问一下这个路径看看 得到一个下载文件 用记事本打开得到 源代码如下 from flask import Flask, request, r…

猫头虎分享已解决Bug || ValueError: Unknown label type: ‘continuous‘

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Linux:线程控制

目录 线程的相关知识 线程创建 pthread_create 线程关于进程内部资源问题 线程等待 pthread_join 线程退出 pthread_cancel 线程id的理解 pthread_self 线程分离 pthread_detach 线程的相关知识 首先线程是在进程内部执行的&#xff0c;是OS调度的基本单位 线程的…

JAVA学习笔记12

1.键盘输入语句 1.1 介绍 ​ *在编程中&#xff0c;需要接收用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。 1.2 步骤 ​ 1.导入该类的所在包&#xff0c;java.util.* ​ 2.创建该类对象&#xff08;声明变量&#xff09; ​ 3.调用里面的功能 import java.…

算法打卡day2|数组篇|Leetcode 977.有序数组的平方、 209.长度最小的子数组、59.螺旋矩阵II

算法题 Leetcode 977.有序数组的平方 题目链接: 977.有序数组的平方 大佬视频讲解&#xff1a;977.有序数组的平方 个人思路 第一时间就只想到暴力解法&#xff0c;双重循环一个循环比较一个循环赋值&#xff1b;但这样可能会超时&#xff0c;所以还能用双指针&#xff0…

halcon中的2D测量-椭圆

一、定义 二维测量指的是测量二维几何图形的参数&#xff0c;例如圆、椭圆、圆弧、矩形的相关参数。这里的参数对圆来说可以是半径&#xff1b;椭圆可以是长半轴、短半轴&#xff1b;矩形则包括宽和高。 二、基本步骤 1.创建测量模型 使用算子 create_metrology_model 2.设…

积分商城管理系统的设计与实现

积分商城管理系统的设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全

设计模式(二)单例模式的七种写法

相关文章设计模式系列 面试的时候&#xff0c;问到许多年轻的Android开发他所会的设计模式是什么&#xff0c;基本上都会提到单例模式&#xff0c;但是对单例模式也是一知半解&#xff0c;在Android开发中我们经常会运用单例模式&#xff0c;所以我们还是要更了解单例模式才对…

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】

永磁同步电机七段式s曲线 一、前言二、理论分析三、7段式s曲线加减速关系图四、matlab代码代码结果 五、simulink七段式s曲线整体框图simulink结果s-function内嵌代码 六、使用双闭环FOC控制-----simulink仿真示意 一、前言 S形&#xff1a;加加速(T1)→>匀加速(T2)→减加速…

【JVM】StringTable 字符串常量池

参考&#xff1a;javaGuide 字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串&#xff08;String 类&#xff09;专门开辟的一块区域&#xff0c;主要目的是为了避免字符串的重复创建 String的不可变性 1.通过字面量的方式&#xff08;区别于new&#xff09;给一个…

Avalonia学习(二十六)-桌面系统界面Ribbon

这个界面是开源项目中拔下来的&#xff0c;我没有全部改完&#xff0c;只能按照我得界面测试。我还有一个bug没有找到&#xff0c;但是解决了一下。这里没有任何和大家说的&#xff0c;给大家看一下界面效果。 另外地图研究了缩放和显示鼠标位置经纬度

https://htmlunit.sourceforge.io/

https://htmlunit.sourceforge.io/ 爬虫 HtmlUnit – Welcome to HtmlUnit HtmlUnit 3.11.0 API https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.70.0 https://s01.oss.sonatype.org/service/local/repositories/releases/content/org/htmlunit…

Java核心知识点常考面试题(持续更新中)

Java核心知识点常考面试题&#xff08;持续更新中&#xff09; 线程与线程池线程线程池 Java锁机制java线程模型java锁分类轻量级锁重量级锁ReentrantLock 底层原理与源码深度解析ReentrantReadWriteLock 深入理解读写锁CountDownLatchsemaphore 实现公平锁与非公平锁线程死锁与…

Android 9.0 禁用插入耳机时弹出的保护听力对话框

1.前言 在9.0的系统rom定制化开发中,在某些产品中会对耳机音量调节过高限制,在调高到最大音量的70%的时候,会弹出音量过高弹出警告,所以产品 开发的需要要求去掉这个音量弹窗警告功能,接下来就来具体实现这个功能 2.禁用插入耳机时弹出的保护听力对话框的核心类 framework…

第六十八天 APP攻防-XposedFridaHook证书校验反代理代理转发

第68天 APP攻防-Xposed&Frida&Hook&证书校验&反代理&代理转发 知识点&#xff1a; 1、APP防代理绕过-应用&转发 2、APP证书校验类型-单向&双向 3、APP证书校验绕过-Frida&XP框架等 章节点&#xff1a; 1、信息收集-应用&资产提取&权…

蓝桥杯-标题统计

知识点: 关键是考察getline的作用 #include <iostream> using namespace std; int main() { string a; int t0; getline(cin,a);//每次读取一整行并把Enter键生成的换行符抛弃 for(int i0;i<a.length();i){ if(a[i]! )t; } cout<<t; return …