前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:煌金的咸鱼

正文

先来看看今天的受害者:

aHR0cDovL3d3dy5taWd1dmlkZW8uY29tL21ncy93ZWJzaXRlL3ByZC9pbmRleC5odG1s

一、分析密码加密

这次分析的是他登陆的三个参数,先分析登陆逻辑,抓个包看看。

可以看到这里用的是弹出的窗口登陆【图1-1】,为了避免主页其他元素的干扰抓包,我们可以通过右键 查看框架源代码 的方式打开登陆框分析抓包【图1-2】。

把打开的源代码页面地址栏中的 view-source:删除即可打开以下页面【图1-3】:

点击「密码登录」切换到密码登录页面,接下来用错误的账号密码登陆一波,可以看到如下的包【图1-4】,不过通过上面的 publickey 隐隐猜到这里的加密参数可能和 RSA 有关,先来找找密码加密的位置:

照常搜索一下 enpassword ,预料之中是没有搜索到有用的结果【图1-5】,不过定位元素可以通过 name 定位 也可以通过 class 定位,所以同样试试 J_RsaPsd,果然找到像样的文件了【图1-6】。

在打开的文件里检索J_RsaPsd,可以看到有3个相关的结果(熟悉加密的已经可以看出这里是 RSA 加密),我们通过把所有相关的结果都打上断点【图1-6】,并通过重新发起一次登录请求,来判断哪个J_RsaPsd是密码的加密逻辑。

通过重新发起请求,断点断在 333 行【图1-8】。

我们先复制整段代码:

c.setPublic(a.result.modulus, a.result.publicExponent);

var d = c.encrypt(b.val());

b.siblings(".J_RsaPsd").val(d)

我们通过控制台看看这些参数分别是什么【图1-9】。

通过前文抓包和JS页面的代码,我们判断密码的加密是RSA加密,所以我们就需要找齐RSA加密的需要的几个要素,比如他的公钥 ,因为RSA是非对称加密本地使用公钥加密,服务器上使用私钥解密。再看看【图1-8】上的几个参数不知道你们有没想起开头【图1-4】我提及的那条抓包。我们切换到 控制台-Network 看看【图1-10】。

{"status":2000,"message":"","header":{},"result":{"publicExponent":"010001","modulus":"00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817"}}

是不是和我们在【图1-9】中打印出来的数值完全相同

tip : 这里的b.val()是我输入的错误密码。

这里我们找齐了加密需要的参数,其实我觉得没必要扣JS,但是我知道。。

不要我觉得,你要你觉得

所以偷懒用之前扣的代码测试一下:

-----------此处省略500行-----------

function bodyRSA()

{

//setMaxDigits(130);

var key = RSAUtils.getKeyPair("010001","","00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817");

return key

}

function get_encrypt(password) {

key = bodyRSA();

var a = RSAUtils.encryptedString(key,password)

//var b = RSAUtils.encryptedString(key,username)

console.log(a)

console.log('----------------------------------')

//console.log(b)

return a

}

get_encrypt('11111111111')

二、分析FingerPrintDetail与fingerPrint

根据第一部分的【图1-5】和图【1-6】可以很快定位加密的位置,这里就不说了【图2-1】。

追进去分析一下rsaFingerprint的逻辑,可以看到其实和密码加密用的是一样的RSA加密【图2-2】只是部分参数不同。

这里比较疑惑的是.fingerprint.result和.fingerprint.result和.fingerprint.details是怎么来的。

通过检索$.fingerprint根据查找的结果找到他的位置【图2-3】

继续向上查找,最终找到这里,发现是根据浏览器的请求头等信息生成的一串哈希值【图2-4】。

这个值如果不修改请求头信息,那么这个值就是固定不变的,如果修改请求头信息,那么就需要重新生成这段hash,这就是这个的浏览器指纹信息。

因为我们这里只是抱着学习的态度学习,所以就不瞎搞,不过这个整段的代码也比较简单没事可以扣一扣。

tip: 如果想要分析这个指纹的算法,记得要刷新一下页面才可以进入断点。

三、总结

结合之前的建议,文章的配图都标注了序号,希望能够起到一定梳理思路的作用。

这个网站的加密总体还是只用RSA的加密算法就可以搞定了,整体加密算法比较简单有经验的老哥直接通过加密库就可以实现,如果想练练手的也可以抠出来试试。

