逆向某小说网站(字体反爬)

        作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!


目标网站:aHR0cHM6Ly93d3cuaG9uZ3NodS5jb20vY29udGVudC8xMTM3NzIvMjA1NDI1LTE0NTU1NzIuaHRtbA==


1.确定接口

        抓包,确定内容都在bookajax.do包中,第一个ajax包中包含key,是第二步需要的参数;第二个包中需要用到content、other、nextcid。

        直接copy curl,转换为python代码运行,发现只需要保持cid一致就可以请求成功,得到数据后就可以进行下一步了。

2.代码解密

        第二次请求后得到的content和other很大,所以很可能数据存储在其中,需要先破解加密后确认推测是否正确。

        由于content和other都是返回的加密后的字符串,而页面显示的是正常文字,所以肯定存在解密的js文件或者解密函数,直接全局搜索decrypt(,发现有结果,进去后再ctrl+f搜索content,确定解密位置。

data.content = utf8to16(hs_decrypt(base64decode(data.content), key));

        代码中的加密函数在文件前面有定义,直接copy下来运行,可以跑通。content跑出来是一段包含中文的字符串,但不连贯,从网页检查发现context_kw8等是中文,所以存在字体反爬。

        other解出来是一段js代码,有理由怀疑other解出来的代码是解密字体反爬的。

3.ast反混淆

        将other解密后的代码写入js文件中,格式化(ctrl+alt+l),发现有许多混淆后的代码,仔细看看,是标准的ob混淆,那就用ast反混淆。(如果没有学过ast,请先学习再看)

        我们的目的是将解密函数代替的字符串解出来。

        将代码粘贴到ast在线平台,找到大数组,偏移函数、解密函数的节点。

        导入babel库,将所需代码写入内存,测试是否可以运行。

        可以运行,接下来就是对节点进行替换,利用ast的特性,编写规则。

        可以看出解密函数部分的代码已解混淆。

4.字体反爬逆向

         查看代码,发现words[i]即为原本字体,运行发现需要补document环境,搜索words发现并没有在包含document的代码中调用,直接把document部分删除。再运行,可以得到文字。

        但是得到的结果不是我们想要的,原因有二:

        1:需要判断document的type,控制台输出的document.type是错误的,在我们删除的第二行代码有。

        2:还有一个判断语句,默认是走catch,我们需要的是走if。

        在文件最前方加入以下代码可以完整运行,且可以得到正确答案。

    let my_code0 = 'document = {\n' +
        '  \'type\': \'text/css\'\n' +
        '};\n' +
        'top = {\n' +
        '  \'window\':{\n' +
        '    \'location\':{\n' +
        '      \'href\':\'href0\'\n' +
        '\n' +
        '    }\n' +
        '  }\n' +
        '}\n' +
        'window={\n' +
        '    \'location\':{\n' +
        '      \'href\':\'href1\'\n' +
        '\n' +
        '    }\n' +
        '  }'

        

5.替换字符,得到数据

        利用flashtext库进行字符串替换,将 span class=\'context_kw 替换成 gt;{原文}&lt ,方便正则提取。

        替换之后运行,得到结果:

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值