某音web端的_signature参数破解

开场啰嗦:

前几天一个朋友遇到的问题,在此做个记录,希望对大家有所帮助。前一篇的验证码的js已经追完了,有点乱只能理一理给大家写出来了。最近在忙着看java,手上是还有几个典型的逆向网站的破解思路,后期只能挤点时间来给大家分享了。
*本文若侵犯贵公司权益,请联系本人删除


本文待破解参数:

抖音web端的_signature参数,这个参数其实很容易追到,我们上链接:aHR0cHM6Ly92LmRvdXlpbi5jb20vZTVBU0E0Ni8=,这是用户页面分享出来的连接。
某音web端的_signature参数破解
直接全局搜索就能找到了,_signature=signature,那就再搜索signature呗某音web端的_signature参数破解
这不显而易见了么,打上断点之后得出nonce就是用户id,那我们就差_bytedAcrawler呗,继续全局搜索,找到_bytedAcrawler
某音web端的_signature参数破解
走到这里了,我隐隐约约感觉到了什么,继续搜"9bd2804c7e68ac461d65"
某音web端的_signature参数破解

走到这里看过我之前写的webpack打包的同学都知道,我们开始找分发器呗,打上断点然后我们就能找到分发器的位置
某音web端的_signature参数破解
这里肯定有小伙伴要问了,我直接进入_bytedAcrawler.sign这个方法不行么,当然你要把他当一个方法也不是不行,你进入的会是这样一个文件
某音web端的_signature参数破解
这里面你要是硬钢也可以,作为一个合格的爬(摸)虫(鱼),我不愿意做。

好了我们先开始扣js代码,我们将分发器扣下来,然后按网页上的js运行下
某音web端的_signature参数破解
运行报错,缺少啥呀,缺少ua,那我们就补一个ua就行了

navigator = {
    userAgent:"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}

继续运行,等到下面截图所示
某音web端的_signature参数破解
这好像就是我们想要的嘛,在这里有的小伙伴又要问了,那_bytedAcrawler.sign到底是怎么生成的???

某音web端的_signature参数破解
我们在js代码上打上断点,然后可以得出,这不就是jsvmp么。那是不是到这里我们就结束了呢?试着请求下数据

{'status_code': 0, 'has_more': 0, 'max_cursor': 0, 'min_cursor': 0, 'aweme_list': []}

好家伙,没数据,难道是思路错了?


环境缺失:

思路要是错了,那肯定不会得出相差不多的加密结果,那到底是哪里错了呢?自然而然就是想到了是缺失相关环境,给了我一个过不了风控的加密结果。


从各个环境参数开始摸索:

看看到底这js代码都用了哪些属性,当我看document时,它告诉了我用到了createElement的属性,而我继续看createElement时,它告诉我用到了canvas
某音web端的_signature参数破解
dom节点这个该怎么补???是不是头好痛,没关系,我们继续看canvas用到了哪些
某音web端的_signature参数破解
我们继续补出来,然后像之前一样继续看他们都用到了什么,一直补就行。
最后我们架个服务看看是不是能得到数据
某音web端的_signature参数破解
完结,撒花


别的思路:

当然条条大陆通(带)罗马(手镯),jsdom、rpc都行,看情况,我一开始是用jsdom偷懒直接写了,就是有点耗资源,响应肯定是慢了许多。面对现在越来越juan的大环境,手上还是要多点防身手段的(手动滑稽)。
公众号:python小丑鱼

上一篇:比特币技术 --- 交易的验签原理


下一篇:java对接微信公众号