首页 > 编程语言 >已实现,python解密QRC歌词,加密歌词,解密

已实现,python解密QRC歌词,加密歌词,解密

时间:2024-10-16 11:48:00浏览次数:3  
标签:13 QRC 加密 歌词 解密 格式

一、LRC歌词格式

LRC格式是一种常见的歌词文件格式,通常用于音乐播放器同步显示歌曲的歌词。LRC文件与音频文件配合使用,能够根据时间戳实时显示歌词,给用户带来更好的听歌体验。

LRC格式的特点:
  1. 时间戳:LRC歌词的核心是每行歌词前面的时间戳。时间戳的格式通常为

    # 说明
    [mm:ss.xx]  其中mm表示分钟,ss表示秒,xx表示百分之一秒(可选)。
    # 例子
    [00:12.34]这是第一句歌词
    [00:15.67]这是第二句歌词
    [00:20.12]这是第三句歌词
    
    • 例如:[01:32.45]这是歌词的第一行
  2. 歌词内容:每个时间戳后面跟着对应的歌词内容,播放器会在音轨播放到指定时间时显示相应的歌词。

  3. 文件扩展名:通常为.lrc

000

二、QRC歌词格式

QRC格式是由QQ音乐推出的一种歌词格式,它与LRC格式的区别在于,QRC歌词支持逐字同步,也就是说不仅仅可以同步整行歌词,还可以同步每个字的显示时间。这种格式对于卡拉OK或者想精确显示歌词的场景非常有用。

QRC格式的特点:
  1. 逐字时间戳:QRC歌词不仅对整行歌词进行时间戳标记,还对每个字进行时间戳标记,能够实现更精细的歌词同步效果。
  2. 文件扩展名:通常为.qrc
  3. 格式结构:QRC歌词的格式通常是每行歌词有一个总的时间戳,接着每个字后面带有它的时间戳。
示例:
[0,190]Counting(0,13) (13,13)Stars(26,13) (39,13)-(52,13) (65,13)OneRepublic(78,13) (91,13)((104,13)共(117,13)和(130,13)时(143,13)代(156,13))(169,13)

每个字都有对应的时间戳,播放器可以根据这些时间戳精确地同步每个字。但是网络上的QRC歌词都是加密的,我们需要解密才能获取到示例中的歌词数据。


三、解密QRC

我们本次使用python进行解密QRC歌词,第一步先从网络接口获取加密的QRC歌词文本,你可以得到以下加密字符串。

264A31DF04D5D9634C3FC17DB11122CFDD9340C96398D3CFBB81E31E81C1F1A0451EA6DB1D3FA4F32880E8350CD9EEB8ED10E5A6896E672074476251DA1E76C77402397681E38AB50DA30FF2F56E13F2905C2FC3E5FEB75930B3F6B05EC0C8E758EC152F3B2626B9441895E827C4347801C5CBB9D7FEDB97AB9F43AC4F843B80A4ED1D5D8D30FC2AA70BE921FEEF3EDB076459D15D01B5350D70061648ACAB6D873647B48EF1B8AAE3E424CA1C8DE63BB538C60035546FA246C80C4100670049736B5D368390971CDEE0B817FF24D30B7A876A3427D46918080AD9B7B132FCB993BE27A807B3B1DE8648EC43ECEBDF4F77C88CF00B338DF20758736B1CD69DE583ECFCD361F2F6AA0BA4892A84BE9B7471719DBF5ECCD6344DB4937E3A80638FE1EB35D37863DF8D2801CA46AAEA3F9DDDA21BD1240A00F5C22AA70DD52382B0CD021E18FF2084C0E72142A3BEA1035CACB00DA0C36EE90822EC5D1......

使用python解密该字符串

解密流程主要涉及到 Triple DES 解密zlib 解压缩 两个步骤,大概流程如下:

1. 准备加密数据
  • 加密数据通常以十六进制字符串的形式提供。首先,需要将这个十六进制字符串转换为字节数组。
  • 使用 binascii.unhexlify() 函数将十六进制字符串转换为字节数组。
encrypted_text_byte = hex_string_to_byte_array(encrypted_lyrics)
2. 初始化 Triple DES 密钥调度表
  • Triple DES 加密使用三个不同的 DES 密钥,分别对数据进行三次加密或解密操作。为了提高效率,首先需要为每个密钥生成一个密钥调度表。
  • triple_des_key_setup() 函数根据密钥和模式(加密或解密)生成密钥调度表。
  • 这里使用的密钥 QQKey 是一个 24 字节的密钥,它被分为三部分,每部分用于一次 DES 加密解密操作。
QQKey = b"qq_encrypt_key_decode"
schedule = [[[0] * 6 for _ in range(16)] for _ in range(3)]
triple_des_key_setup(QQKey, schedule, DECRYPT)
3. 分块进行 Triple DES 解密
  • 数据分为 8 字节一块进行解密。Triple DES 的过程是先对数据进行一次 DES 解密,再加密,最后再解密。
  • 使用 triple_des_crypt() 函数对每块数据进行三次 DES 加解密操作。
for i in range(0, len(encrypted_text_byte), 8):
    temp = bytearray(8)
    triple_des_crypt(encrypted_text_byte[i:i + 8], temp, schedule)
    data[i:i + 8] = temp
4. 解压缩解密后的数据
  • 解密后的数据可能是经过压缩的,因此需要使用 zlib 库进行解压缩。
  • sharp_zip_lib_decompress() 函数尝试使用 zlib 解压缩数据。如果解压缩成功,则返回解压缩后的数据。
unzip = sharp_zip_lib_decompress(data)
5. 将解压缩后的数据转换为字符串
  • 解压缩后的数据通常是以 UTF-8 编码的字符串,因此需要将其转换为字符串格式。
  • 使用 decode('utf-8') 将字节数组转换为字符串。
result = unzip.decode('utf-8')

6. 最终得到xml格式的明文

image-20241016114202488


交流讨论

[email protected] 备注(CSDN 加密歌词讨论)

标签:13,QRC,加密,歌词,解密,格式
From: https://blog.csdn.net/weixin_43420255/article/details/142977678

相关文章

  • 常用加解密算法详解与应用指南
    1.引言加解密算法是保证数据安全的基础技术,无论是在数据传输、存储,还是用户身份验证中,都起着至关重要的作用。随着互联网的发展和信息安全威胁的增加,了解并掌握常用的加解密算法已经成为开发者和安全从业者的必修课。本文将详细介绍几种常见的加解密算法,包括对称加密、非......
  • 【勒索病毒】解密工具汇总
    原创橘猫学安全这是一个勒索病毒解密工具收集汇总的github项目,收集了数十款不同勒索病毒解密工具,解密工具多数由安全公司发布,所以安全性也有一定保障。最近应急服务的时候,总是在工控用户方碰上各种勒索病毒,感染工控系统的计算机,以下为日常搜集的勒索病毒解密工具的汇总。希望......
  • 对SQL Server中敏感数据进行加密解密的操作方法
    近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),给事发公司和被泄露人都带来了不小的影响。许多国家和地区都出台了个人数据保护的法律法规,如欧盟的通用数据保护条例(GDPR)。不管是出于遵守法规、数据保护还是隐私保护等,对个人数据加密有......
  • 有首儿歌,女生唱的,歌词好像是拍拍手啊点点头画一个圈圈多奇妙…拍手,拍手,让我们一起来拍
      有首儿歌,男生唱的,歌词好像是拍拍手啊点点头画一个圈圈多奇妙…拍手,拍手,让我们一起来拍拍手! 匿名用户    2016-11-1223:39    为您推荐:其他回答歌词“拍手拍手拍拍手”是出自儿歌《做早操》歌曲:《做早操》词曲:栾泽先演唱:少儿合唱团发行时间:2014年9......
  • 每日一歌歌词
    2024.10.13《Reignite》官方MV:BV11F411g7HoReignite-EchoLab作词:黑金雨作曲:EchoLab音乐制作人:胡臻混音:HARUOSAITOH(THERMALMIX)吉他:並木瑠璃弦乐编写:松田純一人声录音:31Studio音乐监制:陈瑶/聂婉迪(EchoLab)监制:魔奇工作室把少年......
  • iOS 在OC 中使用 AEC 的 ECB、CTR模式加解密
    实用实测过的代码。 AEC加解密网上一大把,简单列举一下。CTR模式,搜索了好多,试用了好几个都是代码不完全参数不对造成无法正常运行加解密。不同模式引用了不同的系统库路径。 调整加解密,修改参数 operation:kCCDecrypt/ kCCEncryptAECCTR模式解密#import<CommonCryp......
  • 编程算法 --- Polybius 方阵密码解密
      这段代码的作用是通过Polybius方阵密码的方式来解密一段只包含元音字母的密文。具体来说,它通过元音字母的全排列来生成多个可能的映射方案,然后将密文中的元音字母转换成数字序列,并根据这些数字对查找字母棋盘中的字母,尝试还原出可能的明文。程序会输出所有可能的明文,供人工......
  • 解密prompt系列40. LLM推理scaling Law
    OpenAI的O-1出现前,其实就有已经有大佬开始分析后面OpenAI的技术路线,其中一个方向就是从Pretrain-scaling,Post-Train-scaling向InferenceScaling的转变,这一章我们挑3篇inference-scaling相关的论文来聊聊,前两篇分别从聚合策略和搜索策略来优化广度推理,最后一篇全面的分析了各类广......
  • 凯撒密码加密以及解密功能实现
    凯撒密码属于古典密码学范畴,本人最近开始学习密码学,今天尝试用python编写一个凯撒密码的加密与解密函数,我觉得过程很有趣,属于暴力美学。一、加密函数凯撒密码的加密过程符合人们的思维习惯,即获取加密密钥之后,对数据进行移动再拼接成一个字符串,核心代码为:chr((ord(i)+key-97/......
  • RSA加密解密示例代码
    importjavax.crypto.Cipher;importjava.security.*;importjava.util.Base64;importjava.nio.charset.StandardCharsets;importjava.io.ByteArrayOutputStream;publicclassRSADemo{//加密时每块的最大字节数,对于1024位RSA密钥,通常为117字节privatestati......