网页抓取 加密html( 分析请求老规矩先抓包,在一番标签下等了半天)
优采云 发布时间: 2021-12-28 03:17网页抓取 加密html(
分析请求老规矩先抓包,在一番标签下等了半天)
分析请求
旧规则是先抢包裹。在xhr标签下等了半天,没有发现异步请求,不过很快就出现了show操作。
在Html页面请求中发现以下内容:
根据我多年的经验,这应该是对页面显示的属性内容进行加密,然后在页面显示时按照一定的解密逻辑还原显示。这真是个麻烦事。
位置加密
果然,他苦恼了二十多分钟才定位到加密位置,一直没有找到。感觉超出了我的能力范围。
为了能够愉快的摸(啦)鱼(shi),不再担心,所以决定今天先来这里。
本文结束。
不过还好,在有偿摸鱼(la)鱼(shi)的过程中,我突然有了新的想法,想到了之前一直忽略的东西。
让我先梳理一下我的想法:
这条加密的信息在页面显示上必须有一个位置来标识解密后显示的位置,并且在页面密文上显示的位置正好有一个id(全局只有一),如果你猜对了,那么事情简单太多了。
于是,搜索结束,结果没有找到假想的js文件。
突然
不过我在这个页面上发现了两个equip_desc_panel,赶紧跟进,发现如下代码:
$("equip_desc_panel").innerHTML = parse_style_info(get_equip_desc("equip_desc_value"));
下意识地再次搜索:
果然,发现这个貌似加密的东西,撞到断点,刷新,成功进入断点。
虽然这个定位加密的过程很曲折,也有点味道,但事实告诉我们:
有偿摸(la)鱼(shi)
有助于灵感迸发
分析加密
既然已经成功进入断点,那么我们就追进去看看:
这个混淆后的代码就是我们要分析的加密。
这个混淆乍一看有点大,但是混淆的方法在之前的文章中也有提到,有兴趣的朋友可以翻翻。
点我-----> JS反向常见混淆汇总
了解迷茫之道后,先冷静下来,明白这种长得一模一样的东西,最怕烦躁。
从头一步一步开始,观察传入的值,顺便复制一下代码放到代码中。
_0x1b3f48['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74']
把这个方法名翻译成普通的js代码,方便理解,理解大致的解密过程,明确我们最终需要的值是如何产生的。
之后就是找老套路缺什么的阶段了,但是在推导代码的过程中有两个坑:
扣除代码时,很明显已经扣除了整体逻辑,但没有返回任何值。通过打印调试发现,这段代码中的_0x1b3f48返回的是空值,使得后面的for循环没有结果,需要特别注意。
还有浏览器使用的base64编码转换
_0x1c0cdf = _0xcbc80b'atob',
但是调试nodejs时使用的是
Buffer.from(_0x1c0cdf,"base64").toString()
经过一番不懈的努力(tu)(tou),结果成功了。
全文结束。