FROM python:3.11

# --- ARGs que Mythic usa al construir payloads (mantenerlos) ---
ARG CA_CERTIFICATE
ARG NPM_REGISTRY
ARG PYPI_INDEX
ARG PYPI_INDEX_URL
ARG DOCKER_REGISTRY_MIRROR
ARG HTTP_PROXY
ARG HTTPS_PROXY

# --- Evita prompts (tzdata) y builds no reproducibles ---
ENV DEBIAN_FRONTEND=noninteractive \
    PIP_NO_CACHE_DIR=1

# --- Instala toolchain y utilidades necesarias para compilar agentes en C ---
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        apt-utils ca-certificates git zip make build-essential \
        libssl-dev zlib1g-dev libbz2-dev xz-utils tk-dev libffi-dev \
        liblzma-dev libsqlite3-dev protobuf-compiler mingw-w64 nasm && \
    rm -rf /var/lib/apt/lists/*

# --- Actualiza pip / setuptools / wheel ---
RUN python -m pip install --upgrade pip setuptools wheel

# --- Instala el paquete base de Mythic y dependencias del payload ---
COPY requirements.txt /
RUN pip install --no-cache-dir -r /requirements.txt \
    && pip install --no-cache-dir mythic-container

# --- Variables de entorno necesarias para comunicación con el core Mythic ---
ENV MYTHIC_SERVER_HOST="mythic_server"
ENV MYTHIC_SERVER_PORT="17443"
ENV MYTHIC_SERVER_USERNAME="mythic_admin"
ENV MYTHIC_SERVER_PASSWORD="mythic_password"

# --- Copia el código del payload ---
WORKDIR /Mythic/
COPY ./ /Mythic/cazalla/

# --- Comando por defecto ---
CMD ["python3", "main.py"]
