C++ code to xor encrypt or decrypt (below)
When compiled it builds XorTesting.exe
You can find the hardcoded value by running brutexor.py ( http://hooked-on-mnemonics.blogspot.com/p/iheartxor.html )
$> python.exe brutexor.py XorTesting.exe | findstr http
0x672f key 0x1f http://www.google.com/happy
-----------------------
C++ code
-----------------------
#include <stdio.h>
#include <string.h>
#include <cstdlib>
int main(int argc, char * argv[])
{
if ((argc == 3 && strlen(argv[1]) == 1 && argv[1][0] == '0') ||
(argc == 2 && strlen(argv[1]) == 1 && argv[1][0] == '1'))
{
char parameter[50] = "wkkohhh1xppxsz1|pr0w~oof\0";
char xord[50];
int key = 31;
if (argv[1][0] == '0')
{
printf("Running in 'user input(0)' mode\n\n");
strncpy_s(parameter, argv[2], strlen(argv[2]));
unsigned int i = 0;
for (i = 0; i < strlen(parameter); i++)
{
xord[i] = parameter[i] ^ key;
}
xord[i] = '\0';
printf("key : 0x%x\n", key);
printf("before: %s\n", parameter);
printf("after : %s\n", xord);
}
else if (argv[1][0] == '1')
{
printf("Running in 'hardcoded value (1)' mode\n\n");
unsigned int i = 0;
for (i = 0; i < strlen(parameter); i++)
{
xord[i] = parameter[i] ^ key;
}
xord[i] = '\0';
printf("key : 0x%x\n", key);
printf("before: %s\n", parameter);
printf("after : %s\n", xord);
}
}
else
printf("Usage:\n 0 = user input mode\n 1 = hardcoded value mode\n\n XorTesting.exe 0 cleartextvalue\n XorTesting.exe 1");
return EXIT_SUCCESS;
}