0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python爬虫之某站JS加密逆向分析

哆啦安全 来源:潇湘信安 2023-05-05 15:40 次阅读

实现的目标:可以通过JS加密逆向后,得到加密参数,请求获取数据。此方法同样适用于被前端JS加密的用户名、密码爆破。

JS加密逆向分析

首先,分析获取数据的API。抓包,发现是:

998db564-eb16-11ed-90ce-dac502259ad0.png  

这个网站不存在分页,是鼠标下滑动态加载数据的,所以利用selenium爬虫效率低,效果也不是很好。

当然如果是菜鸟,最好还是利用这种方式。

先爬一下看看,发现返回的数据是加密的,先不管他。

999e98e8-eb16-11ed-90ce-dac502259ad0.png

我们分析请求参数,发现是两个加密的请求参数,分别是payload和sig。

如果把这两个参数去掉,或者这两个参数是错误的,则request无法返回正确的数据。

99bc401e-eb16-11ed-90ce-dac502259ad0.png

所以,需要对这两个进行JS逆向,还原加密算法

经过调试发现规律如下(至于怎么找断点,怎么找到实现加密算法的位置,本篇不做介绍)。

找到了sig的地方,下断点:

99e5f300-eb16-11ed-90ce-dac502259ad0.png

调试截图如下(只截图了payload的方法):

Payload加密分析:

首先是payload加密,payload加密前:

{sort: 1, start: 40, limit: 20}

需要“翻页”动态加载数据,只要需要更改start即可,这个表示是开始条数,limit表示一次加载20条,比如60、80、100、120等等。

99f29dbc-eb16-11ed-90ce-dac502259ad0.png

第1次进入e2(e) ,进去前e还是明文的payload,进去了_u_e(e) 返回t '{"sort":1,"start":40,"limit":20}' 值没变。

9a02daa6-eb16-11ed-90ce-dac502259ad0.png9a0f2d92-eb16-11ed-90ce-dac502259ad0.png

接着返回e2(e)继续执行for循环,返回的值如下。这个时候,payload被加密了,但是还不是返回的值,继续下一步调试。

",x177WB:d`ym{1L$'=x10nx02x04x15p8[ '&olwx022"
9a1ba3e2-eb16-11ed-90ce-dac502259ad0.png  

接着到了第一次进入e1(e) 中,这个时候e就是加密后的payload传进去。返回u,就是加密的payload了。

LBc3V0I6ZGB5bXsxTCQnPRBuBwYJfnZeJCM7OXR/AH8q
9a3381c4-eb16-11ed-90ce-dac502259ad0.png  

这个是只要payload不变,加密值就不变,还是相对比较简单的。

sign加密分析

sign的值是把加密后的payload值加上常量_P拼接后,作为参数,传到sig(e)中去,payload+_P如下:

LBc3V0I6ZGB5bXsxTCQnPRBuBwYJfnZeJCM7OXR/AH8qW5D80NFZHAYB8EUI2T649RT2MNRMVE2O

这里的e就是加密后的payload,而sign调用的方法是md5(e + _p).toUpperCase(),结果是:

1268D4D682CF9D0C6C3CB4D6E4C3C87F

new t(!0).update(n)[e]() 是payload + -p这个常量:t.prototype.update = function(e) 实际就是这个函数

他又调用了hex函数 finshed函数 调用了 hash函数

LBc3V0I6ZGB5bXsxTCQnPRBuBwYJfnZeJCM7OXR/AH8qW5D80NFZHAYB8EUI2T649RT2MNRMVE2O

跟踪分析发现,就是一个普通的md5加密函数,然后转换成大写。这个就可以不用JS实现,直接python实现MD5加密。

使用Python去实现以上两个参数的加密,修改原来的python脚本如下:

9a3a9dec-eb16-11ed-90ce-dac502259ad0.png9a59de8c-eb16-11ed-90ce-dac502259ad0.png

再次请求:

9a608d54-eb16-11ed-90ce-dac502259ad0.png

