Class: Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::WinConstManager
- Inherits:
-
Object
- Object
- Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::WinConstManager
- Defined in:
- lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb
Overview
Manages our library of windows constants
Instance Attribute Summary collapse
-
#consts ⇒ Object
readonly
Returns the value of attribute consts.
Instance Method Summary collapse
- #add_const(name, value) ⇒ Object
-
#initialize(initial_consts = {}) ⇒ WinConstManager
constructor
A new instance of WinConstManager.
- #is_parseable(s) ⇒ Object
-
#parse(s) ⇒ Object
parses a string constaining constants and returns an integer the string can be either “CONST” or “CONST1 | CONST2”.
-
#select_const_names(winconst, filter_regex = nil) ⇒ Object
Returns an array of constant names that have a value matching “winconst” and (optionally) a name that matches “filter_regex”.
Constructor Details
#initialize(initial_consts = {}) ⇒ WinConstManager
Returns a new instance of WinConstManager.
39 40 41 42 43 44 45 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb', line 39 def initialize(initial_consts = {}) @consts = {} initial_consts.each_pair do |name, value| add_const(name, value) end end |
Instance Attribute Details
#consts ⇒ Object (readonly)
Returns the value of attribute consts.
37 38 39 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb', line 37 def consts @consts end |
Instance Method Details
#add_const(name, value) ⇒ Object
47 48 49 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb', line 47 def add_const(name, value) consts[name] = value end |
#is_parseable(s) ⇒ Object
70 71 72 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb', line 70 def is_parseable(s) return !parse(s).nil? end |
#parse(s) ⇒ Object
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
55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb', line 55 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) ⇒ Object
Returns an array of constant names that have a value matching “winconst” and (optionally) a name that matches “filter_regex”
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb', line 78 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 |