Mercurial en Kali Linux: Guía Rápida
Mercurial en Kali Linux: Guía Rápida
Configurar Mercurial (un sistema de control de versiones distribuido, similar a Git) en Kali Linux es bastante sencillo. Aquí tienes una guía rápida para instalarlo y ponerlo en marcha en español.
1. Instalación
Como Kali está basado en Debian, usas el gestor de paquetes apt. Abre tu terminal y ejecuta:
sudo apt update
sudo apt install mercurial
Para verificar que se instaló correctamente, escribe:
hg --version
2. Configuración Básica
A diferencia de Git que usa .gitconfig, Mercurial utiliza un archivo llamado .hgrc. Debes crearlo o editarlo en tu carpeta personal para identificarte en tus "commits".
Crea el archivo:
nano ~/.hgrcPega lo siguiente (ajustando tus datos):
[ui]
username = Tu Nombre <tu@email.com>
verbose = True
3. Comandos Principales (Diccionario rápido)
Si vienes de usar Git, estos son los equivalentes o comandos básicos en Mercurial (usando el comando hg):
| Acción | Comando |
| Iniciar un repositorio | hg init |
| Clonar un proyecto | hg clone [url] |
| Ver estado de archivos | hg status |
| Añadir archivos | hg add |
| Confirmar cambios | hg commit -m "mensaje" |
| Enviar cambios | hg push |
| Traer cambios | hg pull |
| Actualizar carpeta de trabajo | hg update |
Nota: En Mercurial,
hg pullsolo descarga los cambios al repositorio local (la base de datos). Para verlos en tus archivos, debes ejecutar despuéshg update.
4. ¿Por qué usarlo en Kali?
Aunque Git es el estándar actual, muchos proyectos antiguos de seguridad y herramientas forenses todavía se alojan en repositorios de Mercurial (como algunos espejos de código en Bitbucket o repositorios de Python antiguos).
Crear tu primer proyecto con Mercurial (hg) es un proceso muy limpio y directo. Vamos a montar un proyecto de prueba paso a paso para que domines el flujo de trabajo.
Paso 1: Crear la carpeta del proyecto
Primero, necesitamos un lugar donde trabajar. Abre tu terminal en Kali y crea un nuevo directorio:
mkdir mi-proyecto-hg
cd mi-proyecto-hg
Paso 2: Inicializar el repositorio
Ahora, le diremos a Mercurial que empiece a vigilar esta carpeta.
hg init
Esto creará una carpeta oculta llamada .hg. Ahí es donde Mercurial guarda todo el historial y la configuración local.
Paso 3: Crear archivos y revisar el estado
Vamos a crear un archivo sencillo para tener algo con lo que trabajar:
Crea el archivo:
echo "Hola Mercurial" > notas.txtRevisa qué está pasando:
Bashhg statusVerás una
?junto anotas.txt. Eso significa que Mercurial ve el archivo pero aún no lo está siguiendo.
Paso 4: Añadir y confirmar (Commit)
A diferencia de otros sistemas, aquí el proceso es muy directo:
Añadir el archivo:
Bashhg add notas.txt(Si ahora haces
hg status, verás unaAde "Added").Hacer el primer commit:
Bashhg commit -m "Mi primer commit: Creación del archivo de notas"
Paso 5: Ver el historial
Para confirmar que todo se guardó correctamente en la línea de tiempo, usa el comando log:
hg log
Verás algo como esto:
changeset: 0:5a1b2c3d4e5f
user: Tu Nombre tu@email.com
date: Sun Mar 22 2026 ...
summary: Mi primer commit: Creación del archivo de notas
Resumen del flujo de trabajo diario
Si vas a seguir trabajando en el proyecto, el ciclo siempre será:
Modificar tus archivos.
hg statuspara ver qué cambió.hg commit -m "Descripción"para guardar los cambios (Mercurial permite hacer commit de archivos modificados automáticamente sin usaraddcada vez).
Un pequeño tip de "pro": Si quieres ver exactamente qué líneas cambiaste antes de hacer el commit, usa hg diff.
En Mercurial, las ramas (branches) son "nombradas". Esto significa que el nombre de la rama se queda grabado en cada commit, lo que hace que el historial sea muy fácil de leer en auditorías o proyectos de seguridad.
Aquí tienes cómo experimentar sin romper tu código principal:
1. Crear una rama nueva
Supongamos que vas a probar un script de reconocimiento en tu proyecto. Vamos a crear la rama experimental:
hg branch experimental
En este momento, Mercurial sabe que el próximo commit que hagas pertenecerá a "experimental".
2. Trabajar en la rama
Vamos a crear un archivo que solo exista en esta rama:
Crea el archivo:
echo "script de escaneo" > scanner.pyAñádelo:
hg add scanner.pyHaz el commit: ```bash
hg commit -m "Añadiendo herramienta de escaneo en rama experimental"
3. Saltando entre ramas (El "Viaje en el tiempo")
Aquí es donde ocurre la magia. Si quieres volver a tu versión estable (llamada default en Mercurial):
Volver al código estable:
Bashhg update default(Si miras tu carpeta con
ls, verás quescanner.pyha desaparecido. No te asustes, está guardado en la otra rama).Regresar a tus experimentos:
Bashhg update experimental(¡Y el archivo vuelve a aparecer!)
4. Fusionar los cambios (Merge)
Si después de probar tu script ves que funciona perfecto y lo quieres en tu rama principal:
Regresa a la rama principal:
hg update defaultTrae los cambios de la experimental:
hg merge experimentalImportante: En Mercurial, el merge se completa haciendo un commit:
Bashhg commit -m "Fusionando pruebas experimentales a la rama principal"
Tip de Kali Linux: Visualización gráfica
Como estás en Kali, es probable que tengas una interfaz gráfica (XFCE o GNOME). Puedes ver tus ramas visualmente con el comando:
hg view
(Si no lo tienes, se instala rápido con sudo apt install hkset).
Dato curioso: A diferencia de Git, en Mercurial una rama no se puede "borrar" fácilmente porque es parte del ADN del commit, pero puedes marcarla como cerrada cuando termines con
hg commit --close-branch.
Tener una copia de seguridad (o trabajar en equipo) requiere conectar tu repositorio local con un servidor remoto. Aunque GitHub es famoso por Git, para Mercurial lo más común es usar Heptapod, SourceHut o incluso un servidor propio por SSH.
Aquí tienes cómo sincronizar tus herramientas de Kali con el mundo exterior.
1. El concepto de "Push" y "Pull"
En Mercurial, la comunicación con el servidor es muy estructurada. Imagina que el servidor es el "almacén central":
hg push: Envía tus cambios locales al servidor.hg pull: Trae los cambios del servidor a tu base de datos local.hg update: Aplica esos cambios descargados a tus archivos actuales.
2. Configurar la ruta remota
No necesitas comandos complejos para añadir un servidor. Solo edita el archivo de configuración de tu proyecto:
En la carpeta de tu proyecto, abre el archivo:
nano .hg/hgrcAñade una sección llamada
[paths]:
[paths]
default = https://bitbucket.org/usuario/mi-proyecto
# O si usas SSH (más seguro en Kali):
# default = ssh://usuario@servidor.com//ruta/al/repo
3. Sincronizar por primera vez
Una vez configurada la ruta, el flujo es muy sencillo:
Para enviar tus ramas y commits:
Bashhg push(Si es la primera vez que envías una rama nueva, Mercurial te pedirá confirmación con
hg push --new-branch).Para recibir lo que otros han subido:
Bashhg pull hg update
4. Tip de Seguridad en Kali (SSH)
Como estás usando Kali, probablemente prefieras SSH para no estar escribiendo contraseñas en texto plano. Si ya tienes tus llaves SSH generadas (~/.ssh/id_rsa.pub), Mercurial las usará automáticamente si la URL del path empieza por ssh://.
¿Y si no tengo servidor? (El servidor instantáneo)
Mercurial tiene una función increíble para redes locales (útil en laboratorios o auditorías). Puedes convertir tu Kali en un servidor temporal con un solo comando:
hg serve
Esto levantará un servidor web en el puerto 8000. Cualquier persona en tu red local podrá entrar desde su navegador a tu IP (ej. http://192.168.1.15:8000) y ver todo tu código y el historial de commits.
Al realizar auditorías o pruebas de penetración en Kali, tus herramientas suelen generar archivos temporales, reportes JSON, capturas de pantalla o logs pesados que no deberían subirse al repositorio de código.
Para esto existe el archivo .hgignore. Aquí te enseño cómo configurarlo correctamente para un entorno de seguridad.
1. Crear el archivo .hgignore
En la raíz de tu proyecto, crea el archivo:
nano .hgignore
2. Configuración recomendada para Kali
Copia y pega este contenido. Está diseñado para ignorar archivos comunes de herramientas de hacking y de sistema:
syntax: glob
# Archivos de sistema y Python
*.pyc
__pycache__/
.DS_Store
# Reportes y logs de herramientas comunes
*.log
nmap_scans/
sqlmap_output/
*.pcap
*.pcapng
# Archivos temporales de editores
*.swp
*~
# Directorios de entornos virtuales
venv/
.venv/
syntax: glob: Le dice a Mercurial que use comodines sencillos (como el asterisco*). También puedes usarsyntax: regexpsi prefieres expresiones regulares complejas.
3. Activar el ignorado
Una vez guardado el archivo, Mercurial dejará de mostrar esos archivos cuando escribas hg status.
Añade el propio archivo de ignorados (es buena práctica que el equipo sepa qué se ignora):
Bashhg add .hgignore hg commit -m "Añadiendo lista de archivos ignorados"Verifica: Crea un archivo de prueba que debería ser ignorado:
Bashtouch escaneo_red.pcap hg statusSi todo está bien, no debería aparecer nada en el status.
Un último truco de "Ninja" en Kali: hg purge
A veces, después de una sesión de hacking, tu carpeta está llena de archivos basura que no están en el repositorio. Si quieres limpiar tu directorio de trabajo y borrar todo lo que no esté bajo control de versiones:
Instala la extensión (viene preinstalada, solo hay que activarla en tu
~/.hgrc):Ini, TOML[extensions] purge =Ejecuta:
Bashhg purge¡Cuidado! Esto borrará físicamente todos los archivos que no hayas añadido con
hg add.