Привет, Хабр! Мы — команда проекта ChameleonLab, и это история о том, как мы начали создавать полномасштабный образовательный центр по стеганографии и криптографии, отправной точкой которого стал наш desktop-инструмент.
По просьбам пользователей мы начали трансформацию в онлайн-сервис. Расскажем, как мы создали сайт на собственном микро-движке, который работает на JSON-файлах, почему отказались от популярных CMS и как планируем переносить сложную логику с Python в веб.

От Desktop-приложения к образовательному центру
ChameleonLab — это наша попытка сделать сложные концепции стеганографии доступными для всех. Это desktop-приложение для Windows и macOS, которое позволяет не просто прятать данные в файлы (от картинок до DOCX), но и анализировать их, визуализировать LSB-слои, оценивать стойкость паролей и даже слушать музыку, «зашитую» в изображение.

Проект тепло встретили, но почти сразу появился главный запрос от пользователей: «А будет ли онлайн-версия?». Люди хотели иметь доступ к инструментам без установки ПО. Это стало для нас главной мотивацией для создания сайта chalab.ru, который должен стать не просто визиткой, а полноценным образовательным центром.

Технологии: свой PHP-движок на JSON-файлах
Мы сразу отказались от готовых CMS.
Почему не WordPress или любая другая CMS?
- Безопасность. Из нашего опыта разработки, взлом CMS — это просто бич. Из-за огромной кодовой базы и популярности, они становятся главной целью для атак. Сайты постоянно заражают вирусами через уязвимости в плагинах и темах. Наш подход с минималистичным движком и отсутствием базы данных на порядок снижает поверхность атаки.
- Чистота кода. Готовые CMS несут в себе тонны унаследованного кода, тысячи настроек и функций, из которых нам понадобилось бы не больше 5%. Это лишний балласт, который замедляет сайт и усложняет поддержку.
- Отказоустойчивость. Сайт, работающий на файлах, практически невозможно «положить» высокой нагрузкой. У него нет узкого горлышка в виде лимита подключений к базе данных. Каждый запрос обрабатывается независимо, что делает систему крайне стабильной. Такой сайт будет работать даже на самом дешевом хостинге. А его восстановление после сбоя — это простое копирование файлов, без необходимости возиться с дампами баз данных.
Наш собственный микро-движок на PHP построен на нескольких ключевых принципах:
1. Уникальная файловая структура
Весь контент сайта — статьи блога, статические страницы, категории и даже переводы — хранится в JSON-файлах. Это наша единственная «база данных».
/articles/
— содержит.json
файлы для каждой статьи./pages/
—.json
файлы для статичных страниц, таких как документация./data/
— здесь лежат категории, счётчики и другие глобальные данные./lang/
— файлы с переводами интерфейса.
Уникальность подхода в том, что для добавления новой статьи нам даже не нужна админ-панель (хотя она и есть для удобства). Достаточно просто создать новый JSON-файл с нужной структурой и загрузить его в папку /articles/
по FTP. Сайт тут же его «подхватит» и отобразит.
2. Мультиязычность «на лету»
Аналитика показала, что большинство пользователей нашего приложения — англоязычная аудитория. Поэтому мультиязычность стала для нас приоритетом №1. Мы создали систему, которая позволяет переключать язык сайта «на лету», без перезагрузки и сложных запросов.
Тексты интерфейса хранятся в файлах lang/ru.php
и lang/en.php
. А контент самих статей структурирован по языкам внутри JSON-файлов.
Главное преимущество такой технологии в том, что для добавления нового языка (например, немецкого или испанского) нам не нужно менять код движка. Достаточно просто добавить файлы lang/de.php
, lang/es.php
и перевести текстовое содержимое в JSON-файлах. Это позволяет в кратчайшие сроки сделать сайт по-настоящему международным.
3. Как это работает: фрагмент кода
Вот упрощенный пример того, как наш движок загружает статью. Всё предельно просто:
// Получаем ID статьи и язык
$article_id = $_GET['id'];
$lang = $_SESSION['lang'] ?? 'ru';
// Читаем нужный JSON-файл
$json_data = file_get_contents("articles/{$article_id}.json");
$article = json_decode($json_data, true);
// Извлекаем заголовок и контент для нужного языка
$title = $article[$lang]['title'];
$content = $article[$lang]['content'];
// ...дальше просто выводим переменные в HTML-шаблон
Никаких сложных запросов, ORM или кеширования. Просто и быстро.
4. SEO-функционал «из коробки»
Мы сразу реализовали несколько важных SEO-инструментов:
- Генератор
sitemap.xml
: Скрипт, который автоматически сканирует папки с контентом и создает карту сайта для обеих языковых версий. - RSS-ленты: Файл
rss.php
на лету создает RSS-поток для русского и английского языков (rss.php?lang=en
). robots.txt
: Правильно настроен для поисковиков.
Планы на будущее: Философия переноса в веб
Наша конечная цель — не просто сайт, а полноценное веб-приложение. Desktop-версия ChameleonLab написана на Python, и мы не собираемся переписывать всю сложную логику анализа изображений и криптографии на PHP. Наша философия — использовать правильный инструмент для каждой задачи.
Поэтому мы выбрали следующий путь:
- Создание Web API на Python. Мы возьмем ключевые модули из нашего desktop-приложения и «обернем» их в API с помощью легкого фреймворка, такого как Flask. Этот API будет принимать файл, выполнять над ним операции и возвращать результат в формате JSON.
- Интерактивный фронтенд. Наш существующий PHP-сайт будет дополнен JavaScript-компонентами. Пользователь будет загружать файл через интерфейс сайта, JavaScript будет отправлять его на наш Python API, получать результат и наглядно отображать его на странице.
Такой подход позволит нам сохранить всю мощь и производительность Python для сложных вычислений, используя при этом наш легкий PHP-движок для отображения контента. В нашем блоге мы обязательно опубликуем серию статей о технических деталях этого процесса, где подробно расскажем о создании API на Flask и его интеграции с сайтом.
Заключение
ChameleonLab 1.5 — это результат нашего стремления создать интуитивно понятный и мощный инструмент для работы с цифровыми файлами. Мы верим, что он будет полезен как профессионалам в области информационной безопасности, так и энтузиастам, которые только начинают свой путь в увлекательном мире стеганографии.
Спасибо, что остаетесь с нами. Мы постоянно получаем идеи и сообщения об ошибках в нашем Telegram-канале, что позволяет нам постоянно улучшать продукт.
Последнюю версию программы ChameleonLab для Windows и macOS можно скачать на нашем официальном сайте. Программа также доступна на популярных торрент-трекерах.
Источник: https://habr.com/ru/articles/948956/