Релиз ChameleonLab под Windows и macOS: История о невидимых данных, «зомби»-потоках и секретной игре

от автора

Привет, Хабр!

Хочу поделиться историей разработки и последним обновлением нашего проекта — ChameleonLab. Это кроссплатформенное десктопное приложение для стеганографии и стегоанализа. С момента первого релиза мы не только добавили новые функции, но и столкнулись с целым рядом интересных технических вызовов, решениями которых и хотим поделиться.

И, конечно же, мы наконец-то готовы представить версии как для macOS, так и для Windows.

Программа "ChameleonLab"

Программа «ChameleonLab»

Сила сообщества: работа над ошибками

Когда первая версия нашего приложения разошлась по Хабру и торрент-трекерам, мы получили то, на что даже не рассчитывали — шквал обратной связи. Нам стали приходить десятки отчетов о сбоях, скриншоты с багами, подробные описания недочетов и, что самое ценное, — свежие идеи по развитию.

В этот момент мы поняли, что наша программа далека от совершенства. Стало очевидно: в одиночку можно создать работающий инструмент, но сделать по-настоящему качественный и стабильный продукт без сообщества — невозможно.

Именно ваши отзывы и стали главной движущей силой для этого релиза. Каждое исправление и каждая новая функция — это результат нашего с вами диалога.

Что нового в версии 1.4.0.0?

Мы сосредоточились на улучшении пользовательского опыта и расширении аналитических инструментов.

🎨 Светлая и тёмная темы

Понимая, что разработчики и специалисты по безопасности часто работают по ночам, мы добавили полноценную поддержку светлой и тёмной тем. Интерфейс полностью адаптируется, чтобы снизить нагрузку на глаза.

Программа "ChameleonLab". Светлая тема

Программа «ChameleonLab». Светлая тема

🌍 Локализация (RU/EN)

Приложение теперь доступно на двух языках — русском и английском, с возможностью переключения на лету.

Программа "ChameleonLab". Английская версия

Программа «ChameleonLab». Английская версия

🛡️ Полная автономность

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

HASH: Анализатор хешей

Появился новый инструмент — «Анализатор хешей». Его цель — наглядно продемонстрировать лавинный эффект хеш-функций (MD5, SHA256 и др.). Вы можете ввести две почти одинаковые строки и увидеть, как даже изменение одного бита в исходных данных кардинально меняет финальный хеш, с подсветкой различающихся битов.

Программа "ChameleonLab". Анализатор хешей

Программа «ChameleonLab». Анализатор хешей

Под капотом: Трудности и решения

Путь к этому релизу был тернист.

Битва с «зомби»-потоками при закрытии приложения

Собранное под macOS приложение стабильно падало при закрытии с ошибкой EXC_CRASH (SIGABRT). Причина — некорректное завершение фоновых потоков (для пакетного и HEX-анализа), которые оставались работать после закрытия главного окна.

Решение: Мы полностью переписали метод closeEvent, реализовав надежную и последовательную процедуру остановки потоков: вежливый запрос на завершение (.quit()), ожидание с таймаутом в 3 секунды (.wait(3000)), и только в крайнем случае — принудительное прерывание (.terminate()).

Вот фрагмент кода из ui/main_window.py:

# ui/main_window.py  def closeEvent(self, event):     print("Closing application. Stopping threads...")          # 1. Собираем список всех потенциальных потоков     threads_to_stop = []     # ... (код для безопасного сбора всех потоков) ...      # 2. Корректно останавливаем каждый поток     for thread in threads_to_stop:         if thread.isRunning():             thread.quit()             # Ждем до 3 секунд, иначе завершаем принудительно             if not thread.wait(3000):                 print(f"Thread {thread} did not stop gracefully. Terminating.")                 thread.terminate()                 thread.wait()           print("All threads stopped. Closing.")     self.tray_icon.hide()     event.accept() 

Это полностью решило проблему с падениями при выходе.

Последняя миля — сборка с PyInstaller

Сборка под Windows преподнесла сюрприз: .exe файл получался очень маленьким и не запускался. Оказалось, что в .spec файле была ошибочная опция exclude_binaries=True, которая запрещала включать в сборку все нужные .dll. После ее удаления и корректной настройки datas все заработало.

Финальный .spec файл для Windows теперь выглядит так:

# ChameleonLab.spec (фрагмент)  a = Analysis(     ['main.py'],     datas=[         ('chameleon.png', '.'),   # Иконка         ('styles', 'styles'),     # Папка со стилями         ('icons', 'icons')        # Папка с иконками     ],     # ... )  exe = EXE(     # ...     console=False, # Для GUI-приложения     icon='icons\\cha.ico',     version='version.txt' # Информация о версии из файла ) 

Пасхалка: Классика всегда в моде

Какая же программа без «пасхалки»? Чтобы немного отвлечься от анализа данных, мы встроили в приложение классический Тетрис!

Мы решили не делать очевидную кнопку в меню. Игра спрятана. Скажем так: для самых внимательных и любопытных пользователей наш хамелеон в углу экрана не так прост, как кажется…

Программа "ChameleonLab". Пасхалка

Программа «ChameleonLab». Пасхалка

Системные требования

Чтобы приложение работало стабильно, ваша операционная система должна соответствовать минимальным требованиям.

  • Windows: Windows 10 (версия 1809 и новее) и Windows 11.

    • Почему? Приложение использует современный графический фреймворк PyQt6 (Qt 6), который официально прекратил поддержку Windows 7 и 8.1 для обеспечения лучшей производительности и доступа к новым API.

  • macOS: macOS 11 (Big Sur) и все более новые версии (Monterey, Ventura, Sonoma и т.д.).

    • Почему? Аналогично, Qt 6 требует для работы как минимум macOS Big Sur. Это обеспечивает полную совместимость как с компьютерами на базе Intel, так и с новыми Mac на Apple Silicon (M1/M2/M3).

Заключение

Этот релиз — прямое доказательство того, что сделать по-настоящему качественный продукт без помощи сообщества нереально. Мы продолжим прислушиваться к вам и развивать ChameleonLab. Огромное спасибо за ваше участие и помощь!

Скачать:

  • Скачать последнюю версию на Windows: ChameleonLab 1.4.0.0

  • Скачать последнюю версию на macOS: ChameleonLab 1.4.0.0

  • Наш Telegram-канал: t.me/ChameleonLab

    Будем рады вашим отзывам и вопросам в комментариях!


ссылка на оригинал статьи https://habr.com/ru/articles/941704/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *