CheatSheetHost
Легковесный веб-сервер с контентным управлением для размещения интерактивных шпаргалок и справочных материалов. Идеально подходит для CTF-заданий (Capture The Flag), реверс-инжиниринга и технической документации. Лучше всего использовать в лабораторных средах, где нужно ограничить или отказаться от внешнего трафика, сохраняя доступ к полезному материалу.
*** Я немного укрепил скрипт, но перед использованием и/или развёртыванием в лабораторной среде следует проверить его ***
Возможности
- Простое JSON-содержимое: Определяйте шпаргалки с помощью легко редактируемых JSON-файлов
- Адаптивный дизайн: Работает на десктопах, планшетах и мобильных устройствах
- Ретро-терминальная тема: Ностальгическая эстетика зелёного текста на чёрном фоне, как у ЭЛТ-мониторов
- Доступ по LAN: Делитесь шпаргалками по локальной сети
- Несколько типов разделов: Таблицы, текстовые блоки, фрагменты кода и ASCII-таблицы
- Горячая перезагрузка: Обновите браузер, чтобы сразу увидеть изменения
- Многопоточный сервер: Обрабатывает несколько одновременных соединений
Быстрый старт
Предварительные требования
Установка
-
Клонируйте или скачайте этот репозиторий:
git clone https://github.com/JimmyAder/CheatSheetHost.git
cd CheatSheetHost
-
Запустите сервер:
python3 host_content_site.py
-
Откройте браузер по адресу http://127.0.0.1:8766
Сервер автоматически создаст файлы по умолчанию, если они отсутствуют.
Ссылки
Использование
Доступ к сайту
- Локальный доступ:
http://127.0.0.1:8766
- Сетевой доступ:
http://[ваш-локальный-ip]:8766 (отображается при запуске)
Навигация
- Главная страница: Список всех доступных шпаргалок
- Отдельные страницы: Нажмите на шпаргалку, чтобы просмотреть её содержимое
- Навигационная панель: Быстрые ссылки на все страницы
API-эндпоинт
GET /api/pages: Возвращает JSON-список доступных слаг-идентификаторов страниц
Создание и изменение шпаргалок
Шпаргалки хранятся в виде JSON-файлов в каталоге pages/. Каждый файл определяет одну страницу со следующей структурой:
{
"slug": "my-cheatsheet",
"title": "My Custom Cheatsheet",
"subtitle": "A brief description of this cheatsheet",
"sections": [
{
"type": "table",
"title": "Section Title",
"items": [
{"key": "Command", "value": "Description"},
{"key": "Another", "value": "Command"}
]
},
{
"type": "text",
"title": "Notes",
"text": "Some explanatory text here."
},
{
"type": "code",
"title": "Example Code",
"language": "python",
"code": "print('Hello, World!')"
}
],
"ascii": {
"title": "ASCII Table",
"blocks_across": 6,
"min_width_px": 920
}
}
Типы разделов
- table: Пары «ключ-значение» в табличном формате
- text: Простой текст (поддерживает переносы строк)
- code: Блоки кода с подсветкой синтаксиса
- ascii: Специальная таблица символов ASCII (опционально)
Именование файлов
- Файлы следует называть описательно (например,
gdb-cheatsheet.json)
- Поле
slug определяет путь URL (автоматически генерируется из имени файла, если не указано)
- JSON должен быть корректным; невалидные файлы пропускаются с предупреждением
Настройка
Стилизация
Отредактируйте site_template.html, чтобы изменить внешний вид:
- CSS-переменные в
:root для цветов и макета
- Адаптивные контрольные точки для разных размеров экрана
- Элементы дизайна в стиле терминала
Конфигурация сервера
Параметры командной строки:
python3 host_content_site.py --host 0.0.0.0 --port 8080
--host: IP-адрес для привязки (по умолчанию: 0.0.0.0)
--port: Номер порта (по умолчанию: 8766)
Структура проекта
CheatSheetHost/
├── host_content_site.py # Основной скрипт сервера
├── site_template.html # HTML-шаблон и CSS
├── pages/ # JSON-файлы шпаргалок
│ ├── ctf-cheatsheet.json
│ ├── gdb-cheatsheet.json
│ └── ...
└── README.md # Этот файл
Включённые шпаргалки
- CTF Master Sheet: Регистры, системные вызовы и распространённые техники
- Bitwise / Crypto Pattern Recognition: Справочник по распознаванию битовых операций, кодировщиков, хэшей и криптошаблонов
- C / C++ for Reverse Engineering: Практический справочник по C и C++ для чтения вывода дизассемблера и реконструкции логики
- GDB/x64dbg: Команды и рабочие процессы отладчика
- Ghidra: Шорткаты инструментов реверс-инжиниринга
- Helpful Links & Study References: Реверс-инжиниринг, CTF, криптография, внутреннее устройство двоичных файлов и тренировочные платформы
- Helpful Linux Commands for Reverse Engineering: Полезные команды Linux для триажа, инспекции двоичных файлов, отладки и анализа файлов
- IDA Pro: Горячие клавиши и возможности дизассемблера
- Neovim: Команды и настройка редактора
- Python for Reverse Engineering: Практический справочник по Python для парсинга, декодирования и восстановления алгоритмов
- WinDbg: Команды отладки Windows
- x64 Assembly: Справочник инструкций
- x64 Shellcode Syscalls: Номера системных вызовов
- x86-32 Assembly: Справочник 32-битной ассемблерной архитектуры
Вклад в проект
Добавление новых шпаргалок
- Создайте новый JSON-файл в каталоге
pages/
- Следуйте описанной выше структуре JSON
- Проверьте, обновив браузер
- Отправьте pull request
Улучшение кода
- Сервер написан с использованием модуля
http.server из Python
- Поддержка многопоточности для конкурентных запросов
- Минимум зависимостей (только стандартная библиотека)
Сообщение об ошибках
- Проверьте журналы сервера на предмет ошибок парсинга JSON
- Убедитесь, что JSON-файлы корректны
- Протестируйте на разных браузерах/устройствах
Разработка
Запуск из исходного кода
python3 host_content_site.py
Тестирование изменений
- Редактируйте JSON-файлы и обновляйте браузер
- Изменяйте
site_template.html для стилизации
- Перезапускайте сервер для изменений в Python-коде
Лицензия
Этот проект является открытым исходным кодом. Можете использовать, изменять и распространять.
Поддержка
- По вопросам или проблемам откройте issue на GitHub
- Приветствуются вклады через pull request
- Поставьте звезду репозиторию, если он оказался полезным!