From b2e40216b9f4d1510f6e6dc49c4cdfde20b9d49e Mon Sep 17 00:00:00 2001 From: HD Moore Date: Thu, 25 Feb 2010 14:14:48 +0000 Subject: [PATCH] Fix up the RPC calls for the console git-svn-id: file:///home/svn/framework3/trunk@8637 4d416f70-5f16-0410-b530-b9f4589650da --- lib/msf/core/rpc/console.rb | 33 ++++++++++++++++++++++++--------- lib/msf/ui/web/driver.rb | 1 - 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/msf/core/rpc/console.rb b/lib/msf/core/rpc/console.rb index 528e299954..69bf2273f4 100644 --- a/lib/msf/core/rpc/console.rb +++ b/lib/msf/core/rpc/console.rb @@ -14,12 +14,24 @@ class Console < Base def create(token) authenticate(token) cid = @console_driver.create_console - {'id' => cid} + { + 'id' => cid, + 'prompt' => @console_driver.consoles[cid].prompt || '', + 'busy' => @console_driver.consoles[cid].busy || false + } end def list(token) authenticate(token) - {'ids' => @console_driver.consoles.keys } + ret = [] + @console_driver.consoles.each_key do |k| + ret << { + 'id' => k, + 'prompt' => @console_driver.consoles[k].prompt || '', + 'busy' => @console_driver.consoles[k].busy || false + } + end + {'consoles' => ret} end def destroy(token, cid) @@ -33,16 +45,16 @@ class Console < Base authenticate(token) return { 'result' => 'failure' } if not @console_driver.consoles[cid] { - "data" => @console_driver.read_console(cid) || "", - "prompt" => @console_driver.consoles[cid].prompt, - "busy" => @console_driver.consoles[cid].busy + "data" => @console_driver.read_console(cid) || '', + "prompt" => @console_driver.consoles[cid].prompt || '', + "busy" => @console_driver.consoles[cid].busy || false } end def write(token, cid, data) authenticate(token) return { 'result' => 'failure' } if not @console_driver.consoles[cid] - { "wrote" => @console_driver.write_console(cid, data) || "" } + { "wrote" => @console_driver.write_console(cid, data) || '' } end def tabs(token, cid, line) @@ -51,15 +63,18 @@ class Console < Base { "tabs" => @console_driver.consoles[cid].tab_complete(line) } end - - def interrupt(token, cid) + def session_kill(token, cid) authenticate(token) return { 'result' => 'failure' } if not @console_driver.consoles[cid] + @console_driver.consoles[cid].session_kill + { 'result' => 'success' } end - def detach(token, cid) + def session_detach(token, cid) authenticate(token) return { 'result' => 'failure' } if not @console_driver.consoles[cid] + @console_driver.consoles[cid].session_detach + { 'result' => 'success' } end diff --git a/lib/msf/ui/web/driver.rb b/lib/msf/ui/web/driver.rb index 27c8154e3e..ac4af4a10c 100644 --- a/lib/msf/ui/web/driver.rb +++ b/lib/msf/ui/web/driver.rb @@ -55,7 +55,6 @@ class Driver < Msf::Ui::Driver self.framework = Msf::Simple::Framework.create end - # Initialize the console count self.last_console = 0 end