Đây là đoạn encrypt của chương trình, kết hợp với 3 file còn lại trong zip ta đoán được là sẽ tìm key thông qua msg1 và enc1, và dùng key để crack enc2

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
if (argc != 3) {
printf(“USAGE: %s INPUT OUTPUT\n”, argv[0]);
return 0;
}
FILE* input = fopen(argv[1], “rb”);
FILE* output = fopen(argv[2], “wb”);
if (!input || !output) {
printf(“Error\n”);
return 0;
}
char k[] = “CENSORED”;
char c, p, t = 0;
int i = 0;
while ((p = fgetc(input)) != EOF) {
c = (p + (k[i % strlen(k)] ^ t) + i*i) & 0xff;
t = p;
i++;
fputc(c, output);
}
return 0;
}

Bruteforce key ta sẽ có key : “VeryLongKeyYouWillNeverGuess”

Viết lại đoạn encrypt và cũng bruteforce để tìm message

log = open(‘PATH TO FILE\crypto100\msg002.enc’, ‘rb’)
s = log.read()
t=0
q=””
key=”VeryLongKeyYouWillNeverGuess”
for k in range(len(s)):
for i in range(0,256):
if (i + (ord(key[k%len(key)]) ^ t) + k*k) & 0xff ==ord(s[k]):
q+=chr(i)
t=i
break
print q

Image

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s