changes requested for the conditionality system for module OPTIONS/ACTIONS/TARGETS

This commit is contained in:
María Belén Tualombo Chimbo 2020-07-31 10:44:12 -04:00
parent 938173feb3
commit 091481b783
4 changed files with 41 additions and 3 deletions

View File

@ -0,0 +1,38 @@
# -*- coding: binary -*-
module Msf
module OptCondition
# Check a condition's result
def self.eval_condition(left_value, operator, right_value)
case operator.to_sym
when :==
right_value == left_value
when :!=
right_value != left_value
when :in
right_value.include?(left_value)
when :nin
!right_value.include?(left_value)
end
end
# Check an OPTION conditions. This function supports
# dump_options()
def self.show_option(mod, opt)
return true if opt.conditions.empty?
left_source = opt.conditions[0]
operator = opt.conditions[1]
right_value = opt.conditions[2]
if left_source == "ACTION"
left_value = mod.action.name.to_s
elsif left_source == "TARGET"
left_value = mod.target.name.to_s
else
left_value = mod.datastore[left_source] || opt.default
end
eval_condition(left_value, operator, right_value)
end
end
end #end end #end_modules

View File

@ -557,9 +557,9 @@ class ReadableText
mod.options.sorted.each do |name, opt|
next unless Msf::Serializer::OptConditions.show_option(mod, opt)
val = mod.datastore[name].nil? ? opt.default : mod.datastore[name]
next unless Msf::Serializer::OptConditions.show_option(mod, opt)
next if (opt.advanced?)
next if (opt.evasion?)
next if (missing && opt.valid?(val))

View File

@ -8,7 +8,7 @@ module Msf
# This overrides default from 'nil' to 'false'
def initialize(in_name, attrs = [],
required: true, desc: nil, default: false, conditions: [], aliases: [])
default: false, **kwargs)
super
end

View File

@ -13,7 +13,7 @@ module Msf
# This overrides required default from 'false' to 'true'
def initialize(in_name, attrs = [],
required: true, desc: nil, default: nil, enums: [], aliases: [])
required: true, **kwargs)
super
end