Skip to content

Programación y Desarrollo

Herramientas esenciales para programación, compilación y desarrollo de software en sistemas Linux.

Lenguaje de programación versátil y potente. Esencial para pentesting, automatización y desarrollo de herramientas de seguridad.

Terminal window
# Ejecutar script Python
python3 script.py
# Modo interactivo
python3
# Ejecutar código directamente
python3 -c "print('Hello World')"
# Ejecutar módulo
python3 -m module_name
# Verificar sintaxis
python3 -m py_compile script.py
# Modo debug
python3 -m pdb script.py
# Instalar paquetes
pip3 install package_name
# Crear entorno virtual
python3 -m venv myenv
source myenv/bin/activate

Tip: Para pentesting, Python y Bash son los lenguajes más útiles. Python para scripts complejos y herramientas, Bash para automatización rápida y tareas del sistema.

Lenguaje de programación elegante y expresivo. Popular para scripting y desarrollo web, usado en herramientas como Metasploit.

Terminal window
# Ejecutar script Ruby
ruby script.rb
# Modo interactivo
irb
# Ejecutar código directamente
ruby -e "puts 'Hello World'"
# Verificar sintaxis
ruby -c script.rb
# Instalar gemas
gem install gem_name
# Listar gemas instaladas
gem list

Lenguaje potente para procesamiento de texto y expresiones regulares. Excelente para manipulación de datos y scripts de una línea.

Terminal window
# Ejecutar script Perl
perl script.pl
# Ejecutar código directamente
perl -e "print 'Hello World\n'"
# Modo one-liner para procesamiento de texto
perl -pe 's/old/new/g' file.txt
# Verificar sintaxis
perl -c script.pl
# Instalar módulos
cpan Module::Name

Compilador estándar para C y C++. Fundamental para compilar exploits, herramientas de bajo nivel y código de rendimiento crítico.

Terminal window
# Compilar programa C básico
gcc program.c -o program
# Compilar con warnings
gcc -Wall program.c -o program
# Compilar con debug
gcc -g program.c -o program
# Compilar con optimización
gcc -O2 program.c -o program
# Compilar múltiples archivos
gcc file1.c file2.c -o program
# Enlazar librerías
gcc program.c -lm -o program # math library
# Generar solo objeto
gcc -c program.c
# Mostrar información de compilación
gcc -v program.c -o program

Compilador específico para C++. Usado para proyectos orientados a objetos y aplicaciones complejas de sistemas.

Terminal window
# Compilar programa C++
g++ program.cpp -o program
# Especificar estándar C++
g++ -std=c++17 program.cpp -o program
# Compilar con warnings
g++ -Wall -Wextra program.cpp -o program

Automatiza el proceso de compilación usando Makefiles. Esencial para proyectos grandes y gestión de dependencias.

Terminal window
# Compilar usando Makefile
make
# Compilar target específico
make target_name
# Limpiar archivos compilados
make clean
# Compilar con múltiples jobs
make -j4
# Mostrar comandos sin ejecutar
make -n
# Forzar recompilación
make -B
Terminal window
# Compilar archivo Java
javac Program.java
# Compilar con classpath
javac -cp /path/to/libs Program.java
# Compilar múltiples archivos
javac *.java
# Generar información de debug
javac -g Program.java
Terminal window
# Ejecutar programa Java
java Program
# Ejecutar con classpath
java -cp /path/to/classes Program
# Ejecutar JAR
java -jar program.jar
# Configurar memoria
java -Xmx1024m -Xms512m Program
# Modo debug
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 Program
Terminal window
# Generar documentación
javadoc *.java
# Generar en directorio específico
javadoc -d docs *.java

Depurador potente para análisis de binarios y reverse engineering. Crucial para análisis de malware y desarrollo de exploits.

