CheatSheetHost
Un servidor web ligero y basado en contenido para alojar hojas de trucos interactivas y materiales de referencia. Perfecto para desafíos CTF (Capture The Flag), ingeniería inversa y documentación técnica. Es ideal para usar en laboratorios donde se desea limitar o prescindir del tráfico externo mientras se tiene acceso a material útil.
*** He endurecido un poco el script, pero deberías revisarlo antes de usarlo y/o desplegarlo en un entorno de laboratorio ***
Características
- Contenido simple basado en JSON: Define hojas de trucos usando archivos JSON fáciles de editar
- Diseño adaptable: Funciona en escritorio, tablet y dispositivos móviles
- Tema terminal retro: Estética nostálgica de monitor CRT verde sobre negro
- Accesible en LAN: Comparte hojas de trucos a través de tu red local
- Múltiples tipos de secciones: Tablas, bloques de texto, fragmentos de código y tablas ASCII
- Recarga en caliente: Actualiza el navegador para ver los cambios al instante
- Servidor con hilos: Maneja múltiples conexiones simultáneas
Inicio rápido
Requisitos previos
Instalación
-
Clona o descarga este repositorio:
git clone https://github.com/JimmyAder/CheatSheetHost.git
cd CheatSheetHost
-
Ejecuta el servidor:
python3 host_content_site.py
-
Abre tu navegador en http://127.0.0.1:8766
El servidor creará automáticamente archivos predeterminados si no existen.
Enlaces
Uso
Acceder al sitio
- Acceso local:
http://127.0.0.1:8766
- Acceso en red:
http://[tu-ip-local]:8766 (se muestra al inicio)
Navegación
- Página de inicio: Lista todas las hojas de trucos disponibles
- Páginas individuales: Haz clic en cualquier hoja de trucos para ver su contenido
- Barra de navegación: Enlaces rápidos a todas las páginas
Endpoint de API
GET /api/pages: Devuelve una lista JSON de los slugs de página disponibles
Crear y modificar hojas de trucos
Las hojas de trucos se almacenan como archivos JSON en el directorio pages/. Cada archivo define una sola página con la siguiente estructura:
{
"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
}
}
Tipos de secciones
- table: Pares clave-valor mostrados en formato de tabla
- text: Contenido de texto plano (soporta saltos de línea)
- code: Bloques de código con resaltado de sintaxis
- ascii: Tabla especial de caracteres ASCII (opcional)
Nombres de archivos
- Los archivos deben nombrarse de forma descriptiva (por ejemplo,
gdb-cheatsheet.json)
- El campo
slug determina la ruta URL (se genera automáticamente a partir del nombre del archivo si se omite)
- El JSON debe ser válido; los archivos inválidos se omiten con una advertencia
Personalización
Estilo
Edita site_template.html para modificar la apariencia:
- Variables CSS en
:root para colores y diseño
- Puntos de interrupción adaptables para diferentes tamaños de pantalla
- Elementos de diseño con estilo terminal
Configuración del servidor
Opciones de línea de comandos:
python3 host_content_site.py --host 0.0.0.0 --port 8080
--host: Dirección IP a la que vincularse (predeterminado: 0.0.0.0)
--port: Número de puerto (predeterminado: 8766)
Estructura del proyecto
CheatSheetHost/
├── host_content_site.py # Script principal del servidor
├── site_template.html # Plantilla HTML y CSS
├── pages/ # Archivos JSON de hojas de trucos
│ ├── ctf-cheatsheet.json
│ ├── gdb-cheatsheet.json
│ └── ...
└── README.md # Este archivo
Hojas de trucos incluidas
- CTF Master Sheet: Registros, llamadas al sistema y técnicas comunes
- Bitwise / Crypto Pattern Recognition: Referencia para identificar operaciones bit a bit, codificadores, hashes y patrones criptográficos
- C / C++ for Reverse Engineering: Referencia práctica de C y C++ para leer la salida del descompilador y reconstruir lógica
- GDB/x64dbg: Comandos y flujos de trabajo de depuración
- Ghidra: Accesos directos de la herramienta de ingeniería inversa
- Helpful Links & Study References: Ingeniería inversa, CTFs, criptografía, internos binarios y plataformas de práctica
- Helpful Linux Commands for Reverse Engineering: Herramientas comunes de línea de comandos de Linux para triaje, inspección de binarios, depuración y análisis de archivos
- IDA Pro: Teclas rápidas y características del desensamblador
- Neovim: Comandos y configuración del editor
- Python for Reverse Engineering: Referencia práctica de Python para analizar, decodificar y reconstruir algoritmos
- WinDbg: Comandos de depuración de Windows
- x64 Assembly: Referencia de instrucciones
- x64 Shellcode Syscalls: Números de llamadas al sistema
- x86-32 Assembly: Referencia de ensamblador de 32 bits
Contribuir
Agregar nuevas hojas de trucos
- Crea un nuevo archivo JSON en el directorio
pages/
- Sigue la estructura JSON descrita anteriormente
- Prueba actualizando el navegador
- Envía una solicitud de extracción (pull request)
Mejorar el código
- El servidor está construido con el módulo
http.server de Python
- Soporte de hilos para solicitudes concurrentes
- Mínimas dependencias (solo biblioteca estándar)
Reportar incidencias
- Revisa los registros del servidor para errores de análisis JSON
- Asegúrate de que los archivos JSON sean válidos
- Prueba en diferentes navegadores/dispositivos
Desarrollo
Ejecutar desde el código fuente
python3 host_content_site.py
Probar cambios
- Edita archivos JSON y actualiza el navegador
- Modifica
site_template.html para cambios de estilo
- Reinicia el servidor para cambios en el código Python
Licencia
Este proyecto es de código abierto. Siéntete libre de usarlo, modificarlo y distribuirlo.
Soporte
- Para preguntas o incidencias, abre un issue en GitHub
- Las contribuciones son bienvenidas mediante solicitudes de extracción
- Dale una estrella al repositorio si te resulta útil