Я пытаюсь XOR файл. Я прочитал в файле, который состоит из 1 строки текста "это какой-то случайный текст". Когда я выполняю операцию XOR, я вывожу файл XORed, который содержит значение 00. Когда я снова XOR файл и выводит содержимое, все, что находится в файле, это «это s». Я новичок во всем этом, поэтому любая информация полезна. Я планирую использовать это для файлов .exe, и мне любопытно, если это успешно для файлов .txt, это также будет работать для .exe
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
//XOR key
#define XOR_KEY 0x6F
void XORFile (char *infile, char *outfile){
FILE *fp;
char buf[4096];
fp = fopen (infile, "r");
fgets (buf, sizeof (buf), fp); //Reading from file
printf ("File contents: %s\n", buf);
int i;
//XOR read file buffer
for(i = 0; buf[i] != '\0'; i++){
buf[i] ^= XOR_KEY;
}
FILE *fp2;
fp2 = fopen (outfile, "w");
fprintf (fp2, "%s", buf);
fclose(fp);
fclose (fp2);
}
int main (int argc, char *argv[]) {
if(argc <= 3){
fprintf (stderr, "Usage: %s [CRYPT] [IN FILE] [OUTFILE]\n", argv[0]);
exit(1);
}
XORFile (argv[2], argv[3]);
return 0;
}