{"id":50512927,"url":"https://github.com/vmvarela/iptablestutorial","last_synced_at":"2026-06-02T21:32:56.479Z","repository":{"id":359975026,"uuid":"1248219328","full_name":"vmvarela/iptablestutorial","owner":"vmvarela","description":"Juego TUI para aprender iptables/Netfilter a través de una metáfora de castillo medieval","archived":false,"fork":false,"pushed_at":"2026-05-24T11:08:37.000Z","size":117,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-24T13:08:35.702Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vmvarela.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-24T10:54:32.000Z","updated_at":"2026-05-24T11:07:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vmvarela/iptablestutorial","commit_stats":null,"previous_names":["vmvarela/iptablestutorial"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vmvarela/iptablestutorial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmvarela%2Fiptablestutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmvarela%2Fiptablestutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmvarela%2Fiptablestutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmvarela%2Fiptablestutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vmvarela","download_url":"https://codeload.github.com/vmvarela/iptablestutorial/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmvarela%2Fiptablestutorial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33838216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-02T21:32:54.264Z","updated_at":"2026-06-02T21:32:56.471Z","avatar_url":"https://github.com/vmvarela.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Silvia y el Castillo de las Reglas\n\n[![CI](https://github.com/vmvarela/iptablestutorial/actions/workflows/ci.yml/badge.svg)](https://github.com/vmvarela/iptablestutorial/actions/workflows/ci.yml)\n[![Go version](https://img.shields.io/github/go-mod/go-version/vmvarela/iptablestutorial)](go.mod)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nUn juego interactivo de terminal que enseña `iptables` y el modelo Netfilter de Linux a través de una metáfora medieval. Eres Silvia, guardiana de un castillo; los paquetes de red son mensajeros de reinos lejanos, y las reglas de firewall son los guardias que decides colocar en las puertas.\n\n![Captura del juego](docs/screenshot.png)\n\n## Quick Start\n\n```bash\ngo install github.com/vmvarela/iptablestutorial/cmd/silvia-castillo@latest\nsilvia-castillo\n```\n\nO descarga el binario precompilado desde [Releases](https://github.com/vmvarela/iptablestutorial/releases).\n\nEl juego arranca directamente en el terminal. No requiere root, no toca `iptables` del sistema — todo es simulado en memoria.\n\n## Cómo se juega\n\nEl juego tiene 8 niveles de dificultad creciente. Cada nivel plantea una misión de firewall:\n\n1. Lee la historia y la misión en el panel **Historia** (izquierda).\n2. Escribe comandos `iptables` reales en la **Consola** (parte inferior).\n3. Envía un mensajero con `Ctrl+E` o escribiendo `enviar mensajero`.\n4. El panel **Rastro del Mensajero** te muestra qué cadena procesó el paquete y con qué veredicto.\n5. Cuando todos los mensajeros atraviesen el castillo según lo esperado, pasas al siguiente nivel.\n\n```\n# Ejemplo: bloquear tráfico UDP al puerto 666\n-A INPUT -p udp --dport 666 -j DROP\n```\n\nNo necesitas escribir `iptables` al principio — el juego acepta la sintaxis de opciones directamente.\n\n### Niveles\n\n| # | Título | Concepto |\n|---|--------|----------|\n| 1 | El Primer Día en el Castillo | Observar sin reglas |\n| 2 | El Primer Guardia en la Puerta | Primera regla DROP |\n| 3 | Bloquear por Tipo | Coincidencia por protocolo |\n| 4 | Política DROP | Política por defecto |\n| 5 | Los Tres Portones | Múltiples puertos y cadenas |\n| 6 | La Barbacana | Cadenas de usuario |\n| 7 | El Estandarte | Estado de conexión (ESTABLISHED, RELATED) |\n| 8 | La Puerta Secreta | DNAT y reenvío de puertos |\n\n### Atajos de teclado\n\n| Tecla | Acción |\n|-------|--------|\n| `Tab` / `Shift+Tab` | Cambiar panel activo |\n| `Ctrl+E` | Enviar mensajero de prueba |\n| `Ctrl+N` | Siguiente nivel (si completado) |\n| `Ctrl+R` | Reiniciar nivel actual |\n| `↑` / `↓` | Navegar historial de comandos |\n| `Ctrl+C` / `q` | Salir |\n\n## Compilar desde el código fuente\n\n```bash\ngit clone https://github.com/vmvarela/iptablestutorial\ncd iptablestutorial\nmake build        # binario en ./bin/silvia-castillo\nmake test         # pasa la suite de tests\nmake lint         # golangci-lint\n```\n\nRequiere Go 1.22+.\n\n## Bajo el capó\n\nEl motor de simulación (`internal/engine`) reproduce el pipeline Netfilter completo sin llamadas al sistema:\n\n- Analiza la sintaxis de `iptables` (`-t`, `-A/-I/-D`, `-p`, `--dport`, `-j`, etc.)\n- Evalúa paquetes a través de `nat/PREROUTING` → decisión de enrutado → `filter/INPUT` o `filter/FORWARD` → `nat/POSTROUTING`\n- Soporta DNAT, SNAT, MASQUERADE, cadenas de usuario, y seguimiento de estado con `--state`\n- Registra cada paso en una traza de ejecución que se muestra en tiempo real\n\nEl progreso se guarda en `~/.config/silvia-castillo/progreso.json`.\n\n## Limitaciones\n\n- Solo simula las tablas `filter` y `nat`. Las tablas `mangle` y `raw` no están implementadas.\n- `--state INVALID` no está simulado.\n- Los módulos de extensión avanzados (`-m iprange`, `-m multiport` con rangos, `-m string`) no están soportados.\n\n## Licencia\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmvarela%2Fiptablestutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmvarela%2Fiptablestutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmvarela%2Fiptablestutorial/lists"}