2023年11月29日发(作者:)CODE#NoTrayIcon

Chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/



Gui,Add,Edit,w250 vurl

Gui,Add,Button,w120,Encode/&Decode

Gui,Add,Button,w120 xp+130,&Cancel

Gui,Show,,迅雷地址转换

Return



ButtonEncode/Decode:

GuiControlGet,url

StringGetPos,pos, url,thunder://

IFEQUAL,pos,-1

{

StringGetPos,pos, url,.

IFEQUAL,pos,-1,return

GuiControl,,url, % "Thunder://" Base64("AA" url "ZZ")

}else{

StringTrimLeft,url,url,pos+10

RegExMatch(InvBase64(url),"(?<=^AA).+(?=ZZ)",url)

GuiControl,,url,%url%

}

Clipboard:=url

return



guiClose:

guiEscape:

ButtonCancel:

ExitApp



;forum /forum/?p=35427

Base64(string) {

Loop Parse,string

{

If Mod(A_Index,3) = 1

buffer := Asc(A_LoopField) << 16

Else If Mod(A_Index,3) = 2

buffer += Asc(A_LoopField) << 8

Else {

buffer += Asc(A_LoopField)

out := out . Code(buffer>>18) . Code(buffer>>12) . Code(buffer>>6) . Code(buffer)

}

}

If Mod(StrLen(string),3) = 0

Return out

If Mod(StrLen(string),3) = 1

Return out . Code(buffer>>18) . Code(buffer>>12) "=="

Return out . Code(buffer>>18) . Code(buffer>>12) . Code(buffer>>6) "="

}



InvBase64(code) {

StringReplace code,code,=,,All

Loop Parse,code

{

If Mod(A_Index,4) = 1

buffer := DeCode(A_LoopField) << 18

Else If Mod(A_Index,4) = 2

buffer += DeCode(A_LoopField) << 12

Else If Mod(A_Index,4) = 3

buffer += DeCode(A_LoopField) << 6

Else {

buffer += DeCode(A_LoopField)

out := out . Chr(buffer>>16) . Chr(255 & buffer>>8) . Chr(255 & buffer)

}

}

If Mod(StrLen(code),4) = 0

Return out

If Mod(StrLen(code),4) = 2

Return out . Chr(buffer>>16)

Return out . Chr(buffer>>16) . Chr(255 & buffer>>8)

}



Code(i) { ; <== Chars[i & 63],0-base index

Global Chars

StringMid i,Chars,(i&63)+1,1

Return i

}



DeCode(c) { ; c = a char in Chars ==> position [0,63]

Global Chars

Return InStr(Chars,c,1) - 1

}







迅雷加密的下载链接地址,使用了。BASE64加密算法。BASE64算法是一个可逆的算法,所以可以用来进行简单的加密!



我们在下载一些网络资源的时候,常常会见到类似于如下的链接地址:

thunder://QUFodHRwOi8vaW1hZ2UyLnNpbmEuY29tLmNuL2Jsb2cvdG1wbC92My9pbWFnZXMvbG9nby5naWZaWg==

在Windows中如果安装了迅雷,就可以正确解析这样的地址,其实这样一串字符就是用BASE64算法经加密后得到的,我用“/blog/tmpl/v3/images/”作为例说明一下整个加密和解密的过程。



加密:

在完整的下载链接前冠以“AA”,后缀以“ZZ”:

AA/blog/tmpl/v3/images/

用BASE64算法进行加密,得到:

QUFodHRwOi8vaW1hZ2UyLnNpbmEuY29tLmNuL2Jsb2cvdG1wbC92My9

pbWFnZXMvbG9nby5naWZaWg==

在前面加上迅雷自己的协议头:

thunder://QUFodHRwOi8vaW1hZ2UyLnNpbmEuY29tLmNuL2Jsb2cvdG1wbC92My9pbWFnZXMvbG9nby5naWZaWg==

大功告成!



解密:

把以上过程逆向一下就可以了:

去掉迅雷协议头;用BASE64算法解密;去掉“AA”、“ZZ”!









迅雷:AA下载地址ZZ 经BASE64加密

超级旋风:下载地址 经BASE64加密

网际快车:[FLASHGET]下载地址[FLASHGET] 经BASE64加密











在网上看到的关于迅雷、快车、超级旋风下载地址加密算法介绍,都是通过base64算法加密,只不过在加密前后做了一些特别的标志。



Base64编码是一种加密算法,Email的原始信息就是由Base64编码构成的。



1、迅雷专用链接编码



在原地址前面加"AA",后面加"ZZ"(不包括引号),地址变为



AA/install/



此地址base64编码为



QUFodHRwOi8vaW0uYmFpZHUuY29tL2luc3RhbGwvQmFpZHVIaS5leGVaWg==



迅雷专链即在上地址前加thunder://,即



Thunder://QUFodHRwOi8vaW0uYmFpZHUuY29tL2luc3RhbGwvQmFpZHVIaS5leGVaWg==





2、快车专用链接编码



在原地址前后都加上"[FLASHGET]"(不包括引号),地址变为



[FLASHGET]/install/[FLASHGET]



此地址base64编码为



W0ZMQVNIR0VUXWh0dHA6Ly9pbS5iYWlkdS5jb20vaW5zdGFsbC9CYWlkdUhpLmV4



ZVtGTEFTSEdFVF0=&yinbing1986



快车专链即在上地址前加flashget://,注意后面还要加上"&符号",符号怎么得出不清楚,在最后后面加的是好好爱的个人信息,至今未有人报告转换错误,即



Flashget://W0ZMQVNIR0VUXWh0dHA6Ly9pbS5iYWlkdS5jb20vaW5zdGFsbC9CYWlkdUhpL



mV4ZVtGTEFTSEdFVF0=&yinbing1986



3、旋风专用链接编码



旋风相对就简单多了,将原地址直接base64编码为



aHR0cDovL2ltLmJhaWR1LmNvbS9pbnN0YWxsL0JhaWR1SGkuZXhl



旋风专链即在上地址前加qqdl://,即



qqdl://aHR0cDovL2ltLmJhaWR1LmNvbS9pbnN0YWxsL0JhaWR1SGkuZXhl







附Javascript的加密函数: