吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9021|回复: 32
收起左侧

[Web逆向] 【记录】某网站js逆向与m3u8解密

  [复制链接]
漁滒 发表于 2020-9-1 16:35
今天在浏览网页的时候发现一个网站提供m3u8内容的加密,其主要宣传如下图。
QQ截图20200901160810.jpg
看起来非常的厉害,主要是能够防嗅探防下载防合成。下面给出了样品视频,点进去初步尝试逆向一下
打开浏览器F12,刷新页面开始抓包。发现其中的m3u8内容确实是被加密了,如下图
QQ截图20200901160810.jpg
看到内容有点像base64编码,但又有base64编码不存在的字符。但是最后两个字符是【==】,这个是base64编码的填充,那么说明很有可能就是base64编码
那么其中不存在的字符就是替换掉了,那么浏览器播放的时候一定要将正确的内容替换回来,再进行base64解码,得到m3u8文本。那么此时可以从js的replace方法入手
在全局中搜索replace,发现有4个js文件有,那么就将这4个js文件下载到本地
QQ截图20200901160810.jpg
下载完成后打开全部4个js文件,然后搜索【replace(/\(/】,为什么搜索这个呢?观看加密的m3u8内容里面,有很多特殊的符号,其中就包含【(】,而在js中replace方法传入的是正则表达式,其中【(】是一个特殊字符,在正表达式中有特殊含义,如需要匹配自身,则需要在前面增加转义字符【\(】
QQ截图20200901160810.jpg
只有一个内容,那么就可以关闭其他三个js,然后格式化这个搜索到的js文件,找到搜索到的内容,可以看到以下js代码
[JavaScript] 纯文本查看 复制代码
s.h2dehlsdata = function(data) {
                var data = data.replace(/\//g, "B");
                data = data.replace(/_/g, "A");
                data = data.replace(/-/g, "h");
                data = data.replace(/\*/g, "I");
                data = data.replace(/!/g, "N");
                data = data.replace(/@/g, "O");
                data = data.replace(/\(/g, "s");
                data = data.replace(/\)/g, "X");
                data = this.base64_decode(data);
                return data
            }

这里可以很清楚的看到哪些字符被替换掉了
用python请求m3u8然后还原内容,再写出m3u8给其他下载器下载
QQ截图20200901160810.jpg
耐心等待下载完成
1.mp4_20200901_163456.503.jpg
视频全片正常播放,解密完成

免费评分

参与人数 16吾爱币 +25 热心值 +15 收起 理由
Jared8 + 1 + 1 谢谢@Thanks!
Razuri + 1 + 1 谢谢@Thanks!
林尼玛 + 1 谢谢@Thanks!
xiaobai3 + 1 + 1 秀啊
woflant + 1 + 1 谢谢@Thanks!
Dragon_214 + 1 + 1 用心讨论,共获提升!
pwp + 1 + 1 砖家又来秀学术成果报告了
89684828 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
画中画。 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
吾爱阳仔 + 2 + 1 我很赞同!
simon21 + 1 我很赞同!
细水流长 + 3 + 1 热心回复!
漫漫长昼 + 1 + 1 谢谢@Thanks!
吾要开始学习ing + 1 + 1 谢谢@Thanks!
逍遥一仙 + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

king82 发表于 2020-9-15 14:51
说实话,我只知道原理

就是这句话  那么其中不存在的字符就是替换掉了,那么浏览器播放的时候一定要将正确的内容替换回来,再进行base64解码,得到m3u8文本

但是后面怎么弄,就歇菜了。完全不懂代码和编程,哈哈。
manan9629 发表于 2020-12-2 08:55
慵懒丶L先森 发表于 2020-9-1 17:03
全文思路清晰,涉及浏览器开发者人员工具的基础使用、字符解密、正则表达式的知识。关于base64解密那一块又 ...

抖个机灵啊
wakichie 发表于 2020-9-1 16:43
star321123 发表于 2020-9-1 16:46
秀了一波技术
慵懒丶L先森 发表于 2020-9-1 17:03
全文思路清晰,涉及浏览器开发者人员工具的基础使用、字符解密、正则表达式的知识。关于base64解密那一块又学到了,感谢分享宝贵经验
大鸽鸽 发表于 2020-9-1 17:12
js逆向路 任重而道远
漫漫长昼 发表于 2020-9-1 17:13
替换下字符就能绕过,这未免也太...
simon21 发表于 2020-9-1 17:17
哦。原来我还差1个js的格式化工具!~难怪有时候找到很多有用无用的东西。。。
OVVO 发表于 2020-9-1 17:24
m3u8的演示页面看看
时光书窝 发表于 2020-9-1 17:27
前排支持一下大佬
好走不送 发表于 2020-9-1 21:43
大神一个,牛
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 14:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表