本帖最后由 lenvy1 于 2025-3-20 01:23 编辑
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标网址:aHR0cHM6Ly9hbmltZS5naXJpZ2lyaWxvdmUuY29tL3BsYXlHVjI2NDY3LTEtMS8=
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PS:本人纯小白,对逆向JS等编程语言一窍不通,分析过程均借助AI辅助理解。开发者工具的使用、逆向思维的认知,均源于52pj论坛,多看多动手就有一定认知了。
1、随意打开动漫剧集一个章节视频,习惯性F12开发者工具,发现有反调试机制。
2、尝试Ctrl + U打开页面源代码,Ctrl + F查找 .m3u8 或 .mp4,果然也没有找到视频地址。
3、遍历HTML源代码,发现以下这段js很可疑,根据经验应该就是经过混淆加密的视频地址代码段了:
4、在开发者工具控制台输入这段代码中的变量名 player_aaaa 回车查询,将结果展开,果然验证上述JS代码段就是真实视频地址经过加密的代码片段:
5、网站设置有反调试机制如何解码?没关系,发现它还是可以加载JS出来的(半反调试?),切换到网络选项卡,点JS标签,根据js文件名推测 player.js 里面有解密的方法函数。
6、双击打开 player.js ,发现里面有疑似自定义的64位加密解密混淆的方法(纯小白真的看不懂啊):
7、看不懂没关系,发现里面的代码长度并不长,就试着全扔给AI助手,并提问AI:”请解释这段代码的主要功能?"。
8、每一个字都看得明白,但结合起来就不太明白了。没关系,至少知道是解密函数,直接让AI助手重写一个方法(本人对Python略懂,就让AI写解密方法了),借助AI:”已知加密字符串"JTY4JTc0JTc0JTcwJTczJTNBJ……",基于上述方法,转写成Python的解密方法并测试打印结果“:
9、测试结果:
10、引用 from urllib.parse import unquote 来 unquote() 明文结果:
相关解密代码:
[Python] 纯文本查看 复制代码 import base64
def decode_custom_base64(encoded_str: str) -> str:
# 补充可能的填充符处理
missing_padding = 4 - (len(encoded_str) % 4)
if missing_padding != 4:
encoded_str += '=' * missing_padding
return base64.b64decode(encoded_str).decode('utf-8')
# 测试用例
encrypted_str = "JTY4JTc0JTc0JTcwJTczJTNBJTJGJTJGJTZEJTMzJTc1JTM4JTJFJTY3JTY5JTcyJTY5JTY3JTY5JTcyJTY5JTZDJTZGJTc2JTY1JTJFJTYzJTZGJTZEJTJGJTdBJTY5JTZBJTY5JTYxJTZFJTJGJTZGJTZDJTY0JTYxJTZFJTY5JTZEJTY1JTJGJTMyJTMwJTMyJTM1JTJGJTMwJTM0JTJGJTVBJTYxJTc0JTczJTc1JTU0JTYxJTYyJTY5JTU0JTY4JTYxJTc0JTczJTRBJTZGJTc1JTcyJTZFJTY1JTc5JTJGJTMwJTMxJTUwJTcyJTY1JTYxJTY5JTcyJTJGJTcwJTZDJTYxJTc5JTZDJTY5JTczJTc0JTJFJTZEJTMzJTc1JTM4"
result = decode_custom_base64(encrypted_str)
from urllib.parse import unquote
result = unquote(result)
print("解密结果:", result)
最后,复制解密的视频地址,测试,成功播放:
|