El inverso de XOR es XOR, en otras palabras, como te comentaron puedes hacer un sencillo codigo que haga bruteforce hasta encontrar el contenido descifrado. Por otra parte, ten en cuenta que necesitas saber:
1- El dominio de los caracteres que podrian haber sido usados en el texto plano (letras, numeros, caracteres especiales, etc).
2- El posible tamaño de la llave.
Dependiendo de cuanta informacion tengas con respecto a lo anterior te sera mas o menos factible encontrar un texto descifrado correcto.
Un ejemplo es este sencillo codigo en C. Intenta descifrar la palabra con las premisas de que la palabra solo contiene letras, espacios y/o numeros y una llave no mayor que 4 bytes
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
typedef enum {false, true} bool;
#define KEY_LIMIT 0xFFFFFFFF
#define DATA_LEN 9
int main()
{
char cdata[] = {0x61, 0xFA, 0x1E, 0x51, 0x7C, 0x94, 0x24, 0xD0, 0xD7};
char ddata[DATA_LEN] = {0};
bool invalidChars = false;
for(int keyValue = 0; keyValue < KEY_LIMIT; keyValue++)
{
for(int wordIndex = 0; wordIndex < DATA_LEN; wordIndex++)
{
ddata[wordIndex] = cdata[wordIndex] ^ keyValue;
{
invalidChars = true;
break;
}
}
if(!invalidChars)
{
printf("Data: %s - Key: 0x%X\n", ddata
, keyValue
); }
invalidChars = false;
}
}
Saludos