class Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::WinConstManager
Manages our library of windows constants
Attributes
consts[R]
Public Class Methods
new(initial_consts = {})
click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb, line 38 def initialize(initial_consts = {}) @consts = {} initial_consts.each_pair do |name, value| add_const(name, value) end end
Public Instance Methods
add_const(name, value)
click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb, line 46 def add_const(name, value) consts[name] = value end
is_parseable(s)
click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb, line 69 def is_parseable(s) return !parse(s).nil? end
parse(s)
click to toggle source
parses a string constaining constants and returns an integer the string can be either “CONST” or “CONST1 | CONST2”
this function will NOT throw an exception but return “nil” if it can’t parse a string
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb, line 54 def parse(s) if s.class != String return nil # it's not even a string' end return_value = 0 for one_const in s.split('|') one_const = one_const.strip() if not consts.has_key? one_const return nil # at least one "Constant" is unknown to us end return_value |= consts[one_const] end return return_value end
select_const_names(winconst, filter_regex=nil)
click to toggle source
Returns an array of constant names that have a value matching “winconst” and (optionally) a name that matches “filter_regex”
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb, line 77 def select_const_names(winconst, filter_regex=nil) matches = [] consts.each_pair do |name, value| matches << name if value == winconst end # Filter matches by name if a filter has been provided unless filter_regex.nil? matches.reject! do |name| name !~ filter_regex end end return matches end