发现返回的值是d,也是加密的,可以使用拦截技术,获取到JS解密函数,解密d得到明文。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476

原文标题:python爬虫之某站JS加密逆向分析

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Python数据爬虫学习内容

    ,利用爬虫,我们可以解决部分数据问题,那么,如何学习Python数据爬虫能?1.学习Python基础知识并实现基本的爬虫过程一般获取数据的过
    发表于 05-09 17:25

    Python爬虫与Web开发库盘点

    类,如BaseSpider、sitemap爬虫等3.Web框架Django算是Python web框架里重量级的选手,主要是因为它提供了一式的解决方案,包括缓存、ORM、后台管理、验证和表单等,使得
    发表于 05-10 15:21

    Python爬虫全国大学招生的生源数据分析

    Python爬虫:全国大学招生信息(二):生源数据分析(matplotlib)
    发表于 03-09 10:20

    0基础入门Python爬虫实战课

    学习资料良莠不齐爬虫是一门实践性的技能,没有实战的课程都是骗人的!所以这节Python爬虫实战课,将帮到你!课程从0基础入门开始,受众人群广泛:如毕业大学生、转行人群、对Python
    发表于 07-25 09:28

    Python爬虫简介与软件配置

    Python爬虫练习一、爬虫简介1. 介绍2. 软件配置二、爬取南阳理工OJ题目三、爬取学校信息通知四、总结五、参考一、爬虫简介1. 介绍网络爬虫
    发表于 01-11 06:32

    python网络爬虫概述

    的数据,从而识别出用户是否为水军学习爬虫前的技术准备(1). Python基础语言: 基础语法、运算符、数据类型、流程控制、函数、对象 模块、文件操作、多线程、网络编程 … 等(2). W3C标准
    发表于 03-21 16:51

    使用 Python 执行 js 代码

    为什么要引出Python执行js这个问题?都说术业有专攻,每个语言也都有自己的长处和短处。在爬虫方向,Python绝对是扛把子,近几年随着AI的火爆,需要各种各样的数据,所以,
    发表于 03-31 16:05

    详细用Python写网络爬虫

    详细用Python写网络爬虫
    发表于 09-07 08:40 32次下载
    详细用<b class='flag-5'>Python</b>写网络<b class='flag-5'>爬虫</b>

    Wannacry的逆向分析加密文件的解密

    Wannacry的逆向分析加密文件的解密
    发表于 09-07 09:59 10次下载
    Wannacry的<b class='flag-5'>逆向</b><b class='flag-5'>分析</b>及<b class='flag-5'>加密</b>文件的解密

    Python学习爬虫掌握的库资料大全和框架的选择的分析

    Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。 Python学习网络爬虫主要分3个大的版块:抓取,分析
    的头像 发表于 05-19 10:45 4928次阅读

    python爬虫入门教程之python爬虫视频教程分布式爬虫打造搜索引擎

    本文档的主要内容详细介绍的是python爬虫入门教程之python爬虫视频教程分布式爬虫打造搜索引擎
    发表于 08-28 15:32 29次下载

    Python写网络爬虫

    Python写网络爬虫的方法说明。
    发表于 06-01 11:55 21次下载

    Python怎么玩转JS脚本

    本项目旨在让大家了解如何用Python来执行JS脚本,其主要目的是在进行数据 分析时,需要利用爬虫获取数据,有时会遇到JS混淆
    的头像 发表于 02-23 16:26 770次阅读
    <b class='flag-5'>Python</b>怎么玩转<b class='flag-5'>JS</b>脚本

    如何破解JS加密

    学习爬虫最难之一无非就是如何破解JS加密,但是关于JS加密的网上资料非常零散杂乱,本人对这方面也略有研究,本篇文章在之前两篇文章[
    的头像 发表于 02-24 14:57 1295次阅读
    如何破解<b class='flag-5'>JS</b><b class='flag-5'>加密</b>?

    Python调用JS的 4 种方式

    1. 前言 日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页源代码 通过调式,一层层剥离出关键的 JS 代码,使用 P
    的头像 发表于 10-30 09:41 309次阅读