Безопасный чат с шифрованием сообщений и графическим интерфейсом.
- Шифрование всех сообщений с использованием Fernet (симметричное шифрование)
- Графический интерфейс на PySide6
- Автоматическое шифрование IP-адреса сервера
- Поддержка никнеймов
- Защищенное хранение ключей в файле
- Звуковые уведомления о новых сообщениях
- Уведомления в системном трее
- История сообщений (последние 100 сообщений)
- Python 3.7+
- PySide6
- cryptography
- playsound
- pystray
- Установите зависимости:
pip install -r requirements.txt- Запустите сервер:
python server.py- Запустите клиент:
python cgs.py- Скачайте последнюю версию из раздела Releases
- Распакуйте архив
- Запустите
safespace.exe
- Запустите
server.pyилиsafespace.exeс параметром--server - Сервер автоматически создаст файл
key.2pkс ключом шифрования и зашифрованным IP-адресом - Раздайте файл
key.2pkклиентам, которые должны подключиться к серверу
- Запустите
cgs.pyилиsafespace.exe - Нажмите кнопку "Выбрать файл key.2pk" и выберите полученный файл ключа
- Нажмите "Подключиться к серверу"
- Введите свой никнейм
- Начните общение!
- Все сообщения шифруются с использованием Fernet (реализация AES)
- IP-адрес сервера хранится в зашифрованном виде
- Ключи шифрования генерируются с использованием криптографически стойкого генератора случайных чисел
- Для каждой сессии создается новый ключ
Для создания исполняемого файла:
- Установите PyInstaller:
pip install pyinstaller- Создайте exe-файл:
pyinstaller --onefile --windowed --icon=icon.ico safespace.pyИсполняемый файл будет создан в папке dist.
-
Если появляется ошибка "Сервер не запущен или недоступен":
- Убедитесь, что
server.pyзапущен - Проверьте файервол
- Убедитесь, что
-
Если появляется ошибка при загрузке ключа:
- Убедитесь, что используете правильный файл
key.2pk - Попробуйте сгенерировать новый ключ, перезапустив сервер
- Убедитесь, что используете правильный файл
-
Если не работает звук:
- Убедитесь, что файл
newmaseg.wavнаходится в той же папке, что и программа - Проверьте, включен ли звук в системе
- Убедитесь, что файл
cgs.py- основной файл клиента (Combined GUI System), объединяющий функционал crypto.py и client_gui.pyserver.py- сервер чата требует crypto.pyrequirements.txt- зависимости проектаkey.2pk- файл с ключом шифрования (генерируется автоматически)crypto.py- модуль с функциями шифрования, теперь включен в cgs.py
client_gui.py- (устаревший) клиент с графическим интерфейсом, теперь включен в cgs.py требует crypto.py
Примечание: Файлы
crypto.pyиclient_gui.pyбольше не используются, так как их функционал объединен вcgs.pyдля упрощения установки и использования.
- Не передавайте файл
key.2pkчерез незащищенные каналы связи - Для каждой новой сессии рекомендуется генерировать новый ключ
- При потере соединения клиент автоматически попытается переподключиться