
here's how to use the xor tool to circumvent copyright law.
> g++ Source.cpp -o xortool -std=c++11 -Wall -Ofast
it turns out the -lm flag wasn't necessary which was seen in the video, I had left it there by mistake.
The entire source code is so small it'll fit in here in the description:
#include
#include
#include
int main(void) {
unsigned long long int buffersize = 1024 * 1024;
unsigned char* buffer1;
buffer1 = new unsigned char[buffersize];
unsigned char* buffer2;
buffer2 = new unsigned char[buffersize];
unsigned long long int lengthoffile1 = 0;
FILE *readptr;
readptr = fopen("input.raw","rb");
fseek(readptr,0,SEEK_END);
lengthoffile1 = ftell(readptr);
fseek(readptr,0,SEEK_SET);
unsigned long long int howmanyfullsegmentstoread = lengthoffile1 / buffersize;
fprintf(stderr, "\nLength of input file found to be %llu", lengthoffile1);
fprintf(stderr, "\nWith buffer size set to %llu", buffersize);
fprintf(stderr, ", The number of full segments will be %llu", howmanyfullsegmentstoread);
fprintf(stderr, "\nStarting: ");
for (unsigned long long int segmentN = 0; segmentN < howmanyfullsegmentstoread; segmentN++) {
fread(buffer1,buffersize,1,readptr);
fread(buffer2,buffersize,1,stdin);
fprintf(stderr, " %llu", segmentN);
for (unsigned long long int i = 0; i < buffersize; i++) {
buffer1[i] ^= buffer2[i];
}
fwrite(buffer1,buffersize,1,stdout);
}
unsigned long long int theremainderi = lengthoffile1 % buffersize;
if (theremainderi) {
fread(buffer1,theremainderi,1,readptr);
fread(buffer2,theremainderi,1,stdin);
fprintf(stderr, "\nfinal segment filesize / buffersize remainder %llu", theremainderi);
for (unsigned long long int i = 0; i < theremainderi; i++) {
buffer1[i] ^= buffer2[i];
}
fwrite(buffer1,theremainderi,1,stdout);
}
else {
fprintf(stderr, "\nFile was evenly split into segments of specified buffer size\n");
}
fprintf(stderr, "\nCompleted file the size of %llu", lengthoffile1);
fprintf(stderr, "\nSplit into segments of size %llu", buffersize);
fprintf(stderr, ", Number completed segments %llu", howmanyfullsegmentstoread);
fprintf(stderr, "\nDone\n");
return 0;
}