去哪儿网机票服务请求头pre逆向

         作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

        url:'aHR0cHM6Ly9tLmZsaWdodC5xdW5hci5jb20v'

一、加密位置定位

        数据包touchinnerlist的请求头里的pre在每次发包时都会变化。

        直接全局搜索pre,很容易找到赋值位置,不但找到了pre赋值位置,而且找到了请求头里那个变化的键值的赋值位置。

        Object.assign这个在js里里,接收的参数为键值的字典格式,并把其合在一起组成一个大字典,u.default.getToken()控制台输出就是请求头里那个变化的键值,同样也是用到了u,u在上一章我们扣请求体__m__时已经扣出来的,所以这个直接在扣__m__这个js里一起导出就好。

        言归正传,pre指向的window.pt这个属性,这里要注意是取其前46个字符。既然在window属性里,那我们就hookwindow属性吧。


(function() {
    'use strict';
    var pre = "";
    Object.defineProperty(window, "_pt_", {
        get: function() {
            console.log('Getting window.属性');
            return pre
        },
        set: function(val) {
            console.log('Setting window.属性', val);
            debugger ;
            pre = val;
        }
    })
})();

        很轻松的就断到了window._pt_的加密位置。_0x47f515[_0x95ea('0x71')]这个函数点进去就是把传入的两个参数相加,上一步我们分析的是取其前46个字符,_0xabe1f3刚好是46个字符,因此pre=_0xabe1f3。

        这个js里搜索_0xabe1f3,很容易的找到了其最后赋值的地方。

        至此,加密位置分析完毕。

二、扣js

        在加密位置下断点,刷新网页发现断不住,说明这个包是动态js,在来源面板中查看这个包的类型是document,说明是请求返回的包。

        看其名字,还有印象吧,正是我们分析__m__逆向时要获得两个cookie所发送请求返回的包,其请求体和请求头都没有加密点,那么拿到这个js包没有问题了。把其放到浏览器里执行,可以拿到window._pt_的值。而且要在当前这个网页的环境下才行,说明进行了环境检测。

        但是要放到python里就不行了,补补环境你就会发现,越补越多,这是我们最头疼的事,有没有更好更简单的方法呢。

        想一想,虽然这个包是动态的,但是其代码的顺序和逻辑绝大多数是不会变的,前文分析生成pt的值没几行代码,我们是不是可以扣出这几行代码稍微补一补。如果能拿到数据,然后我们用正则匹配拿我们所扣的代码是不是也可以呢。

        按照这个思路开始我们开始扣代码。这里可以下script断点,走到这个包时在我们要扣的那几行代码处下断。找我们要扣的那几行代码可以搜特征值= []。然后取消script断点,按f8就走到了我们断住的位置。复制下来,开始调试,这里调试一定要小心点,一步走过,前面所扣的代码就要重新扣了。。

        首先这种_0x4a00c8的大函数对象给扣下来,就在上方,两者之间还有一些变量定义,索性一起扣下来,

        然后就是_0x30bf这个大数组,ob混淆这种,肯定会对大数组进行偏移的,所以要把大数组,自执行偏移函数,都扣下来,但是扣下这个自执行函数时调试会发现出现卡死错误。应该是有些格式检测或者环境检测什么的,这个时候就要改写了,想一想我们扣这个自执行函数是对数组进行偏移的,所以与偏移不相关的都删掉。然后就过了这个错误。

       来到 _0x5b538c这个函数没定义,找到位置也扣下来,就在混淆代码的最后

        然后来到了这个错误,说是调用堆栈次数过多,其实这个错误在python调用时是没有影响的,我们现在调试先修改下,这个if判断在浏览器里执行是false,直接改写。

        至此代码扣完,出现结果。释放断点和浏览器数据包请求头里的pre比对,完全正确。说明我们的改写和所扣的代码都没有问题。

        因为这个js是请求返回的动态js,所以还要知道我们都扣了啥,以及所在位置,好用正则匹配动态提取。回想一下我们都扣了啥:开头的大数组,偏移函数(进行了修改),解密函数,包含很多函数的对象以及与主体代码之间的变量定义。还有混淆代码最后那个函数。明白了这些,剩下的就是找特征值,编写正则匹配了。

        整体来说pre的逆向还是比较简单的,就是在编写正则匹配时麻烦点,据说可以用ast提取,但是本人水平有限,对ast一知半解,还不会编写针对这个的ast。

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

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

相关文章

噪声嵌入提升语言模型微调性能

在自然语言处理(NLP)的快速发展中,大模型(LLMs)的微调技术一直是研究的热点。最近,一篇名为《NEFTUNE: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING》的论文提出了一种新颖的方法,通过在训…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型: 路由器(Router):用于连接不同网络并在它们之间转发数据包的设备…

Unity 编辑器工具 - 资源引用查找器

在Unity项目开发过程中,管理和维护资源之间的引用关系是至关重要的。当然我们项目也是需要这个功能 毕竟项目大了之后查找资源引用还是交给 资源引用查找器 比较好。 功能概述 资源引用查找器允许开发者选择一个目标资源,并在整个项目中查找引用了该资…

docker-compose启动mysql5.7报错

