首页 > 其他分享 > JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程

JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程

时间:2023-05-16 16:32:35浏览次数:36  
标签:group cid -- 某站 headers url aid rid

接上节课内容

JS逆向 -- 分析某站buvid3和_uuid的加密过程

JS逆向 -- 分析某站b_lsid值加密过程

一、清除cookie信息,刷新网页,ctrl+f搜索sid,这样找到的数据是在url里或者响应信息里面,全局搜索找到的一般都是在js里面的数据,找到一个v2的数据包,里面有setcookie

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_ci

二、该数据包是get请求,分析里面的请求数据

https://api.bilibili.com/x/player/wbi/v2?aid=400789390&cid=1119048652&w_rid=b18731f67c5be2da813395f8a884ccdd&wts=1683797034

1、aid和cid

刷新视频页面,ctrl+f搜索aid,发现aid和cid,还有视频阅读量,就在网页源码中,所以可以直接python代码实现

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_正则_02

代码实现

import requests
import re


headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
}
url = 'https://www.bilibili.com/video/BV1TW4y1x73q/?spm_id_from=333.788.recommend_more_video.11'


响应数据 = requests.get(url, headers=headers).text
正则结果 = re.search('"stat":\{"aid":(?P<aid>\d+),"view":(?P<view>\d+),"danmaku', 响应数据)
aid=正则结果.group("aid")
视频播放量=正则结果.group("view")
cid=re.search('"cid":(.*?),"dimension"', 响应数据)
print(aid,cid.group(1),视频播放量)

2、w_rid

w_rid出现了三次,都不一样,我们要的是最下面的值v2里面的w_rid

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_正则_03

在关键代码处全部下断

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_ci_04

第一次断下

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_ci_05

第二次断下

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_数据_06

重新ctrl+f重新搜索w_rid,V2数据包中w_rid是第二次断下来的值

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_正则_07

重新刷新页面,第二次断下,然后追数据,最后加密值来自于h

h = o()(p + i),p的值是:"aid=945189005&cid=892094702&wts=1684220967"

i第值是固定值:caa9ea6e1ec3e32c3efa79550f4b416a

最后的结果是32位数值,我们猜测是md5加密,经过测试,也确实是md5加密

 JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程_数据_08

三、重新构造数据包,实现V2的发送

import requests
import re
import execjs
import time


headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
}
url = 'https://www.bilibili.com/video/BV1TW4y1x73q/?spm_id_from=333.788.recommend_more_video.11'


响应数据 = requests.get(url, headers=headers).text
正则结果 = re.search('"stat":\{"aid":(?P<aid>\d+),"view":(?P<view>\d+),"danmaku', 响应数据)
aid=正则结果.group("aid")
视频播放量=正则结果.group("view")
cid=re.search('"cid":(.*?),"dimension"', 响应数据)
print(aid,cid.group(1),视频播放量)




def getwrid(aid,cid,r):
    node = execjs.get()
    fp = open('jiami.js', 'r', encoding='utf8')
    ctx = node.compile(fp.read())
    a="aid="+aid+"&cid="+cid+"wts="+str(r)+"caa9ea6e1ec3e32c3efa79550f4b416a"
    res='MD5_Encrypt("%s")'%(a)
    print(res)
    return res
url='https://api.bilibili.com/x/player/wbi/v2'
r = int(time.time() * 1000)
print(r)
w_rid=getwrid(aid,cid.group(1),r)
print(w_rid)
参数={
    'cid':cid.group(1),
    'aid':aid,
    'w_rid':w_rid,
    'wts':r
}
res=requests.get(url,params=参数,headers=headers)
sid = res.cookies.get_dict()['sid']
print(sid)


标签:group,cid,--,某站,headers,url,aid,rid
From: https://blog.51cto.com/u_15288375/6285336

相关文章

  • 2020,我想请你喝杯咖啡
    写这个公众号最初的想法是,希望可以做一些技术沉淀,顺便交几个志同道合的好友。每一个订阅,都来自一个朋友的信任。为安全爱好者,提供优质的内容输出,分享有价值的知识。这个公众号一直都是由我个人在写,白天在公司上班,只能在周末或者晚上打理公众号,每周一篇原创。这里,有我的技术,有我的经......
  • 网站加密,防止截屏,打印,另存为
    1、禁止另存网页,把如下代码加入到网页<body></body>中程序代码<noscript><iframesrc=*.html></iframe></noscript>2、禁止缓存可以前台HTML使用程序代码<metahttp-equiv="pragma"content="no-cache"/>3、禁止剪切或截屏(ie有效,原理就是清空剪切板),可以......
  • 各种Window权限维持姿势合集
    Pentestlab博客自10月1号开始,按照ATT&CK技术框架的持久性技术点,更新了一系列关于Window权限维持的文章,现在还在不断更新中。我认为这是一个非常好的关于Window权限维持的系列文章,介绍了Window权限维持的多种方式,包含了各种开源工具/框架提供了这种能力,如Metasploit、Empire和Cobalt......
  • 记录一个终端入网小助手的bug
    背景:技术leader拿到一台超薄笔记本,系统标准化安装,笔记本一开机风扇嗡嗡响,键盘也开始发烫,资源占用排名前三的进程都是终端管理软件,一下子就找上门了。处理:进程分析发现异常,卸载入网小助手后恢复。原因:Devcon64.exe是准入客户端用来获取U盘相关信息的检测进程,但由于未知原因,小助手频......
  • hibernate 批量插入的测试 转
    Hibernate批量插入的测试:最近在项目中做了一个充值卡的模块,用到了批量插入:我一开始用hibernate插入五十万条数据:选说一下我的记算机配置:内存:1G,CPU:Pentium(R)4CPU3.20GHz.配置应该算是过时的了,我的数据库是:oracle10G,数据库服务器在外地,我测试插入到十万条的时候用了二十五分......
  • 跨域问题如何解决
    跨域问题是由于浏览器的安全策略所导致的。如果在页面中向不同域名或端口号的服务器发送请求,浏览器就会拒绝响应,从而避免恶意网站获取用户的敏感信息。下面是几种解决跨域问题的方法:通过在服务器端设置响应头来解决。服务器端需要设置Access-Control-Allow-Origin响应头,可以设......
  • Spring源码:Bean生命周期(五)
    前言在上一篇文章中,我们深入探讨了Spring框架中Bean的实例化过程,该过程包括从Bean定义中加载当前类、寻找所有实现了InstantiationAwareBeanPostProcessor接口的类并调用实例化前的方法、进行实例化、调用applyMergedBeanDefinitionPostProcessors方法等多个步骤,最终生......
  • cocos 游戏开发项目中注意事项
    1、用vscode编辑代码的配置CocosDashboard.exe  打开后,在文件=》设置=》数据编辑=》外部脚本编辑选择vscode的code.exe  例如:自己的 C:\Users\自己的电脑用户名\AppData\Local\Programs\MicrosoftVSCode 下后保存即可,后期可用vscode编辑代码2、在vscode中编辑代......
  • 58.oracle密码过期
    一般oracle数据库中创建的用户默认是180天过期,一般如果想让它永不过期,可以进行如下设置:1.使用dba用户登录sqlplus/assysdba2.查看口令失效用户的profile文件SELECTusername,profileFROMdba_userswhereusername='xxxx'; #这里主要查看用户对应的profile文件。3.查看......
  • 手把手教你如何下载超星学习通课件资料
    前言:很多同学都想知道超星学习通中课程资料怎么下载,但是超星学习通中某个课程的目录中展示的资料是不提供直接下载方式的,所以下面就教大家如何下载目录中展示的资料,包括PPT和PDF。一、电脑登录超星学习通网页版,复制课程链接网页版超星学习通登录入口:【https://i.chaoxing.com】......