这对某些人来说可能真的很容易。我不太明白如何使用密码分析和蛮力破解 XOR 加密文件。我有一个 PDF 文件,该文件使用一个程序对 8 个字节乘以 8 个字节进行异或加密。程序代码是
int main(int argc, char** argv) {
if (argc!=3) {
printf("command (for example) : ./enc1 file_to_encrypt key_in_hex\n");
return 1;
}
// get the key
unsigned long long key=strtoull(argv[2], NULL, 16);
// open the file
char* file=argv[1];
int fdp=open(file, O_RDONLY);
if (fdp<0) {
printf("cannot open the file %s\n", file);
return 1;
}
// open the file to save the encryption
char enc[strlen(file)+10];
strncpy(enc, file, strlen(file));
strncpy(enc+strlen(file), ".enc1\0", 5);
enc[strlen(file)+5]='\0';
int fdc=open(enc, O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR);
if (fdc<0) {
printf("cannot save the encrypted file %s\n", enc);
return 1;
}
// encryption
unsigned long long buf;
unsigned long long k;
int len;
k=key;
while ((len=read(fdp, (char*)&buf, 8))>0) {
buf^=k;
k*=key;
write(fdc, (char*)&buf, len);
}
close(fdp);
close(fdc);
return 0;
}
我知道 PDF 文件的标题是
%PDF-1.0 %PDF-1.1
如何使用该信息获取明文?我对标题进行异或吗?非常感谢