jc021227 发表于 2023-1-9 19:22

破解某动漫m3u8加密

本帖最后由 jc021227 于 2023-1-9 19:25 编辑

# 一、前言

最近有个新上映的动漫很火,但是——国内没引进,B站外服和类似的网站还都是和谐版,只有jp本土才是完整版,很讨厌

于是我找到能看完整版的网站,而且不光要看,还要下载,好,目标已经明确了

# 二、侦察

刚打开网站就给我看这个?看来情况比想象的复杂



一开始以为是检测到使用代{过}{滤}理,后来发现是锁IP,一番折腾后总算进入了网站

F12抓包分析,不出所料是m3u8,aes-128加密



第一个m3u8里面是好几个不同清晰度的m3u8,区别只有一个参数



找到包含ts的m3u8,注意`#EXT-X-KEY`这一行,`URI`是自定义的格式,肯定要在某个地方处理,但先忽略这个过程,继续翻请求里和key有关的,很快就找到了




发现请求的参数`lt`就是刚才m3u8里的`URI`,返回的`k`显然不是真正的key,因为不是16位,但应该有关

这个`k`是不是固定值呢?经过重复尝试,发现它是个变量,那m3u8应该也不固定,但是。。。整个m3u8却一直不变,本来就不擅长算法,现在更迷惑了,看来逆向算法行不通

# 三、尝试

看了论坛的一些帖子,大部分思路都是从函数调用栈入手,下断点,分析js,我也先采取这种方法试一下

请求得到参数`k`之后在什么地方进行处理?看一下调用栈




比想象中复杂的多,这个特别大的js直接写在html里,看起来功能只是发送请求,关键代码应该在调用栈中间的部分,但是。。。



看到这里就知道还原代码几乎不可能了,只好换其他方法(当时没注意到调用栈频繁出现的`VM149`,其实它就是突破口,但下面是通过另一种思路找到相同的解决方法)

# 四、灵感

翻看请求的时候,发现了网站使用的播放器



代码只经过了压缩,没有混淆,解密ts应该也是它做的,如果能定位解密的代码,就离找到密钥不远了

既然是js,那就用Sources打开,结果。。。



居然是xhr!不是script!暂且不论是不是网站故意挖坑,调试一下子就变得麻烦了

js肯定是在某个VM里执行的,如何定位到这个VM?这时候我灵光一现——很多网站不是喜欢用debugger恶心人吗,我在这个js里加一个debugger,不就找到它在哪了吗?

这个方法真是巧妙,只要它被加载,马上就被断下来,然后在它解密部分的代码下断点,运行到那里,问题就解决了

至于怎么修改响应,方法很多,我用了最简单的Fiddler,先把这个js下载下来,在开头加了一行`debugger;`,然后打开Fiddler自动回复器,这样填写就可以了



现在刷新网页,等到这个js被加载,果然断下来了



然后应该在哪里下断点呢?参考了一些帖子,可以搜索字符串`decrypt`,发现这里最接近解密的代码



这段代码比较好理解,参数`c`非常关键,这里判断`c`的长度不等于16,就报错“AES-128密钥长度必须为16字节”,显然`c`就是存储密钥的数组

现在继续运行,等到触发断点,查看变量,果然,`c`的类型就是`Uint8Array(16)`



有了m3u8和key,终于能开始下载了



最终效果图



# 五、结语

本人只是一个前端小白,对于破解更谈不上熟悉,但破解的魅力就在于此——很多时候,你需要的并不是高超的技术,而是独特的思路,和思考中的灵光一现。正是充满了未知和出奇制胜,破解注定不同于循规蹈矩的工作。经过自己的思考最终实现目标,这种成就感也是难以比拟的。

Supermexyh 发表于 2023-1-10 00:03

jc021227 发表于 2023-1-9 23:06
现在貌似只有jp结尾的网站才是未删减版,我看官网上列出来好几个网站都可以看,免费的也有,甚至m3u8都没 ...

要加字幕组的很简单,字幕组都会在官网提供外挂字幕文件的,我下载的这个视频就是字幕组自己下载的无修版视频然后加上字幕压制后上传到动漫BT站点的,在动漫BT站点就能下载到这些资源,都是免费的,非常方便,并且什么番都有,百度动漫花园就能找到,不过目前正版的动漫花园被墙了,百度到的都是模仿网站,正版动漫花园的地址是:https://share.dmhy.org/

Supermexyh 发表于 2023-1-9 22:09

本帖最后由 Supermexyh 于 2023-1-10 12:34 编辑

看完了,很详细,但是咋就是说,有没有更简单的方法可以直接下载到未删减版本,并且还有中文字幕——动漫花园等动漫资源BT网站,你这个方法也太麻烦了吧
PS:只是推荐一个更好的办法,没有其他意思,楼主发这种教程我是很赞同和支持的

dujiu3611 发表于 2023-1-9 20:57

{:1_893:}{:1_893:}{:1_893:} 感谢感谢,假高手就喜欢这种一步步操作,我照着来,熟悉熟悉,增加记忆,谢谢

MIAIONE 发表于 2023-1-9 22:26

qq882011 发表于 2023-1-9 19:29
求名!!!!

楼主其实都告诉你了, 看最后控制台标题的 Onii-chan wa Oshima!

fx820 发表于 2023-1-11 16:27

后记写的太棒了。事实上,入门是最难的

mydeardeskmate 发表于 2023-1-9 21:50

最难的一步是找个能用的ip,这网站锁ip太严了

qq882011 发表于 2023-1-9 19:29

求名!!!!

kimchow 发表于 2023-1-9 19:35

这是我能看的教程吗

tanzhijun8 发表于 2023-1-9 19:37

谢谢分享

waili 发表于 2023-1-9 19:38

步骤很详细学习到了

ttdttt 发表于 2023-1-9 19:47


谢谢分享

apull 发表于 2023-1-9 19:48

很详细的教程,学习了

lanpeng 发表于 2023-1-9 19:50

感谢分享

b3nm00 发表于 2023-1-9 19:51

好厉害!

YoRHa24 发表于 2023-1-9 19:55

6,感谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 破解某动漫m3u8加密