Привет, Хабр!
Хочу поделиться историей разработки и последним обновлением нашего проекта — ChameleonLab. Это кроссплатформенное десктопное приложение для стеганографии и стегоанализа. С момента первого релиза мы не только добавили новые функции, но и столкнулись с целым рядом интересных технических вызовов, решениями которых и хотим поделиться.
И, конечно же, мы наконец-то готовы представить версии как для macOS, так и для Windows.
Сила сообщества: работа над ошибками
Когда первая версия нашего приложения разошлась по Хабру и торрент-трекерам, мы получили то, на что даже не рассчитывали — шквал обратной связи. Нам стали приходить десятки отчетов о сбоях, скриншоты с багами, подробные описания недочетов и, что самое ценное, — свежие идеи по развитию.
В этот момент мы поняли, что наша программа далека от совершенства. Стало очевидно: в одиночку можно создать работающий инструмент, но сделать по-настоящему качественный и стабильный продукт без сообщества — невозможно.
Именно ваши отзывы и стали главной движущей силой для этого релиза. Каждое исправление и каждая новая функция — это результат нашего с вами диалога.
Что нового в версии 1.4.0.0?
Мы сосредоточились на улучшении пользовательского опыта и расширении аналитических инструментов.
🎨 Светлая и тёмная темы
Понимая, что разработчики и специалисты по безопасности часто работают по ночам, мы добавили полноценную поддержку светлой и тёмной тем. Интерфейс полностью адаптируется, чтобы снизить нагрузку на глаза.
🌍 Локализация (RU/EN)
Приложение теперь доступно на двух языках — русском и английском, с возможностью переключения на лету.
🛡️ Полная автономность
ChameleonLab не требует подключения к интернету. Вся обработка данных, шифрование и анализ происходят исключительно на вашем устройстве, что гарантирует полную конфиденциальность и безопасность ваших данных.
HASH: Анализатор хешей
Появился новый инструмент — «Анализатор хешей». Его цель — наглядно продемонстрировать лавинный эффект хеш-функций (MD5, SHA256 и др.). Вы можете ввести две почти одинаковые строки и увидеть, как даже изменение одного бита в исходных данных кардинально меняет финальный хеш, с подсветкой различающихся битов.
Под капотом: Трудности и решения
Путь к этому релизу был тернист.
Битва с «зомби»-потоками при закрытии приложения
Собранное под 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' # Информация о версии из файла )
Пасхалка: Классика всегда в моде
Какая же программа без «пасхалки»? Чтобы немного отвлечься от анализа данных, мы встроили в приложение классический Тетрис!
Мы решили не делать очевидную кнопку в меню. Игра спрятана. Скажем так: для самых внимательных и любопытных пользователей наш хамелеон в углу экрана не так прост, как кажется…
Системные требования
Чтобы приложение работало стабильно, ваша операционная система должна соответствовать минимальным требованиям.
-
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/
Добавить комментарий