专栏首页咸鱼学PythonPython爬虫进阶必备 | 某电竞加密参数分析( 什么花里胡哨,三行代码完成加密)

Python爬虫进阶必备 | 某电竞加密参数分析( 什么花里胡哨,三行代码完成加密)

建议收藏 | 最全的 JS 逆向入门教程合集

目标网站:

aHR0cHM6Ly93d3cuamRqMDA3LmNvbS8=

抓包分析与加密定位

首先打开开发者模式,抓包请求【图1-1】

图1-1

可以看到这里的加密参数名为sign

拿到加密参数名,我们现在用两种方法定位加密位置

•xhr 断点•直接搜索参数

使用 xhr 断点只要分析堆栈肯定可以找到这个参数生成的地方,不过很麻烦,建议当你没办法通过检索参数名找到加密位置的线索的时候再使用 xhr 断点。【图1-2】

图1-2

在这个例子当中,直接搜索 sign 就可以找到这个加密的参数位置了。【图1-3】

图1-3

结果不多只有 5 个,逐个检索也可以找到,上图红框中标记的就是 sign 这个参数加密所在文件,我们打开在文件中再次检索。【图1-4】

图1-4

可以看到,这个参数 sign 等于 a ,如果你没办法确认这个位置是不是,你可以打上断点重新加载看看是否会断在这个位置就知道了。

加密分析

找到加密位置之后,我们就来看看这个 a 他的加密到底是个啥。

经过断点可以看到a是在这里生成的。【图2-1】

图2-1

那么a 等于什么呢?就是下面这一串了。

var e, n, r = (new Date).getTime(), o = "timestamp=".concat(r,"&secret=").concat("aHVheWluZ19zZWNyZXRfYXBp"), a = (e = o,n = i()(e),encodeURIComponent(s.a.stringify(n)));

这段代码怎么理解?

其实非常简单,我给大家拆分一下。

a 的值是等于 encodeURIComponent(s.a.stringify(n))

但是生成a中用到了变量n,这个 n又等于i()(e)

同样的这里还用到了i()e,这里的e = o就是当前的时间戳,i()这个方法返回了加密方法e

现在每一部分缺失的都找到了,只要明白这个加密方法e是什么就完成了。

我们追进去看看【图2-2】

图2-2

看到这个有没有感觉有点熟悉。

之前我写过一个文章有类似的代码。

当我追到_doFinalize之后看到了下面这段代码。【图2-3】

图2-3

看到上图红框的地方,我就知道:我好了,你们呢?

回顾上面的逻辑,下面这段代码就是sha256 + base64 再将结果用 URL 编码一下,完事了。

var e, n, r = (new Date).getTime(), o = "timestamp=".concat(r,"&secret=").concat("aHVheWluZ19zZWNyZXRfYXBp"), a = (e = o,n = i()(e),encodeURIComponent(s.a.stringify(n)));

面对这样的加密,其实只要三行代码就完成了

var CryptoJS = require("crypto-js");
var sha256 = CryptoJS.SHA256('timestamp=1577106229851&secret=aHVheWluZ19zZWNyZXRfYXBp')
sha256 = CryptoJS.enc.Base64.stringify(sha256);
// 送一行打印代码
console.log(encodeURIComponent(sha256))

对于老手或者看过我之前文章的朋友,这个文章太简单了。

下面是给一些新手朋友的一些搜索关键词和解答一些问题。

第一个,s.a.stringify怎么看出他是 Base64 的 ?

单步调试到下图位置

然后使用F11你就看到下面的代码了。

在这里还是没有看出来的话可以在浏览器中搜索js base64 stringify 就会看到很多类似的文章了。

第二个,实在不知道上面e的加密是什么,就把源字符串复制到网上的在线加密网站上试试。很快就能得出结果了,

本文分享自微信公众号 - 咸鱼学Python(xianyuxuepython),作者:煌金的咸鱼

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫进阶必备 | X笔网密码加密分析

    有读者朋友纠结于搜索password = or password:这样需要搜索两遍是不是浪费时间了,不如直接搜索password来的方便快捷。

    咸鱼学Python
  • 实战案例浅析JS加密 - 基础总结篇

    找了一圈发现越是大厂加密越是简单,安全防护之类的完全不靠js加密,扫码登陆才是关键。比如微信公众号平台的登陆加密就是简单的MD5,但人家有扫码登陆,此类情况比比...

    咸鱼学Python
  • 实战案例浅析JS加密 - RSA与XXTEA

    尝试了上面流程里面列举的可能的参数名,并没有发现有用的信息,所以试了下直接搜索password关键字,找到一个可能和登陆相关的文件,搜索发现疑似的加密代码:

    咸鱼学Python
  • 音视频防爬技术

    小编团队多年的技术服务中沉淀了一些音视频加密的经验,对于在线教育平台的音视频加密提供一些知识了解和交流

    点量小崔
  • 你的服务器,真的还好吗?

    人们常认为,由于服务器在数据中心锁起来,又由于数据在持续使用,因此不需要加密服务器驱动器,因为数据永远不处于静止状态。

    养码场
  • Linux进入单用户模式加密

    在默认情况下,系统会在3(完整的多用户模式)和5(带界面的操作模式)两个级别下运行。在之前的文章中已经和大家介绍了如何将系统切换至单用户模式下运行,在单用户模...

    聚沙成塔
  • PHP的几个常用加密函数

    在php的开发过程中,常常需要对部分数据(如用户密码)进行加密 一、加密类型: 1.单向散列加密   就是把任意长度的信息进行散列计算,得到固定长度的输出,这个...

    joshua317
  • 深入MongoDB4.2新特性:字段级加密

    作为使用过MySQL或者之前MongoDB数据库的同学,应该很容易理解,绝大部分的电商、银行、社交平台的数据库敏感字段都会考虑加密处理。例如:支付宝、微信、微博...

    MongoDB中文社区
  • 欧洲加密市场分析

    对几代人来说,欧洲是世界学习和创新的中心。从中世纪到现代世界的黎明,许多科学和学习的进步都来自欧洲。随着时间的推移,技术似乎已经转移到了美国和亚洲,但欧洲仍然是...

    九尘Ken
  • 教育行业音视频加密经验分享

    最近小编经常接到一些幼儿园、中小学教育、职业教育等教育机构的音视频加密咨询,由于对加密技术不是很了解,很容易被价格引入误区。加密就像一把锁,几块钱的到几百几千的...

    点量小崔

扫码关注云+社区

领取腾讯云代金券