ЧАСТЬ 1 | Создание защищенного сервера баз данных на C

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Создание защищенного сервера баз данных на C
В этой статье будет рассмотрен первый этап создания зашифрованного и защищенного сервера баз данных на C для обработки и защиты коммуникаций c2 с веб-сайтом и серверной системой. Мы будем использовать C и PHP для взаимодействия с нашей базой данных, сервер базы данных будет написан на c, а обработка взаимодействия с интерфейсом будет осуществляться с помощью PHP. Я предполагаю, что у вас есть некоторые предварительные знания обоих языков. К концу этой статьи мы сможем создать сервер базы данных, который хранит лицензионные ключи пользователей защищенным и зашифрованным способом, который будет абсолютно бесполезен для злоумышленника в случае взлома, потому что все будет зашифровано и практически необратимо, а также локально контролироваться с полными полномочиями.

ОСНОВНЫЕ ЭЛЕМЕНТЫ ПРОЦЕДУРЫ
ХЭШИРОВАНИЕ + ШИФРОВАНИЕBCRYPT && XOR
Данных ХранилищеSQLITE3
C2 КоммуникацияSOCKETS
ТИП ПОДКЛЮЧЕНИЯПАРАЛЛЕЛЬНЫЙ | МНОГОПОТОЧНЫЙ

ДАННЫХ СЕРВЕР (C)
1. C исходный файл и необходимые заголовки
Мы начнем с включения необходимых библиотек c, необходимых для всего процесса
server.c
C: Скопировать в буфер обмена
Код:
#include<stdlib.h>
#include<stdio.h>
#include<sqlite3.h>
#include<string.h>
#include<bcrypt.h>
#include<unistd.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<stdint.h>
#include<errno.h>
#include<sys/types.h>
#include<pthread.h>
#include<locale.h>

2. Кода Оптимизация
Здесь мы добавим c preprocessor macros для оптимизации кода и ускорения компиляции gcc. Не все компиляторы поддерживают некоторые из этих macros.

C: Скопировать в буфер обмена
Код:
#ifndef NDEBUG
#define NDEBUG
#endif
#if defined NDEBUG
#pragma GCC optimize("02")
#endif

3. Данных Хранилище
Мы должны создать файл хранилища базы данных, который будет использоваться для локального размещения нашей базы данных, и этот метод эффективен, потому что нам не понадобится внешний сервер базы данных, размещенный на сервере, к которому у нас нет полного доступа, поскольку это локальное хранилище базы данных, у нас есть полный доступ к нашей базе данных. Давайте объявим нашу структуру и функцию, которые будут использоваться для создания нашей локальной базы данных SQL

C: Скопировать в буфер обмена
Код:
static uint8_t DatabaseInitializer(void);
typedef struct{
uint32_t ServerHandler;
struct sockaddr_in ServerConnectionInfo;
struct sockaddr_in ClientConnectionInfo;
uint32_t ServerConnectionHandler; 
pthread_t ConnectionDispatcher; 
char ReceivedPackets[(sizeof(char)*0x400)*0B0001010];
sqlite3* DBInit; 
uint16_t DBInitModifier; 
uint64_t SCLoad;
sqlite3* DatabaseHandler;
char* DBERR; 
uint16_t DBAccessModifier;
uint8_t SOLOPT;
}VirtualMemory;

Теперь давайте напишем определение нашей функции

C: Скопировать в буфер обмена
Код:
static uint8_t DatabaseInitializer(void){
VirtualMemory *vm_db=(VirtualMemory*)malloc(sizeof(VirtualMemory));   //Выделите достаточно памяти для структуры
memset(vm_db,0B0000,VirtualMemory);   //Обнуляем структуру
if((vm_db->DBInitModifier=sqlite3_open("UserLicense.db",&vm_db->DBInit))!=SQLITE_OK){ // Создаем наш файл локальной базы данных (LDF)
fprintf(stderr,"DB_INIT_ERROR : %d",errno);
return errno;// Возвращает errno как значение при сбое
    }
if((vm_db->DBInitModifier=sqlite3_exec(vm_db->DBInit,"CREATE TABLE USERLICENSE(USER INT PRIMARY KEY NOT NULL,LICENSE CHAR(18));",(void*)0B0000,(void*)0B0000,&vm_db->DBERR))!=SQLITE_OK){// Создаем нашу таблицу USERLICENSE для хранения пользовательских лицензий
fprintf(stderr,"DB_INITTB_ERROR : %d : ТИП : %s",errno,vm_db->DBERR);
return errno;// Возвращает errno как значение при сбое
    }
return 0x0;//
}

Давайте инициализируем нашу функцию в main блоке

C: Скопировать в буфер обмена
Код:
VirtualMemory *vm=(VirtualMemory*)malloc(sizeof(VirtualMemory));
memset(vm,0B0000000000000000,sizeof(VirtualMemory));
DatabaseInitializer()==0B0000?:exit(EXIT_FAILURE);

Теперь когда мы успешно создали нашу локальную базу данных давайте перейдем к следующим главам посвященным инициализации сокетов и шифрованию
оставляйте свои замечания ниже я отвечу на каждый вопрос настолько насколько смогу чтобы устранить любые недоразумения.
 
Сверху Снизу