Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 100 lines (83 sloc) 2.543 kb
#!/usr/bin/env ruby
# -*- coding: binary -*-
#
# $Id$
#
# This user interface listens on a port and provides clients that connect to
# it with an msfconsole instance. The nice thing about this interface is that
# it allows multiple clients to share one framework instance and thus makes it
# possible for sessions to to be shared from a single vantage point.
#
# $Revision$
#
msfbase = __FILE__
while File.symlink?(msfbase)
msfbase = File.expand_path(File.readlink(msfbase), File.dirname(msfbase))
end
$:.unshift(File.expand_path(File.join(File.dirname(msfbase), 'lib')))
require 'fastlib'
require 'msfenv'
$:.unshift(ENV['MSF_LOCAL_LIB']) if ENV['MSF_LOCAL_LIB']
require 'msf/base'
require 'msf/ui'
# Declare the argument parser for msfd
arguments = Rex::Parser::Arguments.new(
"-a" => [ true, "Bind to this IP address instead of loopback" ],
"-p" => [ true, "Bind to this port instead of 55554" ],
"-s" => [ false, "Use SSL" ],
"-f" => [ false, "Run the daemon in the foreground" ],
"-A" => [ true, "Specify list of hosts allowed to connect" ],
"-D" => [ true, "Specify list of hosts not allowed to connect" ],
"-h" => [ false, "Help banner" ])
opts = { 'RunInForeground' => true }
foreground = false
# Parse command line arguments.
arguments.parse(ARGV) { |opt, idx, val|
case opt
when "-a"
opts['ServerHost'] = val
when "-p"
opts['ServerPort'] = val
when "-f"
foreground = true
when "-s"
opts['SSL'] = true
when "-A"
begin
opts['HostsAllowed'] = val.split(',').map { |a|
Rex::Socket.resolv_nbo(a)
}
rescue
$stderr.puts "Bad argument for -A: #{$!}"
exit
end
when "-D"
begin
opts['HostsDenied'] = val.split(',').map { |a|
Rex::Socket.resolv_nbo(a)
}
rescue
$stderr.puts "Bad argument for -D: #{$!}"
exit
end
when "-h"
print(
"\nUsage: #{File.basename(__FILE__)} <options>\n" +
arguments.usage)
exit
end
}
$stderr.puts "[*] Initializing msfd..."
$stderr.puts "[*] Running msfd..."
# Fork into the background if requested
begin
if (not foreground)
exit(0) if Process.fork()
end
rescue ::NotImplementedError
$stderr.puts "[-] Background mode is not available on this platform"
end
# Create an instance of the framework
$framework = Msf::Simple::Framework.create
# Run the plugin instance in the foreground.
$framework.plugins.load('msfd', opts).run(opts)
Jump to Line
Something went wrong with that request. Please try again.