当前位置: 首页 > news >正文

百度建立自己的网站wordpress可爱的主题

百度建立自己的网站,wordpress可爱的主题,唐山网络运营推广,学校网站系统破解版前几天发现网易云音乐的ncm格式很坑爹#xff0c;由于网易云的部分音乐采取了这种流媒体平台模式#xff0c;这种格式的歌曲下载到设备本地以后只有在网易云音乐的app上面才能播放#xff0c;而且还要在会员生效期间才能播今天网易云弄出一个ncm#xff0c;明天百度音乐来一… 前几天发现网易云音乐的ncm格式很坑爹由于网易云的部分音乐采取了这种流媒体平台模式这种格式的歌曲下载到设备本地以后只有在网易云音乐的app上面才能播放而且还要在会员生效期间才能播今天网易云弄出一个ncm明天百度音乐来一个cnm后天酷狗推出nmb大后天qq音乐又来了个rnm。目前国内的音乐版权可谓是乱到了一个极端阿叉想听一个歌手的歌还得在酷狗和网易云之间来回跑最终用户就成了受害者花钱买的歌我们理所当然有权利支配而不是短期的租借所以在这里提供一个在尽量不影响音质的情况下将ncm格式转换成flac格式的方法↓↓↓↓↓↓↓↓↓(链接挂了的话就尽情骚扰阿叉的微信吧)使用方法就是把要转换的ncm音乐文件直接拖到 格式转换.exe上然后flac格式的音乐文件就会自己变出来啦↑↑↑↑↑↑↑↑↑以这首Sailing为例经过转换以后得到了flac文件把成品导入AU之后可以发现高频部分还是很完整的完全符合无损音质的表现和来自某狗的原版flac对比可以明显看出转码后高频部分没有被切掉比特率都是968kbps音质几乎没有区别所以我们可以完美地完成无损到无损的转换附上源代码和注释import binasciiimport structimport base64import jsonimport osfrom Crypto.Cipher import AESdef dump(file_path):    core_key binascii.a2b_hex(687A4852416D736F356B496E62617857)    meta_key binascii.a2b_hex(2331346C6A6B5F215C5D2630553C2728)#core_key和meta_key把这个字符串按照十六进制反解析为二进制字节序列(bytes类型)    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) b4354454e4644414d#打开ncm文件并读取8个字节确认这8个字节是否是字节序列b4354454e4644414d0x43C所以这些字节是CTENFDAM说明这些就是ncm独有的文件标记    f.seek(2, 1)    key_length f.read(4)    key_length struct.unpack(    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#获取4字节的key并且按照小端(    key_data bytes(key_data_array)    cryptor AES.new(core_key, AES.MODE_ECB)    key_data unpad(cryptor.decrypt(key_data))[17:]#然后用之前的core_key创建了AES_ECB解密器将整个明文分成若干段相同的小段然后对每一小段进行加密如果不足则会进行补足。cryptor.decrypt(key_data)解析出来的是bneteasecloudmusic10073261712832E7fT49x7dof9OKCgg9cdvhEuezy3iZCL1nFvBFd1T4uSktAJKmwZXsijPbijliionVUXXg9plTbXEclAE9Lb\r\r\r\r\r\r\r\r\r\r\r\r\r    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#标准RC4-KSA算法去计算S-box    meta_length f.read(4)    meta_length struct.unpack(    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)#meta_data的值是这样的b163key(Dont modify):L64FU3W4YxX3ZFTmbZ8/fOGFX4ZDFzRxiE6WTSCw8Wbw8yYSVQFmAmCHw9A96ZnO0UOuMsVWYFWvoqD0/YcH3r7VAGU8B3lFBJm4JL6is23S2yXChnSbfLIksnEUcTC7JtrA1JAoR0GVnzOT3hGTJRsjGIVQXg2yide/YKBACffEoYBApqZ5Isq0n7h/MlBnjn6ihuSlIl5V2rXEjSISQr031eSBdEVJ/JcwttzLafIPBh2FQfaVd/U0inWY5jxCXZCw/jxcIdGmGH/0Oft3UlNPt2kDBrsivoVuD03tMWL6A5Flg/jCbofSOblHFC79oU3WF9doUjD24BXuu6K7wyoWkgyG7SJu8tk72hkGw3rLK1nbTHsSEIPjocC6Ba9mzF48SB087MFTSn9PXPZIboMXFXGI3TpMj4rR6cD6CEWS7EoZrUC1cipi/A0jT/rFtAirM4hmkbrvslJumMHDJz1q9o6t3XRWydyoIaC3ktXuesyV8sbuoQY/EMWNZRN3KhGR/jnnQPBtseQ前面有22位的“163 key(Dont modify):”去掉之后用base64解码并同样地通过AES_ECB和meta_key进行解密bmusic:{musicId:441491828,musicName:\xe6\xb0\xb4\xe6\x98\x9f\xe8\xae\xb0,artist:[[\xe9\x83\xad\xe9\xa1\xb6,2843]],albumId:35005583,album:\xe9\xa3\x9e\xe8\xa1\x8c\xe5\x99\xa8\xe7\x9a\x84\xe6\x89\xa7\xe8\xa1\x8c\xe5\x91\xa8\xe6\x9c\x9f,albumPicDocId:2946691248081599,albumPic:https://p4.music.126.net/wSMfGvFzOAYRU_yVIfquAA/2946691248081599.jpg,bitrate:320000,mp3DocId:668809cf9ba99c3b7cc51ae17a66027f,duration:325266,mvId:5404031,alias:[],transNames:[],format:mp3}\r\r\r\r\r\r\r\r\r\r\r\r\r去掉前面的 music: 然后转为json字典可以得到一些歌曲原本的信息比如歌手歌名之类的    crc32 f.read(4)    crc32 struct.unpack(    f.seek(5, 1)    image_size f.read(4)    image_size struct.unpack(    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_length1):            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()#用修改后的RC4-PRGA算法进行还原并输出新的歌曲文件得到flac的原本数据if __name__ __main__:    import sys    if len(sys.argv) 1:        for file_path in sys.argv[1:]:            try:                dump(file_path)            except:                pass    else:        print(Usage: python ncm_transformation.py \File Name\)另这个是git上一个大神弄的看得懂的可以看一下好像比这个要复杂点https://github.com/nondanee/ncmdump
http://www.pierceye.com/news/993020/

