JS逆向基础

JS逆向基础

  • 一、什么是JS逆向?
  • 二、接口抓包
  • 三、逆向分析

一、什么是JS逆向?

我们在网站进行账号登录的时候对网页源进行抓包就会发现我们输入的密码在后台会显示为一串由字母或数字等符号,这就是经过加密呈现的一段加密文字,而分析这些接口的加密算法并实现模拟调用的过程就叫做「逆向」。
  逆向对于爬虫说是一个永远绕不开的话题,而我们所做的解密工作,通过解密步骤得到密码的过程,称为JS逆向。
  
  我们将通过一个简单的案例来讲解JS的分析思路。

二、接口抓包

在这里插入图片描述
首先我们先点击网站的的登陆页面,打开网站的控制台,点击1(网络),再点击2(fetch/XHR),然后再点击3(清空信息),我们在进行输入(4)账号密码和验证码,为了教学,故意输错密码,点击登录,控制台跳出6(登陆包),在其中可以获取Signature(7)
在这里插入图片描述
点击1,在点击2,即可出现搜索页面(3),我们将Signature输入,即可获取Signature在网页源代码中的生成函数
在这里插入图片描述
可知3即为需要逆向分析的数据

三、逆向分析

U.Signature = Object(f.a)(U, M, l.j ? l.g : l.c);

按照下图操作获取Object(f.a)函数和U,M,和 l.j ? l.g : l.c的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将代码复制到js文件中,运行代码报错,提示找不到f函数,将代码中相关函数全部复制

在这里插入图片描述
源码

