#!/usr/bin/env ruby require 'bundler/setup' require 'metasploit/aggregator' require 'metasploit/aggregator/cable' require 'metasploit/aggregator/logger' admin_host = '127.0.0.1' admin_port = 2447 # cert_file = './cert.pem' # cert_string = File.new(cert_file).read cert_string = nil server = Metasploit::Aggregator::GrpcServer.new(admin_host, admin_port) Logger.log "Starting administration service on #{admin_host}:#{admin_port}" loop do command = $stdin.gets if command.chomp == 'exit' exit elsif command.chomp == 'pause' Logger.log "paused" elsif command.chomp == 'stop' server.stop elsif command.chomp == 'park' client.release_session($stdin.gets.chomp) elsif command.chomp == 'details' client = Metasploit::Aggregator::ServerProxy.new(admin_host, admin_port) sessions = client.sessions sessions.each_pair do |payload, _console| details = client.session_details(payload) $stdout.puts payload details.each_pair do |key, attr| $stdout.print "\t" $stdout.print "#{key}:" $stdout.puts "#{attr}" end end end end