七仔的博客

七仔的博客GithubPages分博

0%

记一次m3u8文件的下载

记一次m3u8文件的下载

记一次m3u8文件的下载

记录

  1. 手机到浏览器粘贴网址,可以正常播放,复制地址到电脑端无法播放

  2. 电脑端打开F12发现会重复卡在debuggger,是一种反破解的手段

  3. 手机端使用HttpCanary进行抓包,但是抓不到,发现是https,需要HttpCanary安装证书,但是需要root,比较麻烦

  4. 地址换成http,可以抓到了,第一个请求是一个正常网址,第二个请求返回了一堆js的函数,是经过加密的,经过搜索发现是一个叫jsjiami的网站进行加密的,网站:https://www.jsjiami.com/,加密程度非常高,我会在文章附录贴一下代码,有兴趣的读者可以试试

  5. 将其放到jsjiami解密函数网站:https://www.jsjiami.com/jiemi.html还是无法全部解密

  6. 使用手机浏览器的资源嗅探功能可以获取到一个m3u8的文件地址,但是无法直接下载,所以使用HttpCanary抓包到的第一个网址的cookie加上这个m3u8的文件的地址使用postman成功获取到了m3u8的文件信息

  7. 使用m3u8下载工具下所有的切割文件,但是这些文件是.jpg格式的,可以通过填充文件头还原成ts文件,文章附录有转换的python代码

  8. 然后对m3u8文件中的切割文件进行提取,通过这个对处理后的切割文件进行排序

  9. 最后使用m3u8工具对切割文件进行合成就成功了

附录

  1. 文件格式还原python代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import os
import os.path


def resolve_ts(src_path, dst_path):
'''
如果m3u8返回的ts文件地址为图片,则需要下面处理后 才能进行合并
原因在于 使用Hexeditor打开后,发现文件头被描述为了PNG
在这种情况下,只需要将其中PNG/jpg文件头部分全部使用FF填充,即可处理该问题
:return:
'''
if not os.path.exists(dst_path):
os.mkdir(dst_path)
file_list = sorted(os.listdir(src_path), key=lambda x: x.split('.')[0])
for i in file_list:
origin_ts = os.path.join(src_path, i)
resolved_ts = os.path.join(dst_path, i)
try:
infile = open(origin_ts, "rb") # 打开文件
outfile = open(resolved_ts, "wb") # 内容输出
data = infile.read()
outfile.write(data)
outfile.seek(0x00)
outfile.write(b'\xff\xff\xff\xff')
outfile.flush()
infile.close() # 文件关闭
outfile.close()
except:
pass
print('resolve ' + origin_ts + ' success')

resolve_ts("原目录", "新目录")
  1. js加密代码

