#include #include #include #include #include "libluh.h" char* readInput (FILE* inputFile, uint64_t allocSize) { int64_t character; uint64_t length = 0; char* input; input = malloc (sizeof (char) * allocSize); while (EOF != (character = fgetc (inputFile))) { input[length++] = character; if (length == allocSize) { input = realloc (input, sizeof (char) * (allocSize += 8)); } } input[length++] = '\0'; return realloc (input, sizeof (char) * length); } char* cryptXor (char* inputStr, FILE* keyFile) { int64_t i; char in1, in2; int64_t inputSize = strlen (inputStr); char* bytes = malloc (inputSize); fseek (keyFile, 0L, SEEK_END); int64_t keySize = ftell (keyFile); fseek (keyFile, (keySize - inputSize), SEEK_SET); for (i = 0; i < inputSize; i ++) { in1 = inputStr[i]; fscanf (keyFile, "%c", &in2); bytes[i] = in1 ^ in2; } return bytes; } char* fcryptXor (FILE* inputFile, FILE* keyFile) { int64_t i; char in1, in2; fseek (inputFile, 0L, SEEK_END); int64_t inputSize = ftell (inputFile); rewind (inputFile); char* bytes = malloc (inputSize); fseek (keyFile, 0L, SEEK_END); int64_t keySize = ftell (keyFile); fseek (keyFile, (keySize - inputSize), SEEK_SET); for (i = 0; i < inputSize; i ++) { fscanf (inputFile, "%c", &in1); fscanf (keyFile, "%c", &in2); bytes[i] = in1 ^ in2; } return bytes; } char* binDump (char* inputStr, char* binChars) { int64_t len = strlen (inputStr); char* bits = malloc (8 * len); int64_t i,j; for (i = 0; i < len; i ++) { for (j = 0; j < 8; j ++) { bits[8 * i + j] = (inputStr[i] & (1 << (7 -j))) ? binChars[1] : binChars[0]; } } return bits; } char* ubinDump (char* inputStr, char* binChars) { int64_t len = strlen (inputStr); char* comp = malloc ((len / 8) + 1); memset (comp, 0, ((len / 8) + 1)); int64_t i, j; for (i = 0; i < (len / 8); i ++) { for (j = 0; j < 8; j ++) { if (inputStr[8 * i + j] == binChars[1]) { comp[i] |= 1 << (7 - j); } } } return comp; }