JS逆向 | 练手吗?头秃的那种。

论坛 期权论坛 期权     
痴海   2019-7-29 01:09   2885   0
咸鱼又来练手了,需求在这:

想想有点激动:


[h3]分析请求[/h3]用浏览器抓一波登陆包:

可以看到有
  1. _abr_
复制代码
  1. beibeitoken
复制代码
两个加密参数。
我们再找找发现
  1. beibeitoken
复制代码
是上一个请求返回的:

好像难度一下减少了一半。


[h3]定位加密位置[/h3]还是老套路,搜就完事了:

通过关键字就找到一个相关文件,先进去看看。

先打上断点,重新登录一下,成功进入断点说明位置十有八九是找到了,F11进去看看里面的加密逻辑是什么样的。

看上去逻辑还蛮简单的,就是先这样再那样然后拼接在一起返回回来,完事儿~

[h3]分析加密[/h3]我们一个个跟进去研究下:
  1. u,d,a,e,s
复制代码
这几个加密都可以通过上图的方法追踪到对应的加密。
这里我们主要研究
  1. f
复制代码
  1. m
复制代码
的加密逻辑。
先看看
  1. f
复制代码
的加密逻辑:
1var f = d.length ? (0,l["default"])(d.join("&")) : ""
这里跟进去看看
  1. l["default"]
复制代码
是什么:

这里的
  1. e
复制代码
是初始化加密算法,我们再跟进去看看:


看到这里我已经不怎么想扣代码了,这么多乱七八糟的什么东西,要是真抠出来估计头发要掉一半。


而且这个代码看着也不像自写的算法,估计也是套的通用的那几种算法,所以我开始翻之前扣过的代码,果然让我找到了:

上面的代码是不是长得有点像,为了验证这个想法我把js里关于加密的代码扣下来look look

不得不说好的编辑器可以让你事半功倍,看到图中划线的地方这个参数的加密方法就一目了然了。
我们可以直接把它改成Python实现:
  1. from hashlib import md5
复制代码
  1. def md5value(s):
复制代码
  1.     a = md5(s.encode()).hexdigest()
复制代码
  1.     return a
复制代码


接下来继续分析
  1. m
复制代码
的加密方法:
1m = (0,c["default"])(g, "ytU7vwqIx2UXQNsi");
有了上面的铺垫,我们继续追进去分析一波:


接下里就是编辑器表演的时候了

好了,到这里就破案了,接下来你可以用Python实现也可以直接使用Node的CryptoJS加密实现。


下次练(tou)手(tu)再见~



推荐阅读:
50行Python代码,教你获取公众号全部文章

还在被大妈灵魂拷问?使用Python轻松完成垃圾分类!

人必有痴,而后有成

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP