您的位置:首页 > 财经 > 金融 > 赣州网红打卡地_上海中建建筑设计院有限公司_口碑好的设计培训机构_如何做网站的教程

赣州网红打卡地_上海中建建筑设计院有限公司_口碑好的设计培训机构_如何做网站的教程

2025/4/19 15:21:03 来源:https://blog.csdn.net/Tom995083162/article/details/147168726  浏览:    关键词:赣州网红打卡地_上海中建建筑设计院有限公司_口碑好的设计培训机构_如何做网站的教程
赣州网红打卡地_上海中建建筑设计院有限公司_口碑好的设计培训机构_如何做网站的教程

之前写的 动漫弹幕播放 地址解析失效了,当时是参考
【js逆向实战】某sakura动漫视频逆向-CSDN博客 进行地址解析的,更新地址解析代码的同时复盘一下原理。

原始地址

https://www.xxxxx.com/play/9173-1-14.html

m3u8

f12
寻找 iframe src 地址

/m3u8.php?url=GedenPN%2BvT6sm7p2fL7D0OMsqPKxfGPSEkAezxSENXU2351XtA4gUXeOJhbKTFVl%2B5XQx1MyQ8rwrxZlKY8FNw%3D%3D

这类网站都通过 m3u8 解析获取到真实播放地址,
直接请求过去发现有这样一段代码

var bt_token = "8d312e8d3cde6cbb"; 
var config = {"id": "5bb98936c37650c19658b90b1d9a4427","api":"//danmu.yhdmjx.com",//弹幕接口   前面架设自己的域名 防止后台弹幕库报错    例如   https://www.baidu.co"key": "yhdm",//应用KEY码,如果不填将获取全部弹幕信息(填写后指定应用弹幕)"url": getVideoInfo("S1F4zX4rxgsapgLUueZYH0tkIbh6aSGHuBMN9xwB3t+mcaEYyz33s53RHoVrZT2yapHbTQjce54UrA8IO1/bQA8xGzbJeZ8QE/EoBgg6U754+TCPYaemx8KaWWTBstZMxF9uzI0tmOgjxRRfQ+kNiZ2fYYaSJfm1jDmLCaxP19e+Uiwh6w3yIxJJkQnjDj93jsr4fMqafxyqPZv3+8y7t8OJ6rYNUWlER9HhASNxtLTPHEwCps3ZAdtAc/rNkKiDLefVTcYEpuBiuaGg/gLmXwnVhk1mdFDHxNI1zFOgXpE45NZREYzBEzWlcmO2996W5egDJN0F5pCnnjZfcG5FIUAUYtJM7irpHqYT8TPqPD3kxTWwtuoZHxP+ZAy7+1OvIQnAXLm2M0e35CUCiyUN67g7yBVjzthHipRn4lXQ783cf0ZWoiR/6zC1pANxTs7mx53AxhEpUtlJy8XYzg9kp4gTOOMqvawJ3w4rGRsy3rgL2KwUqP1EwL5mIVMaMSsEi7hMLiMXNdZXbbxOrNbbW5h+zwjD8VIVRIsB2g5rJ2Bnl9gnVwMqivj49uEGO6u4vRDndiebegMEStdj/D8dxRtFtGlX408we0fwbVlmi4c="),//视频链接"sid":"",//集数id"pic":"",//视频封面"title":"",//视频标题"next":"",//下一集链接"user": "",//用户名"group": "",//用户组}
lele.start()

getVideoInfo 将一长串的加密信息最终转换成 url
js/play.js 下有该函数

var _0xod4 = 'jsjiami.com.v6'

用了 js 混淆加密

js 混淆解密

将 play.js 用下面工具解密
https://github.com/NXY666/Jsjiemi
解密原理是用了 AST
AST是Abstract Syntax Tree的缩写,可直译为抽象语法树。
编译原理的东西,可以大概理解为将代码转换成 ast 然后转回来。

解密后可得

var _token_key=CryptoJS.enc.Utf8.parse('57A891D97E332A9D');
var _token_iv=CryptoJS.enc.Utf8.parse(bt_token);
var key_token=CryptoJS.enc.Utf8.parse(randomRange(16));
function v_encrypt(_0x40b5a1,_0x247525,_0x40a45a){return CryptoJS.AES.encrypt(_0x40b5a1,_0x247525,{'iv':_0x40a45a,'mode':CryptoJS.mode.CBC}).toString();
}
function v_decrypt(_0x2f61c9,_0x14dd13,_0x2bf4a2){return CryptoJS.AES.decrypt(_0x2f61c9,_0x14dd13,{'iv':_0x2bf4a2}).toString(CryptoJS.enc.Utf8);
}
function getVideoInfo(_0x285840){return v_encrypt(v_decrypt(_0x285840,_token_key,_token_iv),_token_key,key_token);
}

结合前面 bt_token 构造 AES 解密代码

import CryptoJS from "crypto-js";const key = CryptoJS.enc.Utf8.parse("57A891D97E332A9D");  //十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse('8d312e8d3cde6cbb');   //十六位十六进制数作为密钥偏移量// 解密
function Decrypt(srcs, key, iv) {let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);return decryptedStr.toString();
}let code = "A1RPrijP4vh3r8Uz1+gcfGKhWHsIIqPbdEnVzTOhvFr/DJZB+wW5/Xz3cXO+CfwroFZx6ZA5rCXZ8/uVsFSbrwDyLMSAIw71/GJxqZx1HpKnPUWF65kGlcl7rCFu406OXMRI57tRHR3rZ5GoMfaUKvJuQ+Vanez+PHaM+qUQ0ArDFpdnnz3Te5Ul/1Oo4LUEWct93jw7Wl6xkF0JgmrvZIGeQSu1oICQqbwjV8vIt1xZ9VZxnpyg6Jy9z1c+9OukcAV/HjPl2oEYy0m6+ZXhhEzOQfWgz1dGu3VCK3WV/PEQNpFZ72Xv7Bk3UsCZY1iIyDTaywvKAwP51Vk0S1sdOsQdqN9BmhIQWHQnJKYJe4u2q5HlqCd7ga37zYcYCVN4LdzqX967quG1tcYOReP+cRi1HhYoFs/4VEkcaxWuK8EYwuUD8KRWviylrgQEgEP5T3VnQA7wSo6iA7NF3P0rTA1KWUSUKrHL0Qj+KRYJVMWcxU/gldgRi9g8XEPwsdOXRPAJrR95OEPG3HEafU1kq46mKMGIm30+gJBmzRUSIloI2wbjF9aHcW41JuiFCrYCaq/8ti81EpRghHB9fwKucuAFiLWMtagoRGBhEZQnykc="const key = CryptoJS.enc.Utf8.parse("57A891D97E332A9D");  //十六位十六进制数作为密钥const iv = CryptoJS.enc.Utf8.parse('8d312e8d3cde6cbb');   //十六位十六进制数作为密钥偏移量let url = Decrypt(code, key, iv)// url = 'https://v16.xxxxx.app/e1739d3a35cbeedf39ca374d1a56b77f/67fa42d3/video/tos/alisg/tos-alisg-ve-0051c001-sg/ogL5bdsyPQgfGnDo1CeF4PMEI5Dn0oAIyAfbRM/?a=602253&bti=Nzg3NWYzLTQ6&ch=0&cr=0&dr=0&er=0&lr=default&cd=0%7C0%7C0%7C0&br=2908&bt=1454&cs=0&ds=4&ft=cYsxXfz7ThWH-kU~SGZmo0P&mime_type=video_mp4&qs=0&rc=M2Q2ZGk3OWdnPGY3MzM4ZEBpMzhsNG45cmZ3eTMzODYzNEBfLjFfLzU0Ni0xMWE1YjJiYSNvNWdhMmRrM3BgLS1kMC1zcw%3D%3D&vvpl=1&l=2025041204151530B19915264C682B4169&btag=e000a8000'console.log(url)

解密出 url 可以打开直接播放下载
这里不知道为什么 url host 解密开头总有乱码,但补上 host 后面解密出来地址都是可以打开的。
有懂的大佬还请指导下 🧐

最后

其实播放器直接右键也是可以看到原始地址的。
这里之所以用代码解密的方式是之前油猴脚本 动漫弹幕播放 实现方式需要,不过其实如果浏览器都有播放地址,油猴脚本应该也能获取到这个地址,但尝试过没能实现,不知道有没有大佬不吝赐教 🤔

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com