l = {key: cryptoJs.enc.Utf8.parse("fX@VyCQVvpdj8RCa"),iv: cryptoJs.enc.Utf8.parse(function (t) {for (var e = "", i = 0; i < t.length - 1; i += 2) {var n = parseInt(t[i] + "" + t[i + 1], 16);e += String.fromCharCode(n)}return e}("00000000000000000000000000000000"))
}, v = function (data) {return function (data) {return cryptoJs.AES.encrypt(data, l.key, {iv: l.iv,mode: cryptoJs.mode.CBC,padding: cryptoJs.pad.Pkcs7}).toString()}(data)
}, d = function (data) {return cryptoJs.MD5(data).toString()
}, f = function (t) {var e = "";return Object.keys(t).sort().forEach((function (n) {e += n + ("object" === typeof (t[n]) ? JSON.stringify(t[n], (function (t, e) {return "number" == typeof e && (e = String(e)),e})).replace(/\//g, "\\/") : t[n])})),e
}h = function (t) {var data = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "a75846eb4ac490420ac63db46d2a03bf", n = e + f(data) + f(t) + e;return n = d(n),n = v(n)
}U = {"App-Ver": "","Os-Ver": "","Device-Ver": "","Imei": "","Access-Token": "","Timestemp": 1700571511,"NonceStr": "170057151176dni","App-Id": "4ac490420ac63db4","Device-Os": "web"
};let L = {"username": "qweqweqeqweqwe","password": "qweqweqweqweqwe","code": "65xv","hdn_refer": "https://www.epwk.com/"
};C = 'a75846eb4ac490420ac63db46d2a03bf'console.log(h(U, L, C))

又报错
在这里插入图片描述
导入crypto-js库替换o函数

const cryptoJs = require("crypto-js")
const cryptoJs = require("crypto-js")l = {key: cryptoJs.enc.Utf8.parse("fX@VyCQVvpdj8RCa"),iv: cryptoJs.enc.Utf8.parse(function (t) {for (var e = "", i = 0; i < t.length - 1; i += 2) {var n = parseInt(t[i] + "" + t[i + 1], 16);e += String.fromCharCode(n)}return e}("00000000000000000000000000000000"))
}, v = function (data) {return function (data) {return cryptoJs.AES.encrypt(data, l.key, {iv: l.iv,mode: cryptoJs.mode.CBC,padding: cryptoJs.pad.Pkcs7}).toString()}(data)
}, d = function (data) {return cryptoJs.MD5(data).toString()
}, f = function (t) {var e = "";return Object.keys(t).sort().forEach((function (n) {e += n + ("object" === typeof (t[n]) ? JSON.stringify(t[n], (function (t, e) {return "number" == typeof e && (e = String(e)),e})).replace(/\//g, "\\/") : t[n])})),e
}h = function (t) {var data = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "a75846eb4ac490420ac63db46d2a03bf", n = e + f(data) + f(t) + e;return n = d(n),n = v(n)
}U = {"App-Ver": "","Os-Ver": "","Device-Ver": "","Imei": "","Access-Token": "","Timestemp": 1700571511,"NonceStr": "170057151176dni","App-Id": "4ac490420ac63db4","Device-Os": "web"
};let L = {"username": "qweqweqeqweqwe","password": "qweqweqweqweqwe","code": "65xv","hdn_refer": "https://www.epwk.com/"
};C = 'a75846eb4ac490420ac63db46d2a03bf'console.log(h(U, L, C))

在这里插入图片描述
运行又报错,替换r.a函数,
在这里插入图片描述

"object" === typeof (t[n]) 

在这里插入图片描述
最后代码运行出Signature

最后将js代码转成python,再与爬虫相结合最后写出代码

import requestscookies = {'Hm_lvt_387b8f4fdb89d4ea233922bdc6466394': '1698224816,1699438386,1700570522','PHPSESSID': 'ca8646d868cd69a35397b2a42dba42d0e7a8f02b','time_diff': '0','XDEBUG_SESSION': 'XDEBUG_ECLIPSE','adbanner_city': '%E5%8C%97%E4%BA%AC%E5%B8%82','banners_show_cookie_ip': '221.216.142.177','login_referer': 'https%3A%2F%2Fwww.epwk.com%2F','Hm_lpvt_387b8f4fdb89d4ea233922bdc6466394': '1700570526','login_fail_need_graphics': '0',
}headers = {'Accept': 'application/json, text/plain, */*','Accept-Language': 'zh-CN,zh;q=0.9','Access-Token': '','App-Id': '4ac490420ac63db4','App-Ver': '','CHOST': 'www.epwk.com','Cache-Control': 'no-cache','Connection': 'keep-alive','Content-Type': 'application/x-www-form-urlencoded',# 'Cookie': 'Hm_lvt_387b8f4fdb89d4ea233922bdc6466394=1698224816,1699438386,1700570522; PHPSESSID=ca8646d868cd69a35397b2a42dba42d0e7a8f02b; time_diff=0; XDEBUG_SESSION=XDEBUG_ECLIPSE; adbanner_city=%E5%8C%97%E4%BA%AC%E5%B8%82; banners_show_cookie_ip=221.216.142.177; login_referer=https%3A%2F%2Fwww.epwk.com%2F; Hm_lpvt_387b8f4fdb89d4ea233922bdc6466394=1700570526; login_fail_need_graphics=0','Device-Os': 'web','Device-Ver': '','Imei': '','NonceStr': '1700570738pdcom','Origin': 'https://www.epwk.com','Os-Ver': '','Pragma': 'no-cache','Referer': 'https://www.epwk.com/login.html','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','Signature': 'Ks5z+mbEmnNOLXsZKuOq84sn8ATLQmZxN9RmH1Gi4yuPWQWo+GYbhylLq4jxFy3F','Timestemp': '1700570738','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36','sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"macOS"',
}data = {'username': 'qweqweqeqweqwe','password': 'qweqweqweqweqwe','code': 'aaaa','hdn_refer': 'https://www.epwk.com/',
}response = requests.post('https://www.epwk.com/api/epwk/v1/user/login', cookies=cookies, headers=headers, data=data)
print(response.text)

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

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

相关文章

学习Python后可以从事哪方面的工作呢?

Python是最适合用来做人工智能是编程语言&#xff0c;人工智能时代来临&#xff0c;Python人才缺口与日俱增&#xff0c;薪资也随之水涨船高&#xff0c;前景广阔。 Python做人工智能的好处&#xff1a;简单高效、优质的文档、强大的AI库、海量的模块&#xff0c;成为研究AI常…

【玩转TableAgent数据智能分析】借助全球高校数据多维度分析案例,体验TableAgent如何助力用户轻松洞察数据,赋能企业高效数智化转型

目录 前言 一、TableAgent介绍及其优势&#xff1f; 1、会话式数据分析&#xff0c;所需即所得 2、私有化部署&#xff0c;数据安全 3、支持企业级数据分析,大规模&#xff0c;高性能 4、支持领域微调&#xff0c;专业化 5、透明化过程&#xff0c;审计部署 二、使用Ta…

TCP服务器的演变过程:揭秘使用多线程实现一对多的TCP服务器

使用多线程实现一对多的TCP服务器 一、前言二、新增使用的API2.1、pthread_create() 函数2.2、pthread_exit()函数 三、实现步骤四、完整代码五、TCP客户端5.1、自己实现一个TCP客户端5.2、Windows下可以使用NetAssist的网络助手工具 小结 一、前言 手把手教你从0开始编写TCP服…

h5网站开发-页面底部 鼠标悬停显示二维码

一、实现效果 1.鼠标悬停到图标时&#xff0c;显示相应的二维码 2.二维码盒子的宽度是自适应的&#xff08;可以根据数量自动的撑开&#xff0c;并且居中显示&#xff09; 二、代码&#xff1a; <!DOCTYPE html> <html><head><meta http-equiv"Cont…

湖北省工程类助理工程师申报评审通过不是难事

湖北省工程类助理工程师申报评审通过不是难事 想要初级职称/助理工程师工程类&#xff0c;建筑施工、土木工程、市政、路桥、水利水电、机电、园林、测绘等一系列建筑类的初级职称。12月份交资料&#xff0c;春节前可以评审出来。 初级职称申报周期-一个月左右 一般初级职称申…

渗透测试和漏洞扫描有什么区别

渗透测试和漏洞扫描是网络安全领域中非常重要的两种技术手段&#xff0c;它们都可以帮助组织或企业发现和修复系统中的漏洞和弱点。然而&#xff0c;这两种技术手段在目的、深度、方法和时间和成本等方面存在显著的区别。 首先我们来了解下渗透测试和漏洞扫描分别是什么&#x…

家政上门服务系统|上门服务系统让家政服务更便捷

家政上门服务系统搭建的目的是为了让用户在家政服务的过程中能够更加轻松、便捷地完成各项服务需求。我们的系统集成了多项先进功能&#xff0c;使得用户无需再花费时间和精力去寻找合适的服务员工。通过系统&#xff0c;用户只需在手机或者电脑上输入相关需求&#xff0c;系统…

C# 创建MVC项目+Layui框架

目录 1、创建MVC 2、下载Layui 3、修改模板页 3.1 修改_Layout.cshtml页面 3.2创建侧边导航-BaseController控制器 3.3将控制器原本引用的 Controller改为BaseController 1、创建MVC 2、下载Layui 地址&#xff1a;Layui - 极简模块化前端 UI 组件库(官方文档) 将文件…

数智金融技术峰会|数新网络受邀分享《金融信创湖仓一体数据平台架构实践》,敬请期待

12月23日&#xff0c;数新网络参加DataFunSummit 2023&#xff1a;数智金融技术峰会。会上&#xff0c;数新CTO原攀峰将为大家带来《金融信创湖仓一体数据平台架构实践》 主题分享。 本次峰会由DataFun联合火山引擎、蓝驰等知名企业举办&#xff0c;将共同为大家带来一场数智金…

uni-app学习记录

uni-app官网学习记录 uni-app注意点记录 页面跳转注意事项 navigateTo, redirectTo 只能打开非 tabBar 页面。switchTab 只能打开 tabBar 页面。reLaunch 可以打开任意页面。不能在首页 onReady 之前进行页面跳转。 页面通讯 // 发起页面uni.$emit(update,{msg:页面更新})//…

天锐绿盾数据安全加密系统

天锐绿盾数据安全加密系统是一款全面、高效、易用的数据安全防护产品&#xff0c;它以数据防泄密为核心&#xff0c;提供了一系列完善的数据安全保护措施。 PC访问地址&#xff1a;www.drhchina.com 该系统主要针对企业局域网环境&#xff0c;对所有终端进行规范化管控&#x…

Rust学习:HelloWorld

Rust学习&#xff1a;HelloWorld HelloWorldRust语言简介主要特点先看程序分析程序 HelloWorld Rust语言简介 Rust是一种系统编程语言&#xff0c;旨在提供内存安全、并发性和性能。它由Mozilla Research开发&#xff0c;旨在解决C和C语言中的一些关键问题&#xff0c;特别是…