From c0d863ef48bda0f785fb095241fd0186b3a4f8eb Mon Sep 17 00:00:00 2001 From: german Date: Sun, 28 Dec 2025 19:43:22 +0400 Subject: [PATCH] CRC and REM. USERS --- DOCS.md | 33 ++++++++--------- Makefile | 10 +++++- api_example | Bin 21752 -> 21992 bytes api_example.c | 8 ++--- api_example_user.bin | Bin 195 -> 214 bytes key.sig | Bin 256 -> 0 bytes user.bin | Bin 195 -> 0 bytes user_test.bin | 0 vipre-cryptor | Bin 21760 -> 21992 bytes vipre-manager.h | 84 ++++++++++++++++++++++++++++++++++++------- 10 files changed, 102 insertions(+), 33 deletions(-) delete mode 100644 key.sig delete mode 100644 user.bin create mode 100644 user_test.bin diff --git a/DOCS.md b/DOCS.md index bc11944..7b63925 100644 --- a/DOCS.md +++ b/DOCS.md @@ -2,8 +2,8 @@ - [Установка](#установка) - [Шифрование](#шифрование) - [Регистрация ключа](#регистрация-ключа) - - [Создание пользователя и шифрование](#создание-пользователя-и-шифрование) - - [Чтение данных пользователя и расшифровка](#чтение-данных-пользователя-и-расшифровка) + - [Команда шифрования](#команда-шифрования) + - [Расшифровка](#расшифровка) - [Опции команды](#опции-команды) - [API](#api) ## Установка @@ -27,7 +27,7 @@ make update vipre-cryptor --version ``` ## Шифрование -Для шифрования программа требует создать локального пользователя, зарегистрировать электронный ключ и привязать к пользователю зашифрованный ключом файл. +Для шифрования программа требует зарегистрировать электронный ключ и привязать к нему зашифрованный файл. ## Регистрация ключа Ключ можно создать с помощью OpenSSL: ```bash @@ -41,18 +41,16 @@ openssl rand -base64 30 vipre-cryptor --sig ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig ``` Данная команда запросит ваш ключ и запишет его в файл **ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig** особым образом. -## Создание пользователя и шифрование -Создание пользователя и шифрование файла выглядит следующим образом: +## Команда шифрования +Шифрование файла выглядит следующим образом: ```bash -vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --create-user ИМЯ_ПОЛЬЗОВАТЕЛЯ.bin --file-input ФАЙЛ_ДЛЯ_ШИФРОВАНИЯ +vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --create-user ИМЯ_ЗАШИФРОВАННОГО_ФАЙЛА.bin --file-input ФАЙЛ_ДЛЯ_ШИФРОВАНИЯ ``` -Данная команда запросит логин и пароль нового пользователя. -## Чтение данных пользователя и расшифровка +## Расшифровка Для чтения данных необходимо выполнить команду: ```bash -vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --user-data ИМЯ_ПОЛЬЗОВАТЕЛЯ.bin --file-out ФАЙЛ_РАСШИФРОВАННЫХ_ДАННЫХ +vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --user-data ИМЯ_ЗАШИФРОВАННОГО_ФАЙЛА.bin --file-out ФАЙЛ_РАСШИФРОВАННЫХ_ДАННЫХ ``` -Данная команда запросит логин и пароль пользователя. ## Опции команды Доступны опции: - **--help** @@ -62,12 +60,15 @@ vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --user-data ИМЯ_ПОЛЬ - **--sig** - **--file-input** - **--file-out** + - **--type=users** Все опции можно сокращать до одного знака, например: ```ini # Опции "--file-input" и "--file-out" можно сократить до "--file" или просто "-f" -"--help" - "-h" -"--version" - "-v" +[options] +"--help" = "-h" +"--version" = "-v" +"--type=users" = "-t" ``` ## API У библиотеки есть **API**: @@ -76,11 +77,11 @@ vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --user-data ИМЯ_ПОЛЬ #include "vipre-manager.h" int main(void) { - __set_api_mode("admin", "1234", "signature_key"); + __set_api_mode(NULL, NULL, "signature_key"); __create_sig("api_example_key.sig"); - __create_user("api_example_key.sig", "api_example_user.bin", "example.txt"); - __read_user("api_example_key.sig", "api_example_user.bin", "example_out.txt"); + __create_user("api_example_key.sig", "api_example_file.bin", "example.txt"); + __read_user("api_example_key.sig", "api_example_file.bin", "example_out.txt"); __api_detach(); return EXIT_SUCCESS; } -``` +``` \ No newline at end of file diff --git a/Makefile b/Makefile index 60c32c0..3d62f1f 100644 --- a/Makefile +++ b/Makefile @@ -29,16 +29,24 @@ REMOVE=rm INSTALL_NAME=/usr/local/bin/vipre-cryptor MODE=chmod +x RUN_OF=./ +API_NAME=api_example.c +API_OUT_NAME=api_example -.PHONY: clear run install uninstall update +.PHONY: clear run install uninstall update api run-api $(OUTPUT_NAME) $(OUTPUT_NAME): $(INPUT_NAME) $(CC) $(OPTIONS) $(INPUT_NAME) -o $(OUTPUT_NAME) +api: + $(CC) $(OPTIONS) $(API_NAME) -o $(API_OUT_NAME) clear: $(REMOVE) -f $(OUTPUT_NAME) + $(REMOVE) -f $(API_OUT_NAME) run: $(MODE) $(OUTPUT_NAME) $(RUN_OF)$(OUTPUT_NAME) +run-api: + $(MODE) $(API_OUT_NAME) + $(RUN_OF)$(API_OUT_NAME) install: $(COPY) $(OUTPUT_NAME) $(INSTALL_NAME) uninstall: diff --git a/api_example b/api_example index 008cd2bf381d654830a817313da8211603fbeb57..53a661f17c29a1f0be4bf8463eadf234a0bd97d5 100755 GIT binary patch literal 21992 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 O>_5^zoH3bL<$nSBIKGzv delta 6249 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 BV~hX* diff --git a/api_example.c b/api_example.c index 362b693..c659492 100644 --- a/api_example.c +++ b/api_example.c @@ -2,10 +2,10 @@ #include "vipre-manager.h" int main(void) { - __set_api_mode("admin", "1234", "signature_key"); + __set_api_mode(NULL, NULL, "signature_key"); __create_sig("api_example_key.sig"); - __create_user("api_example_key.sig", "api_example_user.bin", "example.txt"); - __read_user("api_example_key.sig", "api_example_user.bin", "example_out.txt"); + __create_user("api_example_key.sig", "api_example_file.bin", "example.txt"); + __read_user("api_example_key.sig", "api_example_file.bin", "example_out.txt"); __api_detach(); return EXIT_SUCCESS; -} +} \ No newline at end of file diff --git a/api_example_user.bin b/api_example_user.bin index 1bd6e9116725102a976c0f6c50b5f097de0d4e4f..a2a3e5e1015848a5903f283735e739a5a9cabcdb 100644 GIT binary patch delta 36 mcmX@ic#Tmew=%x8IJJliO2-!@78jT27o~8$GPIb;xeEXVJq}F( delta 17 Ycmcb{c$kqhF(o%MkIT@=c%sZM05n+zwEzGB diff --git a/key.sig b/key.sig deleted file mode 100644 index 2eed4df91abef416c802c40ac872ab5a9b1742f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmV+b0ssEA=ct5UZ`R%IL_y=He^zBNO8V2s!qPL?3Jq)~$fAky;=h-!ujNq_A=$u{ z8uad0NeHzhTBH%$8T`q4)B+$7f-)a`*C+B_HwXDt=(F=Xvd=@l?Dv>$>BSCW&SrJJ zN9&ALg{ew1^N|D^%2 zECl{|sThHeDkBVArqE$_acJ<-Q!sM593J5Gz!}Z?O3SK3HEYW^XVp0$l3Sdca?He!f;!)u61jC(ZKw> zKYN*MJ#ypoOGQkg9+k4hy^%G~>0Y&~aWUS}Ns7B}4T!<-|3&~e{3pl*_roABSap}0 zTL-9hYe><+1H0GUGKC6qP4lEh%E!F@vK76NQ&n*MR5ATo+>>h_83^1mY*tEY3pcwb x$Sn7@AVy7e!s#isY;9I4vA_enmVh>K@ACl*H;o)Syf3oE?dLT`>0q^iA~ETeVI}|o diff --git a/user_test.bin b/user_test.bin new file mode 100644 index 0000000..e69de29 diff --git a/vipre-cryptor b/vipre-cryptor index 0ff39768b74a8ddb48d892632c1855b999815cba..6dec0cf7e5e6a5b42531f8fe0f4fc361c9e41afb 100755 GIT binary patch literal 21992 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 delta 6093 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 F_+JM7LOcKf diff --git a/vipre-manager.h b/vipre-manager.h index 5eea7b5..69cb1c7 100644 --- a/vipre-manager.h +++ b/vipre-manager.h @@ -28,6 +28,9 @@ #include #include +#define LIB_TRUE 1 +#define LIB_FALSE 0 + #define VERSION "1.0" #define ERROR_FILE_OUT "unnamed_out_file.csv" @@ -39,6 +42,7 @@ char* __YEFWHD_api_login = NULL; char* __YEFWHD_api_password = NULL; char* __YEFWHD_api_datakey = NULL; char __YEFWHD_data_type = '\0'; +bool __YEFWHD_users = false; #define VIPRE_API_MODE 'A' @@ -55,6 +59,10 @@ void __set_api_mode(char* login, char* password, char* data_key) { __YEFWHD_data_type = VIPRE_API_MODE; } +void __use_users(bool is_use_users) { + __YEFWHD_users = is_use_users; +} + void _put_vipre_help(void) { puts ( "Vipre Console Cryptor V " VERSION "\n" @@ -190,7 +198,7 @@ int __create_user(char* file, char* user_file, char* cry_file) { char user_login[32]; char password[32]; int c; - if (__YEFWHD_data_type != VIPRE_API_MODE) { + if (__YEFWHD_data_type != VIPRE_API_MODE && __YEFWHD_users == true) { fputs("Login: ", stdout); size_t cnt = 0; while((c=getchar())!=EOF && cnt < 31 && c != '\n') { @@ -221,10 +229,15 @@ int __create_user(char* file, char* user_file, char* cry_file) { return EXIT_FAILURE; } } else { - strncpy(user_login, __YEFWHD_api_login, 31); - strncpy(password, __YEFWHD_api_password, 31); - user_login[31] = '\0'; - password[31] = '\0'; + if (__YEFWHD_users == false) { + strcpy(user_login, "admin"); + strcpy(password, "1234"); + } else { + strncpy(user_login, __YEFWHD_api_login, 31); + strncpy(password, __YEFWHD_api_password, 31); + user_login[31] = '\0'; + password[31] = '\0'; + } } fputs(user_login, wp); putc('\n', wp); fputs(password, wp); putc('\n', wp); @@ -232,6 +245,22 @@ int __create_user(char* file, char* user_file, char* cry_file) { unsigned long file_size = ftell(fw); rewind(fw); unsigned long count = 0; + + unsigned char crc = 0xFF; + while (count < file_size) { + crc ^= (unsigned char)getc(fw); + unsigned short int i = 0; + while (i < 8) { + crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1; + i ++; + } + count ++; + } + + putc((char)crc, wp); + fprintf(wp, "%lu\n", count); + rewind(fw); + count = 0; while (count < file_size) { c = (char)getc(fw); c = arr[(unsigned char)c]; @@ -263,21 +292,33 @@ int __read_user(char* file, char* user_file, char* cry_file) { char password[32]; char correct_password[32]; char* res; + unsigned char crc_file = 0xFF; res = fgets(correct_login, 32, up); res = fgets(correct_password, 32, up); - if (__YEFWHD_data_type != VIPRE_API_MODE) { + crc_file = (unsigned char)fgetc(up); + unsigned long read_sum = 0; + res = (char*)(unsigned long int)fscanf(up, "%lu\n", &read_sum); + if (__YEFWHD_data_type != VIPRE_API_MODE && __YEFWHD_users == true) { fputs("Login: ", stdout); res = fgets(user_login, 32, stdin); fputs("Password: ", stdout); res = fgets(password, 32, stdin); } else { - strncpy(user_login, __YEFWHD_api_login, 31); - strncpy(password, __YEFWHD_api_password, 31); - user_login[31] = '\0'; - password[31] = '\0'; - + if (__YEFWHD_users == false) { + strcpy(user_login, "admin"); + strcpy(password, "1234"); + } else { + strncpy(user_login, __YEFWHD_api_login, 31); + strncpy(password, __YEFWHD_api_password, 31); + user_login[31] = '\0'; + password[31] = '\0'; + } } - if (res); + if (res == NULL) { + puts("\033[1mvipre-cryptor: \033[91mThe file is in the wrong format!\033[0m"); + free(arr); + return EXIT_FAILURE; + }; __nl_del(user_login); __nl_del(password); __nl_del(correct_login); __nl_del(correct_password); if (user_login[strlen(user_login) - 1] == '\n') user_login[strlen(user_login) - 1] = '\0'; @@ -292,12 +333,26 @@ int __read_user(char* file, char* user_file, char* cry_file) { fseek(up, save_pos, SEEK_SET); unsigned long pos = 0; int c; + unsigned char crc = 0xFF; while (pos < data_size) { c = getc(up); c = __find_arr_index(c, arr, arr_len); __refresh_data(arr, arr_len, abs(arr[0])); putc(c, fw); pos ++; + crc ^= (unsigned char)c; + unsigned short int i = 0; + while (i < 8) { + crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1; + i ++; + } + + } + + if (crc != crc_file || read_sum != pos) { + puts("\033[1mvipre-cryptor: \033[91mVerification error! Request the data again.\033[0m"); + free(arr); + return EXIT_FAILURE; } fclose(fp); fclose(up); @@ -314,6 +369,7 @@ int parse_file_data(int argc, char** argv) { bool create_user = false; bool create_sig = false; bool read_user = false; + bool users = false; char* cry_file = NULL; bool read_cry_file = false; while (n < argc) { @@ -342,6 +398,9 @@ int parse_file_data(int argc, char** argv) { case 'f': read_cry_file = true; break; + case 't': + users = true; + break; default: printf("\033[1mvipre-cryptor: \033[91mUnknown option \"%s\"!\033[0m\n", str); return EXIT_FAILURE; @@ -355,6 +414,7 @@ int parse_file_data(int argc, char** argv) { } n ++; } + __YEFWHD_users = users; if (file == NULL) { puts("\033[1mvipre-cryptor: \033[91mNo input file!\033[0m"); return EXIT_FAILURE;