var _0xodc=’jsjiami.com.v6’,0xodc=function(){return[‘_0xodc’],_0x1dab=[_0xodc,’\x73\x65\x74\x49\x6e\x74\x65\x72\x76\x61\x6c’,’\x6a\x73\x6a’,’\x69\x61\x6d’,’\x75\x6e\x64\x65\x66\x69’,’\x6e\x65\x64’,’\x69\x2e\x63\x6f\x6d\x2e\x76’,’\x6c\x65\x6e\x67\x74\x68’,’\x70\x75\x73\x68’,’\x64\x6f\x63\x75\x6d\x65\x6e\x74’,’\x6f\x70\x65\x6e’,’\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x3b\x20\x63\x68\x61\x72\x73\x65\x74\x3d\x75\x74\x66\x2d\x38’,’\x72\x65\x70\x6c\x61\x63\x65’,’\x77\x72\x69\x74\x65’,’\x63\x6c\x6f\x73\x65’,’\x6f\x6e\x6c\x6f\x61\x64’,’\x72\x65\x73\x70\x6f\x6e\x73\x65\x54\x65\x78\x74’,’\x72\x65\x6e\x64\x65\x72\x28\x29’,’\x61\x70\x70\x6c\x79’,’\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x2a\x5c\x28\x20\x2a\x5c\x29’,’\x5c\x2b\x5c\x2b\x20\x2a\x28\x3f\x3a\x28\x3f\x3a\x5b\x61\x2d\x7a\x30\x2d\x39\x41\x2d\x5a\x5f\x5d\x29\x7b\x31\x2c\x38\x7d\x7c\x28\x3f\x3a\x5c\x62\x7c\x5c\x64\x29\x5b\x61\x2d\x7a\x30\x2d\x39\x5f\x5d\x7b\x31\x2c\x38\x7d\x28\x3f\x3a\x5c\x62\x7c\x5c\x64\x29\x29’,’\x69\x6e\x69\x74’,’\x74\x65\x73\x74’,’\x63\x68\x61\x69\x6e’,’\x69\x6e\x70\x75\x74’,’\x72\x65\x74\x75\x72\x6e\x20\x28\x66\x75\x6e\x63\x74\x69\x6f\x6e\x28\x29\x20’,’\x7b\x7d\x2e\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x22\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x69\x73\x22\x29\x28\x20\x29’,’\x63\x6f\x6e\x73\x6f\x6c\x65’,’\x6c\x6f\x67’,’\x77\x61\x72\x6e’,’\x64\x65\x62\x75\x67’,’\x69\x6e\x66\x6f’,’\x65\x72\x72\x6f\x72’,’\x65\x78\x63\x65\x70\x74\x69\x6f\x6e’,’\x74\x72\x61\x63\x65’,’\x52\x65\x67\x45\x78\x70’,’\x28\x5e\x7c\x26\x29’,’\x3d\x28\x5b\x5e\x26\x5d\x2a\x29\x28\x26\x7c\x24\x29’,’\x6c\x6f\x63\x61\x74\x69\x6f\x6e’,’\x73\x65\x61\x72\x63\x68’,’\x73\x75\x62\x73\x74\x72’,’\x6d\x61\x74\x63\x68’,’\x75\x6e\x65\x73\x63\x61\x70\x65’,’\x47\x45\x54’,’\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x6f\x73\x2e\x35\x38\x63\x64\x6e\x2e\x63\x6f\x6d\x2e\x63\x6e\x2f\x49\x6a\x47\x66\x45\x64\x43\x62\x49\x6c\x72\x2f\x69\x73\x68\x61\x72\x65\x2f\x69\x6d\x61\x67\x65\x5f\x32\x37\x34\x32\x38\x30\x31\x38\x37\x38\x33\x37\x35\x35\x30\x34\x35\x2e\x70\x6e\x67\x3f\x5f\x74\x3d’,’\x44\x61\x74\x65’,’\x6e\x6f\x77’,’\x73\x65\x6e\x64’,’\x73\x74\x72\x69\x6e\x67’,’\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72’,’\x64\x65\x62\x75\x67\x67\x65\x72\x3b’,’\x63\x6f\x75\x6e\x74\x65\x72’,’\x64\x65\x62\x75’,’\x67\x67\x65\x72’,’\x63\x61\x6c\x6c’,’\x61\x63\x74\x69\x6f\x6e’,’\x73\x74\x61\x74\x65\x4f\x62\x6a\x65\x63\x74’,’\x4a\x42\x6a\x58\x73\x58\x72\x6a\x64\x69\x61\x6d\x69\x2e\x62\x62\x53\x45\x63\x6f\x6d\x52\x67\x2e\x76\x36\x5a\x47\x47\x4b\x3d\x3d’];}();function _0x4354(_0x57a262,_0x5bf6cd){_0x57a262=~~’0x’‘concat’;var _0x494c87=_0x1dab[_0x57a262];return _0x494c87;};(function(_0x1199f3,_0x216845){var _0x19be3a=0x0;for(_0x216845=_0x1199f3‘shift’;_0x216845&&_0x216845!==(_0x1199f3‘pop’+’’)‘replace’;_0x19be3a++){_0x19be3a=_0x19be3a^0x14aaec;}}(_0x1dab,_0x4354));window_0x4354(‘0’){function _0x50207d(_0x2f71db,_0x3b5331){return _0x2f71db+_0x3b5331;}var _0x2c048f=_0x50207d(_0x4354(‘1’),_0x4354(‘2’)),_0x40f860=’’;if(typeof _0xodc==_0x50207d(_0x4354(‘3’),_0x4354(‘4’))&&_0x40f860===’’||_0x50207d(_0xodc,’’)!=_0x50207d(_0x50207d(_0x50207d(_0x2c048f,_0x4354(‘5’)),_0x2c048f[_0x4354(‘6’)]),’’)){var _0x44d2b1=[];while(_0x44d2b1[_0x4354(‘6’)]>-0x1){_0x44d2b1_0x4354(‘7’);}}_0x2c3f97();},0x7d0);var BBY1=null;var Ky2=new XMLHttpRequest();var PyNwtDi3=GetQueryString(‘\x63\x69’);function render(){var _0x2f8245=window[_0x4354(‘8’)]_0x4354(‘9’);_0x2f8245_0x4354(‘c’);_0x2f8245_0x4354(‘d’);}Ky2[_0x4354(‘e’)]=function(){BBY1=Ky2[_0x4354(‘f’)];if(0x0>0x0){setTimeout(_0x4354(‘10’),0x0*0x3e8);}else{render();}};function GetQueryString(_0x1311b9){var _0x1237c2=function(_0x7b2abc){var _0x14528f=!![];return function(_0x152aaa,_0x3ac20b){var _0x497338=’’;var _0x2afe97=_0x14528f?function(){if(_0x497338===’’&&_0x3ac20b){var _0x4de7e7=_0x3ac20b_0x4354(‘11’);_0x3ac20b=null;return _0x4de7e7;}}:function(_0x7b2abc){};_0x14528f=![];var _0x7b2abc=’’;return _0x2afe97;};}();(function(){_0x1237c2(this,function(){var _0x28dd94=new RegExp(_0x4354(‘12’));var _0x21fde8=new RegExp(_0x4354(‘13’),’\x69’);var _0x2b2bb5=_0x2c3f97(_0x4354(‘14’));if(!_0x28dd94_0x4354(‘15’)||!_0x21fde8_0x4354(‘15’)){_0x2b2bb5(‘\x30’);}else{_0x2c3f97();}})();}());var _0x2d50e7=function(_0x34b4ac){var _0x5ab30c=!![];return function(_0x1613e4,_0x495974){var _0x37241e=’’;var _0x45a872=_0x5ab30c?function(){if(_0x37241e===’’&&_0x495974){var _0x2e891c=_0x495974_0x4354(‘11’);_0x495974=null;return _0x2e891c;}}:function(_0x34b4ac){};_0x5ab30c=![];var _0x34b4ac=’’;return _0x45a872;};}();var _0x132348=_0x2d50e7(this,function(){var _0x247a45=function(){};var _0x10ce6d;try{var _0x544599=Function(_0x4354(‘18’)+_0x4354(‘19’)+’\x29\x3b’);_0x10ce6d=_0x544599();}catch(_0x1b9c23){_0x10ce6d=window;}if(!_0x10ce6d[_0x4354(‘1a’)]){_0x10ce6d[_0x4354(‘1a’)]=function(_0x247a45){var _0x30e96b={};_0x30e96b[_0x4354(‘1b’)]=_0x247a45;_0x30e96b[_0x4354(‘1c’)]=_0x247a45;_0x30e96b[_0x4354(‘1d’)]=_0x247a45;_0x30e96b[_0x4354(‘1e’)]=_0x247a45;_0x30e96b[_0x4354(‘1f’)]=_0x247a45;_0x30e96b[_0x4354(‘20’)]=_0x247a45;_0x30e96b[_0x4354(‘21’)]=_0x247a45;return _0x30e96b;}(_0x247a45);}else{_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘1b’)]=_0x247a45;_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘1c’)]=_0x247a45;_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘1d’)]=_0x247a45;_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘1e’)]=_0x247a45;_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘1f’)]=_0x247a45;_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘20’)]=_0x247a45;_0x10ce6d[_0x4354(‘1a’)][_0x4354(‘21’)]=_0x247a45;}});_0x132348();var _0x1a044b=new window(_0x4354(‘22’));var _0x5a699c=window[_0x4354(‘25’)][_0x4354(‘26’)]_0x4354(‘27’)_0x4354(‘28’);if(_0x5a699c!=null){return window_0x4354(‘29’);}return null;}if(PyNwtDi3==0x0){Ky2_0x4354(‘9’);Ky2_0x4354(‘2e’);}else{Ky2_0x4354(‘9’);Ky2_0x4354(‘2e’);}function _0x2c3f97(_0x29ffae){function _0xc9c520(_0x2c9d5d){if(typeof _0x2c9d5d===_0x4354(‘2f’)){return function(_0x5e764f){}_0x4354(‘30’)_0x4354(‘11’);}else{if((‘’+_0x2c9d5d/_0x2c9d5d)[_0x4354(‘6’)]!==0x1||_0x2c9d5d%0x14===0x0){(function(){return!![];}_0x4354(‘30’)_0x4354(‘35’));}else{(function(){return![];}_0x4354(‘30’)_0x4354(‘11’));}}_0xc9c520(++_0x2c9d5d);}try{if(_0x29ffae){return _0xc9c520;}else{_0xc9c520(0x0);}}catch(_0x3b167e){}};_0xodc=’jsjiami.com.v6’;

此为博主副博客,留言请去主博客,转载请注明出处:https://www.baby7blog.com/myBlog/133.html

欢迎关注我的其它发布渠道