-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
148 lines (122 loc) · 6.01 KB
/
Makefile
File metadata and controls
148 lines (122 loc) · 6.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# ─── Covert SSH Scanner — Makefile ────────────────────────────────────
# Atajos para los comandos Docker Compose del proyecto.
# Uso rapido: make (wizard interactivo)
# make help (ver todos los targets)
# make scan TARGET=203.0.113.50 DOMAIN=example.com
# ──────────────────────────────────────────────────────────────────────
SHELL := /bin/bash
.DEFAULT_GOAL := menu
COMPOSE := docker compose
SERVICE := scanner
TESTS_SVC := tests
STEGO_SVC := stego-srv
# ─── Variables configurables ──────────────────────────────────────────
TARGET ?=
DOMAIN ?=
USER ?= root
TIMEOUT ?= 5
TECHNIQUE ?= auto
STEGO_TARGET ?=
STEGO_PORT ?= 9080
STEGO_KEY ?= default
LOCAL_PORT ?= 2222
SSH_PORT ?= 22
# ─── Core ─────────────────────────────────────────────────────────────
.PHONY: menu
menu: ## Lanzar wizard interactivo
@bash menu.sh
.PHONY: help
help: ## Mostrar esta ayuda
@printf '\n \033[1mCovert SSH Scanner — Targets disponibles:\033[0m\n\n'
@grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | \
awk -F ':.*## ' '{printf " \033[96m%-18s\033[0m %s\n", $$1, $$2}'
@printf '\n'
.PHONY: build
build: ## Construir imagenes Docker
$(COMPOSE) build
.PHONY: test
test: ## Ejecutar suite de tests (36 tests)
$(COMPOSE) run --rm $(TESTS_SVC)
# ─── Scan ─────────────────────────────────────────────────────────────
# make scan TARGET=203.0.113.50 [DOMAIN=x] [USER=root] [FULL=1] [SIMULATE=1] [DRY_RUN=1]
.PHONY: scan
scan: _require-target ## Escanear red (TARGET=x obligatorio)
$(COMPOSE) run --rm $(SERVICE) scan \
--target $(TARGET) \
$(if $(DOMAIN),--domain $(DOMAIN)) \
--user $(USER) --timeout $(TIMEOUT) \
$(if $(FULL),--full) \
$(if $(SIMULATE),--simulate) \
$(if $(DRY_RUN),--dry-run) \
$(if $(NO_GENERATE),--no-generate)
.PHONY: scan-simulate
scan-simulate: _require-target ## Escaneo simulado (TARGET=x obligatorio)
$(COMPOSE) run --rm $(SERVICE) scan --target $(TARGET) \
$(if $(DOMAIN),--domain $(DOMAIN)) --simulate
# ─── Generate ─────────────────────────────────────────────────────────
# make generate TARGET=203.0.113.50 [TECHNIQUE=auto] [DOMAIN=x] [DOCKER=1]
.PHONY: generate
generate: _require-target ## Generar configs (TARGET=x, TECHNIQUE=auto)
$(COMPOSE) run --rm $(SERVICE) generate \
--target $(TARGET) --technique $(TECHNIQUE) \
$(if $(DOMAIN),--domain $(DOMAIN)) \
--user $(USER) \
$(if $(DOCKER),--docker) \
$(if $(SIMULATE),--simulate)
# ─── Stego ────────────────────────────────────────────────────────────
.PHONY: stego-demo
stego-demo: ## Demo de esteganografia (encode/decode)
$(COMPOSE) run --rm $(SERVICE) stego --mode demo
.PHONY: stego-cover
stego-cover: ## Demo de trafico de cobertura HTTP
$(COMPOSE) run --rm $(SERVICE) stego --mode http-cover
.PHONY: stego-server
stego-server: ## Arrancar servidor stego (background, puerto 9080)
$(COMPOSE) up $(STEGO_SVC) -d
@printf '\n \033[92mServidor stego arrancado en puerto $(STEGO_PORT)\033[0m\n'
@printf ' Parar con: make stego-down\n\n'
.PHONY: stego-client
stego-client: ## Cliente stego (STEGO_TARGET=x obligatorio)
ifndef STEGO_TARGET
$(error STEGO_TARGET obligatorio. Uso: make stego-client STEGO_TARGET=198.51.100.10)
endif
$(COMPOSE) run --rm $(SERVICE) stego --mode client \
--target $(STEGO_TARGET) --port $(STEGO_PORT) \
--local-port $(LOCAL_PORT) --key $(STEGO_KEY)
.PHONY: stego-down
stego-down: ## Parar servidor stego y servicios
$(COMPOSE) down
# ─── Utilidades ───────────────────────────────────────────────────────
.PHONY: shell
shell: ## Abrir shell bash en contenedor scanner
$(COMPOSE) run --rm --entrypoint bash $(SERVICE)
.PHONY: logs
logs: ## Ver logs de contenedores
$(COMPOSE) logs --tail=50 -f
.PHONY: clean
clean: ## Parar todo, limpiar volumenes y output
$(COMPOSE) down -v 2>/dev/null || true
@rm -f output/*.conf output/*.cfg output/*.sh output/*.yml \
output/ssh_config output/torrc-*
@printf ' \033[92mLimpio.\033[0m\n'
.PHONY: install-gum
install-gum: ## Instalar charmbracelet/gum (mejora visual del menu)
@command -v gum >/dev/null 2>&1 && { printf ' gum ya instalado: '; gum --version; } || { \
printf ' Instalando gum...\n'; \
GUM_VERSION=$$(curl -fsSL https://api.github.com/repos/charmbracelet/gum/releases/latest | grep '"tag_name"' | head -1 | cut -d'"' -f4 | sed 's/^v//'); \
ARCH=$$(uname -m | sed 's/aarch64/arm64/'); \
OS=$$(uname -s); \
rm -rf /tmp/gum-install && mkdir -p /tmp/gum-install && \
curl -fsSL "https://github.com/charmbracelet/gum/releases/download/v$${GUM_VERSION}/gum_$${GUM_VERSION}_$${OS}_$${ARCH}.tar.gz" \
| tar -xz -C /tmp/gum-install --strip-components=1 && \
mv /tmp/gum-install/gum /usr/local/bin/gum && \
chmod +x /usr/local/bin/gum && \
rm -rf /tmp/gum-install && \
printf ' \033[92mgum %s instalado.\033[0m\n' "$${GUM_VERSION}"; \
}
# ─── Helpers internos ─────────────────────────────────────────────────
.PHONY: _require-target
_require-target:
ifndef TARGET
$(error TARGET obligatorio. Uso: make $(MAKECMDGOALS) TARGET=203.0.113.50)
endif