Python 解决 网易云.ncm格式 还原 无损音乐格式

简述

       网易云 的ncm格式不能 让其他  软件播放  所以  还是要转换一下比较好

# 依赖pycrypto库
import binascii
import struct
import base64
import json
import os,sys
from Crypto.Cipher import AES
#  此程序用于将网易云音乐的.ncm格式的音乐转换为  最初格式

def dump(file_path):
    core_key = binascii.a2b_hex("687A4852416D736F356B496E62617857")
    meta_key = binascii.a2b_hex("2331346C6A6B5F215C5D2630553C2728")
    unpad = lambda s: s[0:-(s[-1] if type(s[-1]) == int else ord(s[-1]))]
    f = open(file_path, 'rb')
    header = f.read(8)
    assert binascii.b2a_hex(header) == b'4354454e4644414d'
    f.seek(2, 1)
    key_length = f.read(4)
    key_length = struct.unpack('<I', bytes(key_length))[0]
    key_data = f.read(key_length)
    key_data_array = bytearray(key_data)
    for i in range(0, len(key_data_array)): key_data_array[i] ^= 0x64
    key_data = bytes(key_data_array)
    cryptor = AES.new(core_key, AES.MODE_ECB)
    key_data = unpad(cryptor.decrypt(key_data))[17:]
    key_length = len(key_data)
    key_data = bytearray(key_data)
    key_box = bytearray(range(256))
    c = 0
    last_byte = 0
    key_offset = 0
    for i in range(256):
        swap = key_box[i]
        c = (swap + last_byte + key_data[key_offset]) & 0xff
        key_offset += 1
        if key_offset >= key_length: key_offset = 0
        key_box[i] = key_box[c]
        key_box[c] = swap
        last_byte = c
    meta_length = f.read(4)
    meta_length = struct.unpack('<I', bytes(meta_length))[0]
    meta_data = f.read(meta_length)
    meta_data_array = bytearray(meta_data)
    for i in range(0, len(meta_data_array)): meta_data_array[i] ^= 0x63
    meta_data = bytes(meta_data_array)
    meta_data = base64.b64decode(meta_data[22:])
    cryptor = AES.new(meta_key, AES.MODE_ECB)
    meta_data = unpad(cryptor.decrypt(meta_data)).decode('utf-8')[6:]
    meta_data = json.loads(meta_data)
    crc32 = f.read(4)
    crc32 = struct.unpack('<I', bytes(crc32))[0]
    f.seek(5, 1)
    image_size = f.read(4)
    image_size = struct.unpack('<I', bytes(image_size))[0]
    image_data = f.read(image_size)
    file_name = meta_data['musicName'] + '.' + meta_data['format']
    m = open(os.path.join(os.path.split(file_path)[0], file_name), 'wb')
    chunk = bytearray()
    while True:
        chunk = bytearray(f.read(0x8000))
        chunk_length = len(chunk)
        if not chunk:
            break
        for i in range(1, chunk_length + 1):
            j = i & 0xff;
            chunk[i - 1] ^= key_box[(key_box[j] + key_box[(key_box[j] + j) & 0xff]) & 0xff]
        m.write(chunk)
    m.close()
    f.close()

if __name__ == '__main__':
    file_path = r"E:\music" # 自己的路径
    # if len(sys.argv) > 1:
    #     for file_path in sys.argv[1:]:
    #   循环遍历所有的歌曲  只能进行一层文件夹下是歌曲
    try:
        list = os.listdir(file_path)
        for i in range(0, len(list)):
            path = os.path.join(file_path, list[i])
            if os.path.isfile(path):
                dump(path)
    except:
        pass
        print("Usage: python ncmdump.py \"File Name\"")