描述一下问题经过: 使用docker compose 部署mysql5.7 文件如下: services:mysql:restart: alwaysimage: mysql:5.7container_name: mysql-devports:- 3306:3306environment:- MYSQL_DATABASEdev- MYSQL_ROOT_PASSWORD123456healthcheck:test: ["CMD", &q…

VMware虚拟机中ubuntu使用记录(5)—— 如何在ubuntu中安装USB相机ros驱动并获取usb摄像头数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、ROS下USB相机驱动1.准备工作(1) 下载驱动(2) 创建ROS工作空间 2. 安装usb_cam驱动(1) 安装usb_cam驱动包(2) 编译代码 3. 修改usb_cam驱动的配置文件(1) 查看US…

Unity 性能优化之数据面板(Statistics)(一)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、unity 统计数据面板(Statistics)1.Audio属性2.Graphics属性 二、什么是Draw Call?三、Unity3D stats也可以通过代…

分享一篇关于AGI的短文:苦涩的教训

学习强化学习之父、加拿大计算机科学家理查德萨顿( Richard S. Sutton )2019年的经典文章《The Bitter Lesson(苦涩的教训)》。 文章指出,过去70年来AI研究走过的最大弯路,就是过于重视人类既有经验和知识&…

Photoshop中图像编辑的基本操作

Photoshop中图像编辑的基本操作 Photoshop中调整图像窗口大小Photoshop中辅助工具的使用网格的使用标尺的使用注释工具的使用 Photoshop中置入嵌入式对象Photoshop中图像与画布的调整画布大小的修改画布的旋转图像尺寸的修改 Photoshop中撤销与还原采用快捷键进行撤销与还原采用…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

HTML_CSS学习:浮动

一、浮动简介 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>浮动_简介</title><style>div{width: 600px;height: 400px;background-color: #1c80d9;}img{float:…

c++多线程基础

简介 c多线程基础需要掌握这三个标准库&#xff1a;std::thread, std::mutex, and std::async。 1. Hello, world #include <iostream> #include <thread>void hello() { std::cout << "Hello Concurrent World!\n"; }int main() {std::thread…

如何获得 FHE Circuit Privacy

参考文献&#xff1a; [AJL12] Asharov G, Jain A, Lpez-Alt A, et al. Multiparty computation with low communication, computation and interaction via threshold FHE[C]. EUROCRYPT 2012: 483-501[DS16] Ducas L, Stehl D. Sanitization of FHE Ciphertexts[C]. EUROCRY…

连接和使用vCenter Server嵌入式vPostgres数据库

vCenter Server 早期支持内嵌(embedded)和外部(external)数据库,内嵌数据库就是vPostgres,基于VMware Postgres数据库(PostgreSQL数据库),外部数据库用的多的是Oracle数据库和SQL Server数据库。因为早期使用内嵌的PostgreSQL数据库只能用于小型环境,比如仅支持几十台…

EPAI手绘建模APP颜色、贴图、材质、样式

⑦ 颜色选择页面 1) 颜色环选色。 图 65 颜色选择器-颜色环 2) RGB选色。 图 66 颜色选择器-RGB 3) HSL选色。 图 67 颜色选择器-HSL 4) 国风颜色库选色。 图 68 颜色选择器-国风 5) CSS颜色库选色。 图 69 颜色选择器-CSS 6) 历史颜色&#xff1a;保存最近使用的多个颜色&…

Python设计模式 - 单例模式

定义 单例模式是一种创建型设计模式&#xff0c; 其主要目的是确保一个类只有一个实例&#xff0c; 并提供一个全局访问点来访问该实例。 结构 应用场景 资源管理&#xff1a;当需要共享某个资源时&#xff0c;例如数据库连接、线程池、日志对象等&#xff0c;可以使用单例模…

电路板/硬件---器件

电阻 电阻作用 电阻在电路中扮演着重要的角色&#xff0c;其作用包括&#xff1a; 限制电流&#xff1a;电阻通过阻碍电子流动的自由而限制电流。这是电阻最基本的功能之一。根据欧姆定律&#xff0c;电流与电阻成正比&#xff0c;电阻越大&#xff0c;通过电阻的电流就越小。…

OpenCV(六) —— Android 下的人脸识别

本篇我们来介绍在 Android 下如何实现人脸识别。 上一篇我们介绍了如何在 Windows 下通过 OpenCV 实现人脸识别&#xff0c;实际上&#xff0c;在 Android 下的实现的核心原理是非常相似的&#xff0c;因为 OpenCV 部分的代码改动不大&#xff0c;绝大部分代码可以直接移植到 …

Pytorch: nn.Embedding

文章目录 1. 本质2. 用Embedding产生一个10 x 5 的随机词典3. 用这个词典编码两个简单单词4. Embedding的词典是可以学习的5. 例子完整代码 1. 本质 P y t o r c h \mathrm{Pytorch} Pytorch 的 E m b e d d i n g \mathrm{Embedding} Embedding 模块是一个简单的查找表&#…

【多变量控制系统 Multivariable Control System】(3)系统的状态空间模型至转换方程模型(使用Python)【新加坡南洋理工大学】

一、转换式 二、系统的状态空间模型 由矩阵A, B, C, D给出&#xff1a; 三、由状态空间模型转化为转换方程模型 函数原型&#xff08;版权所有&#xff1a;scipy&#xff09;&#xff1a; def ss2tf(A, B, C, D, input0):r"""State-space to transfer functi…

【netty系列-03】深入理解NIO的基本原理和底层实现(详解)

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…
最新文章