Terminal window
# Iniciar debugger
gdb program
# Comandos dentro de gdb:
# run - ejecutar programa
# break main - establecer breakpoint
# step - ejecutar línea por línea
# continue - continuar ejecución
# print variable - mostrar valor de variable
# backtrace - mostrar stack trace
# quit - salir
# Debug con core dump
gdb program core
# Attach a proceso en ejecución
gdb -p PID
Terminal window
# Rastrear system calls
strace program
# Rastrear proceso existente
strace -p PID
# Filtrar system calls específicos
strace -e trace=open,read,write program
# Guardar output en archivo
strace -o trace.log program
# Mostrar timestamps
strace -t program
Terminal window
# Rastrear llamadas a librerías
ltrace program
# Rastrear proceso existente
ltrace -p PID
# Filtrar funciones específicas
ltrace -e malloc,free program
Terminal window
# Abrir archivo
vim filename
# Comandos básicos en vim:
# i - modo inserción
# :w - guardar
# :q - salir
# :wq - guardar y salir
# :q! - salir sin guardar
# /pattern - buscar
# :%s/old/new/g - reemplazar
Terminal window
# Abrir archivo
nano filename
# Atajos en nano:
# Ctrl+O - guardar
# Ctrl+X - salir
# Ctrl+W - buscar
# Ctrl+K - cortar línea
# Ctrl+U - pegar
Terminal window
# Abrir archivo
emacs filename
# Atajos básicos:
# Ctrl+X Ctrl+S - guardar
# Ctrl+X Ctrl+C - salir
# Ctrl+S - buscar
Terminal window
# Compilar exploit en C
gcc -o exploit exploit.c
# Compilar con flags específicos para bypass
gcc -fno-stack-protector -z execstack exploit.c -o exploit
# Compilar exploit multiplataforma
gcc -m32 exploit.c -o exploit32 # 32-bit
gcc -m64 exploit.c -o exploit64 # 64-bit
# Script Python para reconocimiento
cat > port_scanner.py << 'EOF'
#!/usr/bin/env python3
import socket
import sys
def scan_port(host, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((host, port))
sock.close()
return result == 0
except:
return False
host = sys.argv[1]
for port in range(1, 1001):
if scan_port(host, port):
print(f"Port {port} is open")
EOF
chmod +x port_scanner.py
Terminal window
# Información de archivo ejecutable
file binary
readelf -h binary
objdump -d binary
# Strings en binarios
strings binary | grep -i password
# Dependencias de librerías
ldd binary
# Símbolos en binario
nm binary
Terminal window
# Debug con gdb
gdb ./vulnerable_program
(gdb) run $(python -c "print 'A'*100")
(gdb) info registers
(gdb) x/20x $esp
# Análisis con strace
strace -e trace=file ./program 2>&1 | grep -E "(open|access)"
compile_tools.sh
#!/bin/bash
TOOLS_DIR="/opt/tools"
SRC_DIR="/tmp/src"
# Compilar nmap desde fuente
cd $SRC_DIR
wget https://nmap.org/dist/nmap-7.94.tar.bz2
tar -xjf nmap-7.94.tar.bz2
cd nmap-7.94
./configure --prefix=$TOOLS_DIR
make && make install
CC=gcc
CFLAGS=-Wall -g
TARGETS=exploit1 exploit2 scanner
all: $(TARGETS)
exploit1: exploit1.c
$(CC) $(CFLAGS) -o $@ $<
exploit2: exploit2.c
$(CC) $(CFLAGS) -fno-stack-protector -z execstack -o $@ $<
scanner: scanner.c
$(CC) $(CFLAGS) -o $@ $<
clean:
rm -f $(TARGETS)
install: all
cp $(TARGETS) /opt/tools/
.PHONY: all clean install
Terminal window
# Habilitar protecciones de seguridad
gcc -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now program.c
# Verificar protecciones en binario
checksec --file=program
Terminal window
# Usar herramientas de análisis
cppcheck source.c
splint source.c
# Buscar vulnerabilidades comunes
grep -r "strcpy\|strcat\|sprintf\|gets" source_code/

Nota de Seguridad: Al compilar exploits o herramientas de pentesting, asegúrate de hacerlo en un entorno controlado. Algunos exploits pueden ser detectados por antivirus o sistemas de prevención de intrusiones.