阿里云盘突破压缩包分享限制
前言
都 2024 年了,还有网盘不支持压缩包分享,在网上搜索不是改后缀格式就是其他稀奇古怪的操作,后面找到 JuncoJet
写的 c
编译的 windows 下的小工具,但我这里是 macOS
环境,所以根据他的代码进行二改支持多平台。
源码
JuncoJeta
大佬的代码原来出处没有找到,是在某个爬虫博客看到的,感谢分享代码思路:
#include <windows.h>
#include <stdio.h>
char exe[1536] = {
0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68,
0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,
0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,
0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0x45, 0x00, 0x00, 0x4C, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x0B, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xC2, 0x95, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x20, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x20, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00,
0xD8, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60,
0x2E, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x55, 0x89, 0xE5, 0x81, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x90, 0xB8, 0x00, 0x20, 0x40, 0x00, 0x50,
0xE8, 0x7B, 0x01, 0x00, 0x00, 0x83, 0xC4, 0x04, 0xB8, 0x22, 0x20, 0x40, 0x00, 0x50, 0xE8, 0x75,
0x01, 0x00, 0x00, 0x83, 0xC4, 0x04, 0xC9, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x55, 0x89, 0xE5, 0x81, 0xEC, 0x2C, 0x00, 0x00, 0x00, 0x90, 0x8D, 0x45, 0xE8, 0x50, 0xE8, 0xFE,
0x00, 0x00, 0x00, 0x83, 0xC4, 0x04, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x89, 0x45, 0xD4, 0xB8, 0x00,
0x00, 0x03, 0x00, 0x50, 0xB8, 0x00, 0x00, 0x01, 0x00, 0x50, 0xE8, 0x31, 0x01, 0x00, 0x00, 0x83,
0xC4, 0x08, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x50, 0xE8, 0x2B, 0x01, 0x00, 0x00, 0x83, 0xC4, 0x04,
0x8D, 0x45, 0xD4, 0x50, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8D, 0x45, 0xDC, 0x50, 0x8D, 0x45,
0xE0, 0x50, 0x8D, 0x45, 0xE4, 0x50, 0xE8, 0x15, 0x01, 0x00, 0x00, 0x83, 0xC4, 0x14, 0x8B, 0x45,
0xDC, 0x50, 0x8B, 0x45, 0xE0, 0x50, 0x8B, 0x45, 0xE4, 0x50, 0xE8, 0x51, 0xFF, 0xFF, 0xFF, 0x83,
0xC4, 0x0C, 0x89, 0x45, 0xD8, 0x8B, 0x45, 0xD8, 0x50, 0xE8, 0xFA, 0x00, 0x00, 0x00, 0x83, 0xC4,
0x04, 0xC9, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x87, 0x2C, 0x24, 0x55, 0x8D, 0x6C, 0x24, 0x04, 0x51, 0x89, 0xE9, 0x81, 0xE9, 0x00, 0x10, 0x00,
0x00, 0x85, 0x01, 0x2D, 0x00, 0x10, 0x00, 0x00, 0x3D, 0x00, 0x10, 0x00, 0x00, 0x7D, 0xEC, 0x29,
0xC1, 0x85, 0x01, 0x89, 0xE0, 0x89, 0xCC, 0x8B, 0x08, 0xFF, 0x60, 0x04, 0x8B, 0x45, 0xEC, 0xC3,
0xE8, 0xF7, 0xFF, 0xFF, 0xFF, 0x8B, 0x00, 0x8B, 0x00, 0xC3, 0xE8, 0xED, 0xFF, 0xFF, 0xFF, 0x50,
0xE8, 0xEB, 0xFF, 0xFF, 0xFF, 0x50, 0xE8, 0x95, 0x00, 0x00, 0x00, 0x81, 0xC4, 0x08, 0x00, 0x00,
0x00, 0xC3, 0x8B, 0x65, 0xE8, 0xE8, 0xD6, 0xFF, 0xFF, 0xFF, 0x50, 0xE8, 0x88, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x11, 0x40, 0x00, 0x32, 0x11, 0x40, 0x00, 0xE9, 0x7F, 0x00, 0x00,
0x00, 0x55, 0x8B, 0x6C, 0x24, 0x08, 0x8D, 0x44, 0x24, 0x0C, 0x89, 0x45, 0x00, 0x31, 0xC0, 0x89,
0x45, 0x04, 0x64, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x89, 0x45, 0x08, 0xB8, 0x4C, 0x11, 0x40, 0x00,
0x89, 0x45, 0x0C, 0xB8, 0x40, 0x11, 0x40, 0x00, 0x89, 0x45, 0x10, 0x31, 0xC0, 0x89, 0x45, 0x14,
0x8D, 0x45, 0x08, 0x64, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x25, 0x68, 0x20, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x25, 0x6C, 0x20, 0x40, 0x00, 0x00, 0x00,
0xFF, 0x25, 0x70, 0x20, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x25, 0x74, 0x20, 0x40, 0x00, 0x00, 0x00,
0xFF, 0x25, 0x78, 0x20, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x25, 0x7C, 0x20, 0x40, 0x00, 0x00, 0x00,
0xFF, 0x25, 0x80, 0x20, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x25, 0x84, 0x20, 0x40, 0x00, 0x00, 0x00,
0xFF, 0x25, 0x88, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xD5, 0xE2, 0xCA, 0xC7, 0xB8, 0xF6, 0xBC, 0xD9, 0x45, 0x58, 0x45, 0xA3, 0xAC, 0xC7, 0xEB, 0xCA,
0xB9, 0xD3, 0xC3, 0xD1, 0xB9, 0xCB, 0xF5, 0xCE, 0xC4, 0xBC, 0xFE, 0xB4, 0xF2, 0xBF, 0xAA, 0xA3,
0xA1, 0x00, 0x70, 0x61, 0x75, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x20, 0x00, 0x00,
0x68, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x20, 0x00, 0x00, 0xCA, 0x20, 0x00, 0x00,
0xD3, 0x20, 0x00, 0x00, 0xE0, 0x20, 0x00, 0x00, 0xF1, 0x20, 0x00, 0x00, 0x01, 0x21, 0x00, 0x00,
0x08, 0x21, 0x00, 0x00, 0x16, 0x21, 0x00, 0x00, 0x1E, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC3, 0x20, 0x00, 0x00, 0xCA, 0x20, 0x00, 0x00, 0xD3, 0x20, 0x00, 0x00, 0xE0, 0x20, 0x00, 0x00,
0xF1, 0x20, 0x00, 0x00, 0x01, 0x21, 0x00, 0x00, 0x08, 0x21, 0x00, 0x00, 0x16, 0x21, 0x00, 0x00,
0x1E, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x76, 0x63, 0x72, 0x74, 0x2E, 0x64,
0x6C, 0x6C, 0x00, 0x00, 0x00, 0x70, 0x75, 0x74, 0x73, 0x00, 0x00, 0x00, 0x73, 0x79, 0x73, 0x74,
0x65, 0x6D, 0x00, 0x00, 0x00, 0x5F, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x66, 0x70, 0x00,
0x00, 0x00, 0x5F, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x61, 0x70, 0x70, 0x5F, 0x74, 0x79, 0x70, 0x65,
0x00, 0x00, 0x00, 0x5F, 0x5F, 0x67, 0x65, 0x74, 0x6D, 0x61, 0x69, 0x6E, 0x61, 0x72, 0x67, 0x73,
0x00, 0x00, 0x00, 0x65, 0x78, 0x69, 0x74, 0x00, 0x00, 0x00, 0x5F, 0x58, 0x63, 0x70, 0x74, 0x46,
0x69, 0x6C, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x5F, 0x65, 0x78, 0x69, 0x74, 0x00, 0x00, 0x00,
0x5F, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x33,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int main(int argc, char *argv[])
{
puts("阿里云盘压缩文件分享工具 -by JuncoJet\n");
char s[MAX_PATH],s2[MAX_PATH];
printf("拖放需要转换的压缩文件: ");
if(argc>1){
strcpy(s,argv[1]);
puts(s);
}else{
scanf("%s",s);
}
char *buf=malloc(64*1024*1024);
FILE *fd,*fs=fopen(s,"rb");
int c,l=strlen(s);
strcpy(s2,s);
for(int i=l;i>0;i--){
if(s2[i]=='\\'){
c=++i;
s2[i]='\0';
break;
}
}
strcat(s2,"fake_");
strcat(s2,&s[c]);
fd=fopen(s2,"wb");
fseek(fs,0,SEEK_END);
int fsize=ftell(fs),
count=fsize/(64*1024*1024),
mod=fsize%(64*1024*1024);
fseek(fs,0,SEEK_SET);
//printf("%x %x\n",fs,fd);
//printf("%d %d %d\n",fsize,count,mod);
if(mod)count++;
fwrite(exe,1,sizeof(exe),fd);
for(int i=0;i<count;i++){
if(mod&&i+1==count){
fread(buf,1,mod,fs);
fwrite(buf,1,mod,fd);
}else{
fread(buf,1,64*1024*1024,fs);
fwrite(buf,1,64*1024*1024,fd);
}
}
fclose(fs);
fclose(fd);
free(buf);
printf("\n文件: %s\n生成完成!\n",s2);
system("pause");
}
二改
大致看了下是在压缩包二进制头部再添加一串 exe
这二进制文件,不太清楚是什么干嘛的,盲猜应该是修改文件类型的 MIME
数据?这里我使用 Golang
去编写:
package main
import (
"fmt"
"io"
"os"
"path/filepath"
)
const bufferSize = 64 * 1024 * 1024 // 64MB
func main() {
fmt.Println("阿里云盘压缩文件分享工具 -by 淮城一只猫")
// 获取文件路径
var sourceFilePath string
if len(os.Args) > 1 {
sourceFilePath = os.Args[1]
fmt.Println("文件路径: ", sourceFilePath)
} else {
fmt.Print("拖放需要转换的压缩文件: ")
fmt.Scanln(&sourceFilePath)
}
// 打开原始文件
sourceFile, err := os.Open(sourceFilePath)
if err != nil {
fmt.Println("无法打开文件:", err)
return
}
defer sourceFile.Close()
// 获取文件大小
sourceFileInfo, err := sourceFile.Stat()
if err != nil {
fmt.Println("无法获取文件信息:", err)
return
}
fileSize := sourceFileInfo.Size()
// 创建新文件路径,添加 "fake_" 前缀
dir, file := filepath.Split(sourceFilePath)
newFilePath := filepath.Join(dir, "fake_"+file)
// 创建新文件
newFile, err := os.Create(newFilePath)
if err != nil {
fmt.Println("无法创建文件:", err)
return
}
defer newFile.Close()
// 固定的二进制内容 (类似于 exe 数组)
exe := []byte{
0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// ...同上面数据
}
// 将 exe 数据写入新文件
_, err = newFile.Write(exe)
if err != nil {
fmt.Println("写入文件失败:", err)
return
}
// 创建缓冲区
buf := make([]byte, bufferSize)
// 分块读取原始文件并写入新文件
totalRead := int64(0)
for {
// 从原文件读取数据到缓冲区
n, err := sourceFile.Read(buf)
if err != nil && err != io.EOF {
fmt.Println("读取文件失败:", err)
return
}
if n == 0 {
break // 读取完成
}
// 将缓冲区内容写入新文件
_, err = newFile.Write(buf[:n])
if err != nil {
fmt.Println("写入文件失败:", err)
return
}
totalRead += int64(n)
fmt.Printf("\r已处理: %d/%d bytes", totalRead, fileSize)
}
fmt.Printf("\n文件: %s\n生成完成!\n", newFilePath)
}
代码就不做解释了,上面该有的注释都有,最后打包成对应的可执行文件:
# Windows x64 平台
GOOS=windows GOARCH=amd64 go build demo/main.go
# Intel macOS 平台
GOOS=darwin GOARCH=amd64 go build demo/main.go
文件分享:
aDriveShareTools.zip
https://www.alipan.com/s/8wYCQE6tfU7
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
本压缩包就是根据上面脚本完成的,解押的时候建议用第三方解压缩工具,例如:Bandizip
,自带的解押会提示损坏。