虾米音乐解析器Qt版

博主分享了自己使用Qt开发虾米音乐下载器的经历,通过解析虾米音乐的加密算法,实现离线下载功能。在开发过程中遇到了解密思路错误、手动提取cookie、文件名处理和下载模块的问题,最终成功完成并提供了源码下载链接。
摘要由CSDN通过智能技术生成

比较喜欢虾米的精选集,很多精选集工作的时候听起来特别有感觉。经常带着电脑去教室干活,有何没有网,市面上的下载器大部分在虾米改版之后都挂掉了,所以做个下载器把喜欢的歌拖下来听成为了很重要的需求。百度原理以后发现不难,做起来却是异常艰辛。没玩过多少Qt的我基本上是从新学了一遍,还顺道学习了一下burpsuite抓包,折腾了六天终于是把这个东西弄出来了。

(直接能用的exe文件可以看http://download.csdn.net/detail/zjyl_1994/8086895,已打包所缺失的mingw运行库,安装过开发环境的可以直接去下源码包,那个比较小。)

先上一张完工图,(PS:前一阵虾米改版之后LongkeyMusic就失效了)


虾米的加密算法卡了我两天,初期做出来的解密程序解码部分location的时候还是会出现乱码。静下心来发现是解密思路错了,需要知道余出来几个字母然后他们是矩阵大小+1的长度,其他的是矩阵长度。说多的也看不懂,上代码能更好地理解:

QString Dialog::DecodeXiamiLocation(QString location)
{//解码虾米音乐凯撒矩阵算法
    if(!(location.data()[0].isDigit()))
        return "ERROR";
    int num=location.data()[0].digitValue();
    QString loc=location.mid(1,location.length()-1);
    int avg_len=loc.length()/num;
    int remainder=loc.length()%num;
    for(int i=0;i<num-remainder;i++)
        loc.insert((remainder*(avg_len+1)+avg_len*(i+1))+i,'~');
    int lineLen=loc.length()/num;
    QString ret
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值