相关文章:

  • 小米官方网站开发版在哪里推进门户网站建设 用好用活
  • 玉器企业网站源码软件商店哪个好用
  • 学校网站建设的安全策略江苏太平洋建设集团官方网站
  • 织梦做中英文企业网站给特宝网站商家网址怎样做
  • 网站邮箱接口怎么设置WordPress国外主机
  • 西安做网站的公司哪家好怎么样查询网站被挂黑链
  • 卯兔科技网站建设河南旅游集团 网站建设
  • 重庆网站建设c做食品网站的素材
  • 网站如何制作的简单的管理系统有哪些
  • 职高网站建设知识点一个人开发一个网站需要多久
  • c 做的网站怎么上传博客 选择 WordPress
  • dw可以做有后台的网站么?泰安抖音seo
  • 龙岗网站建设 信科网络网站备案后要做什么
  • 深圳建立网站公司网站公众号开发一般收费
  • 网站建设要做什么有关网站建设的书
  • 网站前台开发由什么做的seo网络贸易网站推广
  • 网站设计与开发范本wordpress 左图右文
  • 网站后台的搭建seo网站推广教程
  • 长春做网站的公司男生怎么找的小资源
  • 在线课程网站建设规范甘肃手机版建站系统信息
  • 自定义网站模板中国进出口企业名录
  • 晟合建设集团网站高中文凭能学做网站吗
  • 黑色网站模板建筑工程查询网
  • 建设网站jw100有哪些做鞋机设备的网站
  • 模仿网站建设大学生网站设计论文范文
  • 浙江杭州网站建设服务公司哪家好社区推广经验做法
  • 牟平网站制作公司天安云谷网站建设
  • 培训网站建设方案书沈阳定制网站方案
  • 廊坊公司快速建站电子商务网站建设前期规划方案
  • 西安网站建设盈科wordpress 评论模板