You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.3 KiB
130 lines
4.3 KiB
/*******************************************************************************
|
|
* How to run script:
|
|
* Run exe with following arguments in this order:
|
|
* 1. encrypt or decrypt (keyword)
|
|
* 2. file name (without extension)
|
|
* 3. path to folder where file is located in
|
|
* 4. file extension (e.g. ".TXT" - incl. dot!)
|
|
* Example Batch:
|
|
* ~dp0\SW01-XTEA-Cipher.exe encrypt test ~dp0 .TXT
|
|
* ~dp0\SW01-XTEA-Cipher.exe decrypt test_ENCR ~dp0 .CIP
|
|
*******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* Include Files
|
|
*******************************************************************************/
|
|
#include <stdint.h> /* Funktionsbibliothek: Integer */
|
|
#include <stdlib.h> /* Funktionsbibliothek: Hilfsfunktionen */
|
|
#include <stdio.h> /* Funktionsbibliothek: Standard Ein- Ausgabe */
|
|
#include <string.h> /* Funktionen zur Stringbearbeitung */
|
|
|
|
#include "main.h"
|
|
#include "decrypt.h"
|
|
#include "encrypt.h"
|
|
|
|
// disable deprecated warning
|
|
#pragma warning(disable : 4996)
|
|
|
|
/*******************************************************************************
|
|
******************************* HAUPTPROGRAMM **********************************
|
|
*******************************************************************************/
|
|
main(argc, argv) /* Argumente an main-Funktion */
|
|
int argc;
|
|
char* argv[];
|
|
{
|
|
int Error = NO_ERROR; /* Errorcode der Filezugriffe */
|
|
char LoadFileName[NAMENSGROESSE + 1]; /* Variable fuer Originalfile */
|
|
char SaveFileName[NAMENSGROESSE + 1]; /* Variable fuer Sicherungsfile */
|
|
char key[4] = { 0 };
|
|
uint32_t key_uint32[4] = { 0 };
|
|
int mode = MODE_UNKNOWN; // 0 = unknown, 1 = encrypt, 2 = decrypt
|
|
|
|
if (strcmp(MODE, "encrypt") == 0)
|
|
{
|
|
mode = MODE_ENCRYPT;
|
|
}
|
|
else if (strcmp(MODE, "decrypt") == 0)
|
|
{
|
|
mode = MODE_DECRYPT;
|
|
}
|
|
// mode not recognized
|
|
else
|
|
{
|
|
printf("Modus nicht erkannt. Bitte encrypt oder decrypt bei Aufruf der Software angeben.\n");
|
|
return -1;
|
|
}
|
|
|
|
system("cls");
|
|
puts("XTEA Cipher");
|
|
puts("-----------------------\n");
|
|
puts("Please type your key here: (ENTER key will start the process!)");
|
|
|
|
fflush(stdin); // Flush
|
|
fgets(key, 4, stdin); // Text einlesen (max. 4 Zeichen)
|
|
// convert array to uint32
|
|
int i = 0;
|
|
while (i < 4)
|
|
{
|
|
key_uint32[i] = (uint32_t)key[i++];
|
|
}
|
|
|
|
/* Original file zusammensetzen */
|
|
strcpy(LoadFileName, PFAD);
|
|
strcat(LoadFileName, DATEINAME);
|
|
strcat(LoadFileName, DATEIENDUNG);
|
|
|
|
/* Output file zusammensetzen */
|
|
strcpy(SaveFileName, PFAD);
|
|
strcat(SaveFileName, DATEINAME);
|
|
if (mode == MODE_ENCRYPT)
|
|
{
|
|
strcat(SaveFileName, ENCRYPTED_ADD);
|
|
strcat(SaveFileName, ENCRYPTED_ENDING);
|
|
printf("Encryption processing...");
|
|
Error = encrypt(LoadFileName, SaveFileName, key_uint32);
|
|
}
|
|
else if (mode == MODE_DECRYPT)
|
|
{
|
|
strcat(SaveFileName, DECRYPTED_ADD);
|
|
strcat(SaveFileName, DECRYPTED_ENDING);
|
|
printf("Decryption processing...");
|
|
Error = decrypt(LoadFileName, SaveFileName, key_uint32);
|
|
}
|
|
|
|
system("cls");
|
|
|
|
/* Errors auswerten */
|
|
if (Error == NO_ERROR)
|
|
{
|
|
printf("\n-> Ausgabefile konnte erstellt werden.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("ACHTUNG: Der Sicherungsvorgang konnte nicht umgesetzt werden!\n");
|
|
printf("-> Errorcode: %d\n", Error);
|
|
switch (Error)
|
|
{
|
|
case ERROR_OPEN_LOAD_FILE:
|
|
{ /* Problem mit Originalfile */
|
|
printf("-> Originalfile konnte nicht geoeffnet werden!\n");
|
|
printf(" Lesezugriff fuer Originalfile nicht moeglich!\n");
|
|
break;
|
|
}
|
|
case ERROR_OPEN_SAVE_FILE:
|
|
{ /* Problem mit Sicherungsfile */
|
|
printf("-> Das Ausgabefile konnte nicht erstellt werden!\n");
|
|
printf(" Schreibzugriff fuer Ausgabefile wurde verweigert!\n");
|
|
break;
|
|
}
|
|
case ERROR_OPEN_VERSCHL_FILE:
|
|
{ /* Problem mit PW-File */
|
|
printf("-> Das Passwort-File konnte nicht erstellt werden!\n");
|
|
printf(" Schreibzugriff fuer Passwort-File wurde verweigert!\n");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
system("pause");
|
|
return (0);
|
|
}
|
|
|