本帖最后由 CE.BB.CAT 于 2017-7-28 19:08 编辑
[需要 .NET 4.0]
各位大大好,虽然好早就听说了,但因为之前没有邀请码没办法注册,乘着开放注册的春风,今天终于注册了;
我本人是软件工程专业的学生,正好看到 [原创工具] 迅雷地址解密加密开源另有快车,旋风分析草稿 ,看起来挺适合我的,就也用 C# 写一个试试,恳请各位前辈多多指点,那篇文章的作者:@xiaojing2015
用法:
[本地程序名] $链接一$链接二 $链接三$链接四 $链接五
如:
EncryptXunleiLink.exe http://120.52.72.23/i.imgur.com/TzIysTb.png http://120.52.72.23/i.imgur.com/fVVxM4G.png
注意:各个参数之间有空格
下载:
论坛附件和网盘链接我会长久保留与维护,如有失效请尽快告知我!
下面这是 C# 版本生成迅雷链的代码,匆匆写就
using System;
using System.Text;
namespace EncryptXunleiLink
{
class Program
{
static int Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("无参数,请检查输入");
return 0;
}
else
{
int index_in;
for (index_in = 0; index_in < args.Length; index_in++)
{
string source_link = args[index_in];
string link_added = "AA" + source_link + "ZZ";
byte[] link_added_byte_arr = Encoding.Default.GetBytes(link_added);
string endbyte_a = "thunder://" + Convert.ToBase64String(link_added_byte_arr);
Console.WriteLine(endbyte_a);
}
return index_in;
}
}
}
}
这是运行效果:
这是 C# 版本解析迅雷链的代码,结构设计得不是很满意,恳请指点
using System;
using System.Text;
namespace DecryptXunleiLink
{
class Program
{
static int Main(string[] args)
{
int num_of_con = 0;
if (args.Length == 0)
{
Console.WriteLine("无参数,请检查输入");
}
else
{
for (int index_in = 0; index_in < args.Length; index_in++)
{
string xunlei_link = args[index_in];
if (xunlei_link.Substring(0, 10) == "thunder://")
{
string xunlei_link_cuted = xunlei_link.Substring(10);
if (xunlei_link_cuted.Length % 4.0 == 0)
{
/* 解码并转为 string */
string source_link_added_s = Encoding.Default.GetString(Convert.FromBase64String(xunlei_link_cuted));
if (source_link_added_s.Substring(0, 2) == "AA" && source_link_added_s.Substring(source_link_added_s.Length - 2, 2) == "ZZ")
{
/*先去掉"AA",再去掉"ZZ"*/
string source_link = source_link_added_s.Substring(2).Substring(0, source_link_added_s.Length - 4);
Console.WriteLine(source_link);
num_of_con++;
}
else
Console.WriteLine("[Broken_Link]");
}
else
{
Console.WriteLine("[Broken_Link]");
continue;
}
}
else
Console.WriteLine("[Broken_Link]");
}
}
return num_of_con;
}
}
}
相应的,这是执行效果:
嗯,大概就是这样,虽然看起来简单,想起来也简单,但解析可把我缠住了有一会呢,哈哈
就这样了,晚安
Base64 长度总为 4 的整数倍
byte[] System.Text.Encoding.Default.GetBytes(string s)
string Convert.ToBase64String(byte[] inArray)
byte[] Convert.FromBase64String(string s)
stringSystem.Text.Encoding.Default.GetString(byte[] bytes)***.Substring(0,***.Length - 4)
|