gta python解指纹_python爬虫JS逆向:X咕视频密码与指纹加密分析相关推荐

  1. python爬虫JS逆向:X咕视频密码与指纹加密分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:煌金的咸鱼 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

  2. was控制台的用户和密码怎样加密使用_Python爬虫进阶 | X咕视频密码与指纹加密分析...

    先来看看今天的受害者: aHR0cDovL3d3dy5taWd1dmlkZW8uY29tL21ncy93ZWJzaXRlL3ByZC9pbmRleC5odG1s 一.分析密码加密 这次分析的是他登陆的 ...

  3. **超防 ja3+加速乐(三种加密(md5,sha1,sha256)) 实战(python爬虫js逆向)

    **超防 加速乐+ja3 实战(python爬虫js逆向) 地址 aHR0cHM6Ly93d3cuaGVmZWkuZ292LmNuL2NvbnRlbnQvY29sdW1uLzY3OTQ4MTE/cGF ...

  4. Python调用,爬虫JS逆向——ajax类型数据,数据加密获取步骤和方法(二)

    Python调用,爬虫JS逆向--动态数据 JS逆向-ajax加密数据 加密数据是无法通过在后台找到接口进行请求来获取数据 目标网站:https://jzsc.mohurd.gov.cn/data/c ...

  5. 爬虫js逆向获取信息,有道翻译逆向{‘errorCode‘: 50}及UA错误

    直奔错误记录,{'errorCode': 50}的错误原因,在我的这次学习过程错误是由于请求使用错误,用了get方法,有道翻译是需要用post才能请求: 切记留意请求方式,不要习惯性使用request ...

  6. js 模拟点击_爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考爬虫认知 在程序猿所有的方向中,爬虫是离money最近的一个方向,你 ...

  7. 21.网络爬虫—js逆向详讲与实战

    网络爬虫-js逆向 js逆向 JavaScript逆向的详细讲解 实战演示 有道翻译 设置密钥和初始向量 对密钥和初始向量进行哈希处理 创建AES对象并解密消息 移除padding并返回结果 前言:

  8. sojson jsjiami.com.v6 爬虫js逆向

    sojson jsjiami.com.v6 爬虫js逆向 地址:aHR0cDovL3d3dy5wYmMuZ292LmNuL3JteWgvMTA1MjA4Lzg1MzIvaW5kZXg1Lmh0bWw= ...

  9. python爬虫JS逆向加密破解之百度翻译

    最近在从基础学习JS逆向,来分享一下百度翻译JS逆向的整个过程,也有助于自己加深记忆. JS逆向可以说是爬虫工程师必备的知识点了,但是如果对前端知识不够了解还是学起来很有难度的. 想学习的话可以在B站 ...

最新文章

  1. 初学编程,不了解编写规范,代码不能运行,幸好有入门宝典
  2. 2015/5/9站立会议(补发)
  3. 1057 Stack (30 分)【难度: 中 / 知识点: 树状数组 STL】
  4. #3551. [ONTAK2010]Peaks加强版(kruskal 重构树 + 主席树)
  5. 快报:Java跌惨!Python背后或有推手?网友:心态已崩!
  6. python爬取网上文章_python 爬取微信文章
  7. python字典api_python接口自动化(九)--python中字典和json的区别(详解)
  8. 张凯院 矩阵论学习_有限群表示论(0): 前言
  9. BZOJ 2588: Spoj 10628. Count on a tree( LCA + 主席树 )
  10. 盘点电商大战背后的技术力量支撑
  11. 44. 容器的成员函数优先于同名的算法
  12. 10 EDA技术实用教程【时序电路Verilog设计1】
  13. 简述ip地址的abc类如何划分_ip地址的分类abc类的具体含义与分类方法
  14. 【机器学习】分类性能度量指标 : ROC曲线、AUC值、正确率、召回率、敏感度、特异度
  15. mariadb特有函数
  16. 嵌入式pcb打造超薄降压模块让14500锂电池直接替代5号电池
  17. dedecms_标签调取大全
  18. 了解Nape 2d物理引擎 第一天
  19. 视频文案合并,清除原视频声音让文案转语音
  20. 出场、入场动画大全,基于NineOldAndroids轻松实现动画效果

热门文章

  1. 错觉图片生成实验 - Go forward together
  2. Python 获取LOL 皮肤(一)
  3. Android开发 Bmob第三方云实现登陆注册
  4. 王者荣耀体验服什么叫服务器未响应,王者荣耀体验服登陆不进去怎么回事 体验服版本错误解决方法...
  5. RxJava2.0使用记录
  6. LeetCode-133
  7. 2023华为od机试真题B卷【AI面板识别】Java 实现
  8. HUAWEI HG659 lib 任意文件读取漏洞
  9. scratch案例—跳舞的小女孩
  10. mac电脑如何下载git