[C] XOR Encryption
Introduction
Le OU exclusif, ou le XOR, est très souvent utilisé dans les algorithmes de chiffrement et les logiciels malveillants.
C'est pourquoi je partage un fonction permettant de chiffrer en XOR.
Code
#define KEY 'X';
#include <stdio.h>
#include <stdlib.h>
/*
TODO: - Dev this in C++ with a class "shellcode".
- Handle the nullbyte.
*/
char*shellcodeEncXor(unsigned char*shellcode, char key){
char*shellcodeEnc = (char*)malloc(sizeof(shellcode));
for(int i=0;i<sizeof(shellcode);i++) shellcodeEnc[i] = shellcode[i] ^ key;
return shellcodeEnc;
}
char*shellcodeDecXor(unsigned char*shellcodeEnc, char key){
char*shellcode = (char*)malloc(sizeof(shellcodeEnc));
for(int i=0;i<sizeof(shellcodeEnc);i++) shellcode[i] = shellcodeEnc[i] ^ key;
return shellcode;
}
void*printShellcode(unsigned char*shellcode, int shellcodeLen){
for (int i=0;i<shellcodeLen;i++) printf("\\x%x", shellcode[i]);
printf("\n");
}
int main(){
char key = KEY;
unsigned char sc[] = "\x48\x31\xc9\x48";
//int scLen = 4;
int scLen = sizeof(sc);
// Enc process
unsigned char*scEnc = shellcodeEncXor(sc, key);
printShellcode(scEnc, scLen);
// Dec process
unsigned char*scDec = shellcodeDecXor(scEnc, key);
printShellcode(scDec, scLen);
printf("Sizeof shellcode : [%d]\n", scLen);
free(scEnc);
free(scDec);
return 0;
}