Skip to content

NICourced/adler_hash

Repository files navigation

Adler32 Checksum Validator

Приложение для проверки целостности файлов с помощью контрольных сумм Adler32. Состоит из сервера и GUI-клиента.

Возможности

  • Вычисление контрольной суммы Adler32 локально
  • Запрос контрольной суммы файла с сервера
  • Сравнение локальной и серверной контрольных сумм
  • Просмотр и выбор файлов из защищённой директории на сервере
  • Загрузка файлов на сервер
  • Система пользователей с разграничением прав

Структура проекта

adler32-test/
├── adler_server      # Сервер
├── adler_gui         # GUI клиент
├── files/            # Директория для файлов на сервере
├── users.dat         # База данных пользователей
├── auth.h            # Модуль аутентификации
├── secure_channel.h  # Протокол передачи данных
├── checksum_worker.* # Вычисление Adler32
└── mainwindow.*      # GUI приложение

Сборка

Автоматическая сборка

chmod +x build.sh
./build.sh

Ручная сборка

Сервер

g++ -std=c++11 -pthread -O2 -o adler_server server.cpp

GUI клиент

qmake adler_gui.pro
make

Требования

См. файл buildreq.txt с полным списком зависимостей и инструкциями по установке для различных дистрибутивов Linux.

Минимальные требования:

  • g++ с поддержкой C++11
  • Qt 5.x
  • make

Запуск

1. Запуск сервера

./adler_server 9999

Сервер запускается на порту 9999 (можно указать другой порт в аргументах командной строки).

При первом запуске создаётся файл users.dat с дефолтным администратором.

2. Запуск клиента

./adler_gui

Использование

Подключение к серверу

  1. Введите хост и порт сервера (по умолчанию: localhost:9999)
  2. Нажмите "Подключиться"

Аутентификация

  1. Введите логин и пароль
  2. Нажмите "Войти"

Учётная запись по умолчанию:

  • Логин: admin
  • Пароль: password

Проверка контрольной суммы

Локальный файл

  1. Нажмите "Обзор..." в секции "Локальный файл"
  2. Выберите файл
  3. Нажмите "Вычислить Adler32"

Файл на сервере

  1. Нажмите "Обзор..." в секции "Файл на сервере"
  2. Выберите файл из списка доступных на сервере
  3. Нажмите "Получить Adler32"

Сравнение

После получения обеих контрольных сумм нажмите "Сравнить локальную и серверную контрольные суммы".

Панель администратора

Панель отображается только для пользователей с правами администратора.

Управление пользователями

  • Создать пользователя: введите логин, пароль, опционально отметьте "Права администратора"
  • Удалить пользователя: выберите из списка и нажмите "Удалить"
  • Нельзя удалить пользователя admin

Смена пароля

  • Администратор может менять пароль любому пользователю
  • Обычный пользователь может менять только свой пароль

Загрузка файлов

  1. Нажмите "Загрузить файл на сервер"
  2. Выберите файл (макс. 1MB)
  3. Файл будет загружен в директорию files/

Протокол безопасности

Формат пакета

+--------+----------+----------+----------+-------------+----------+----------+
| Magic  | Version  | Sequence | Timestamp| Data Length | Data Hash| Checksum |
| 0xAD   | 4 bytes  | 4 bytes  | 4 bytes  | 4 bytes     | 4 bytes  | 4 bytes  |
+--------+----------+----------+----------+-------------+----------+----------+
| Data (variable length)                                                         |
+--------------------------------------------------------------------------------+

Команды протокола

Команда Описание Доступ
AUTH username password Аутентификация Все
HASH filename Получить контрольную сумму Аутентифицированные
LISTFILES Список файлов в files/ Аутентифицированные
UPLOAD filename|data Загрузить файл Аутентифицированные
LISTUSERS Список пользователей Администраторы
ADDUSER username password [admin] Создать пользователя Администраторы
DELUSER username Удалить пользователя Администраторы
CHANGEPASS username new_password Сменить пароль Администраторы / Владелец
QUIT Закрыть соединение Все

Файл пользователей

users.dat хранит данные в формате:

username:password_hash:is_admin

Пример:

admin:d1270c2a:1
user:abc12345:0

Где:

  • password_hash — хэш пароля с солью
  • is_admin1 для администратора, 0 для обычного пользователя

Безопасность

  • Доступ к файлам на сервере ограничен директорией files/
  • Запрещены пути с .. и абсолютные пути
  • Проверка прав доступа для административных команд
  • Сессионная аутентификация (24 часа)

Требования

  • Qt 5.x
  • C++11
  • Linux/Unix

Лицензия

Проект создан в образовательных целях.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors