Как стать автором
Поиск
Написать публикацию
Обновить

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

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров304

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

Хочу поделиться историей разработки и последним обновлением нашего проекта — 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

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

Теги:
Хабы:
+5
Комментарии5

Публикации

Ближайшие события