在本文中主要阐述《迅雷7》专用链接的加密与解密、那么必须先
从迅雷7专用链接加密原理谈起
那么我们为什么需要深入研究《迅雷7》专用链接?
在我的感知中迅雷会后台捆绑很多应用与插件 而且很消耗内存与
性能、而网络上大量资源是通过迅雷专用链接才可以下载 逼迫用
户通过迅雷下载 当然这
些所谓的专用的链接只是难到用户
不过你在做文件下载工具时 也可能会需要对一些常用链接的解密
的支持 总之研究研究总不会是坏事儿
从上我通过画图绘制的迅雷7专用链接解密过程 可以明确的看到
迅雷7专用链接的解密步骤
1:分解链接
2:BASE64 解密
3:排除 AA / ZZ
那么如何在代码中完成对迅雷7专用链接的解密与加密呢?
上方是解密的代码、代码流程你会感到很容易
上方是加密的代码、一旦你知道了如何去解密 那么就可以
变相大概的知道如何去加密
上方是调用加密与解密的一个简易示例代码 如果你执行后
大致可以看到如下图所示信息
示例源代码:
namespace T7UrlDemo
{
using System;
using System.Text;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
Console.Title = typeof(Program).Namespace;
string strReallyUrl = StrFromT7Url("thunder://QUFodHRwOi8vZG93bi5sYWlsb29rLmNvbS9wc3Btb3ZpZS8wOV8xMS9bV1dXLmxhaWxvb2suQ09NXcHptq+57dOwyrXCvERWRLDmW01QNF0udG9ycmVudFpa");
string strT7PrivUrl = StrToT7Url(strReallyUrl);
Console.WriteLine(strReallyUrl);
Console.WriteLine(strT7PrivUrl);
Console.ReadKey(false);
}
static string StrFromT7Url(string buffer)
{
Match match = Regex.Match(buffer, @"\://([\s\S]+)");
buffer = StrFromBase64(match.Groups[1].Value);
return Regex.Replace(buffer, @"^AA|ZZ$", string.Empty, RegexOptions.Multiline);
}
static string StrToT7Url(string buffer)
{
buffer = string.Format(@"AA{0}ZZ", buffer);
return "thunder://" + StrToBase64(buffer);
}
static string StrToBase64(string buffer)
{
Encoding sEncoding = Encoding.Default;
return Convert.ToBase64String(sEncoding.GetBytes(buffer));
}
static string StrFromBase64(string buffer)
{
Encoding sEncoding = Encoding.Default;
return sEncoding.GetString(Convert.FromBase64String(buffer));
}
}
}