探讨用python将uc缓存转换为MP3的可能性

您所在的位置:网站首页 uc!格式 探讨用python将uc缓存转换为MP3的可能性

探讨用python将uc缓存转换为MP3的可能性

2024-01-19 23:05| 来源: 网络整理| 查看: 265

探讨

Python网易云音乐uc转MP3: 将网易云音乐pc版本地Cache文件夹里的缓存uc文件转换成可正常播放的mp3文件。

一、实现步骤1.cache文件夹1D:\CloudMusic\cache 2.获取uc文件

打开网易云音乐pc版,在线播放一曲,获取该歌曲的uc文件

1D:\CloudMusic\cache\1357399743-320-8898af3182e7672da8c20394b6ad2a97.uc

为了方便操作,将缓存文件名更改一下

1D:\CloudMusic\cache\cache.uc 3.下载mp3文件

下载uc文件对应的mp3文件

image-20210329174918799

4.比较两者的差异4.1 查看mp3文件的开头

image-20210329211452982

4.2 查看uc文件的开头4.2.1 16进制编辑器打开uc文件

(有16进制编辑器的朋友可以使用编辑器打开uc文件,如010Editor,可以直接看到16进制文件、二进制文件的内容 )

4.2.2 编写程序对uc进行查看123456789101112131415# _*_ coding:utf-8 _*_from pprint import pprintuc_name = 'cache.uc'with open(uc_name, 'rb') as uc_obj: # 可以用pprint在run界面查看 pprint(uc_obj.read()) # 为了方便查看,保存成文本 # uc_txt_name = 'cache_file.txt' # with open(uc_txt_name, 'wt') as uc_text: # content = str(uc_obj.read()) # # 写入内容 # uc_text.write(content) # print('cache text done!')

cache_file.txt

1b'\xea\xe7\x90\xa0\xa3\xa3\xa3\xa3\xa3\x80\xf7\xf0\xf0\xe6\xa3\xa3\xa3\xac\xa3\xa3\xa3\xef\xc2\xd5\xc5\x96\x94\x8d\x94\x92\x8d\x92\x93\x93\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\\XC\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xea\xcd\xc5\xcc\xa3\xa3\xa3\xac\xa3\xa3\x81\xbf\xa3

我们发现一个很明显的特点——最多的数据是A3,所以可以推测A3就是加密过后的无意义字符0 一般来说音频的加密方式不会太复杂, 而最简单的异或加密, 且异或加密是可逆的,我们可以逆运算得到加密前的音乐mp3文件

所以只要选中所有的数据,将其每个字节进行二进制异或运算,应该就可以得到加密前的音乐。

1byte ^= 0xa3

解密完成之后字符变得有意义。前三个字节是ID3,这个是MP3文件格式的头部(看2.1的图)

5. 编写python程序

(因为希望用最简洁最少的代码编写,所以不考虑效率、优化、命名等)

123456789101112131415161718192021222324# _*_ coding:utf-8 _*_# uc文件路径+文件名uc_name = 'cache.uc'# mp3文件路径+文件名mp3_name = 'music.mp3'# 打开uc_name指向的uc文件,并赋值给文件对象uc_filewith open(uc_name, 'rb') as uc_file: # 打开(新建)mp3_name指向的mp3文件,并赋值给文件对象mp3_file with open(mp3_name, 'wb') as mp3_file: # 读取uc_file的二进制内容,保存到uc_content uc_content = uc_file.read() # 新建一个空的字节类型赋值给mp3_content,用以保存转换后的uc_content mp3_content = bytearray() # 将从uc_content中读取到的字节数据逐个进行0xa3异或运算 for byte in uc_content: byte ^= 0xa3 # 异或之后,添加该字节到mp3_content mp3_content.append(byte) # 将mp3_content里的数据写入到mp3_file指向的文件中 mp3_file.write(mp3_content) # 写入完成时 print('uc file transform to mp3 file, done!')

运算过后的文件music.mp3,真就可以正常播放!

image-20210329212723738

二、项目地址

项目gitee地址

Python网易云音乐uc转MP3: 将网易云音乐pc版本地Cache文件夹里的缓存uc文件转换成可正常播放的mp3文件

体会:

- 经过这次探讨,想了解的事情又多几点: 音频二进制编码是如何编码的 对二进制文件加密有几种方法 视频又是如何缓存的?如何解密?

参考:

1.网易云音乐.uc格式的缓存文件转.mp3

2.三步教你手动破解网易云音乐加密



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3