音乐   放在 music  包中

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 网易云ncm格式转换器是一款可以在手机上使用的软件,它可以将网易云音乐的ncm格式音频文件转换成常见的音频格式,例如MP3、WAV等。通过这个软件,用户可以将下载的ncm格式音乐文件转换为其他格式,然后可以在其他播放器或设备上播放,提高音乐的兼容性和可用性。 这款软件具有以下几个特点和功能: 1. 界面简洁:网易云ncm格式转换器手机版拥有直观的用户界面,操作简单方便,使用户能够轻松地完成音频文件的格式转换。 2. 快速转换:该软件采用高效的转换算法,可以在短时间内完成音频文件的转换,节省用户的时间。 3. 多种输出格式:该软件支持多种音频格式的转换,用户可以根据自己的需求选择合适的输出格式,以适应不同的播放器与设备。 4. 批量转换:用户可以一次选择多个ncm格式音频文件进行批量转换,提高转换的效率。 5. 保留音质:转换过程中,该软件会尽量保留音乐的音质和音频信息,使转换后的音频文件更加贴近原始音乐。 总之,网易云ncm格式转换器手机版是一款功能强大、操作简单的软件,可以帮助用户将网易云音乐的ncm格式音频文件转换成其他常见格式,提高音乐的可用性。无论是想将音乐保存到其他设备上,还是与其他人分享音乐,这款转换器都能满足需求,并让用户尽情享受音乐的乐趣。 ### 回答2: 网易云音乐是国内非常受欢迎的在线音乐平台,它支持多种音乐格式,其中包括NCM格式NCM格式网易云音乐加密的音乐文件格式,只能在网易云音乐客户端上播放,无法在其他音乐播放器中播放。 然而,对于一些用户来说,他们可能希望将这些NCM格式的音乐文件转换为其他常见的音乐格式,以方便在其他播放器上播放。这就需要使用到网易云NCM格式转换器手机版。 网易云NCM格式转换器手机版是一款专门为手机用户设计的转换工具,可以将NCM格式的音乐文件转换为MP3、WAV、FLAC等常见的音乐格式。通过使用这个转换器,用户可以方便地将网易云音乐中收藏的音乐下载为自己手机支持的格式,以便在其他音乐播放器上随时欣赏音乐。 使用网易云NCM格式转换器手机版非常简单。用户只需要在手机上安装这个转换器,并将想要转换的NCM格式音乐文件导入转换器中。然后,选择目标音乐格式和保存路径,点击转换按钮,就可以开始转换了。转换完成后,用户就可以在转换器指定的保存路径中找到转换后的音乐文件,并且可以将其导入到其他播放器中播放。 总的来说,网易云NCM格式转换器手机版是一款非常实用的工具,可以帮助用户将网易云音乐中的NCM格式音乐文件转换为其他常见的音乐格式,使得用户可以更加方便地在手机上享受自己喜爱的音乐。 ### 回答3: 网易云音乐是一款非常受欢迎的音乐播放器,而NCM则是一种特殊的音乐格式,只能在网易云音乐中播放。但是,由于很多人希望能够将NCM格式的音乐文件转换为其他常见的音乐格式,比如MP3或者WAV,这样就可以在其他音乐播放器中播放了。 针对这个需求,有一些开发者推出了网易云NCM格式转换器手机版。这些软件可以帮助用户将NCM格式的音乐文件转换为其他格式,以便在其他设备上播放或者编辑。 使用网易云NCM格式转换器手机版非常简便。用户只需将NCM格式的音乐文件导入软件中,选择目标格式和输出路径,然后点击转换按钮即可开始转换。转换完成后,用户可以在指定的输出路径中找到已转换的音乐文件。 这样,用户就可以将NCM格式的音乐文件转换为其他常见的音乐格式,以便在其他音乐播放器中播放。同时,该软件还支持批量转换,可以一次性转换多个音乐文件,提高了转换的效率。 总的来说,网易云NCM格式转换器手机版是一种非常实用的工具,帮助用户解决了将NCM格式的音乐文件转换为其他常见格式的问题,让用户可以在其他音乐播放器中自由播放他们喜爱的音乐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值