payload info can now be target specific

git-svn-id: file:///home/svn/incoming/trunk@2923 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
Matt Miller 2005-09-30 07:12:32 +00:00
parent aeb6e66e67
commit ccd1e8f10a
3 changed files with 43 additions and 11 deletions

View File

@ -7,15 +7,15 @@ X - pivoting
X - portfwd command
- networking
X - switch board routing table for pivoting
- meterpreter 'comm' support
X - meterpreter 'comm' support
- proxy 'comm' support
- asm
- block dependencies (req'd for shikata)
- block permutation generation (req'd for shikata)
- text
- create_pattern, pattern_offset
- base64
- consider extending String
X - create_pattern, pattern_offset
X - base64
X - consider extending String
- framework-core
- modules
- reloading
@ -25,7 +25,7 @@ X - switch board routing table for pivoting
- meta information
- stager/stage calling conventions
- stack requirements
- make payload prepend target specific
X - make payload prepend target specific
- sessions
- logging session activity
- handler sharing

View File

@ -339,8 +339,12 @@ class Exploit < Msf::Module
# and platform if it's a multi exploit.
#
def payload_prepend(payload_module)
if (target and target['PayloadPrepend'])
target['PayloadPrepend']
else
payload_info['Prepend'] || ''
end
end
#
# Return any text that should be appended to the payload. The payload
@ -348,8 +352,12 @@ class Exploit < Msf::Module
# and platform if it's a multi exploit.
#
def payload_append(payload_module)
if (target and target['PayloadAppend'])
target['PayloadAppend']
else
payload_info['Append'] || ''
end
end
#
# Return any text that should be prepended to the encoder of the payload.
@ -357,30 +365,44 @@ class Exploit < Msf::Module
# at architecture and platform if it's a multi exploit.
#
def payload_prepend_encoder(payload_module)
if (target and target['PayloadEncoder'])
target['PayloadEncoder']
else
payload_info['PrependEncoder'] || ''
end
end
#
# Maximum number of nops to use as a hint to the framework.
# Nil signifies that the framework should decide.
#
def payload_max_nops
if (target and target['PayloadMaxNops'])
target['PayloadMaxNops']
else
payload_info['MaxNops'] || nil
end
end
#
# Minimum number of nops to use as a hint to the framework.
# Nil snigifies that the framework should decide.
#
def payload_min_nops
if (target and target['PayloadMinNops'])
target['PayloadMinNops']
else
payload_info['MinNops'] || nil
end
end
#
# Returns the maximum amount of room the exploit has for a payload.
#
def payload_space
if (payload_info['Space'])
if (target and target['PayloadSpace'])
target['PayloadSpace']
elsif (payload_info['Space'])
payload_info['Space'].to_i
else
nil

View File

@ -21,6 +21,16 @@ module Comm
raise NotImplementedError
end
#
# Indicates whether or not this comm can be chained with other chainable
# comms. This is particularly important for things like Proxy Comms that
# can be proxied through one another. The semantics of this are currently
# undefined and will probably need some more thought.
#
def chainable?
false
end
end
end