Class: Msf::Modules::Metadata::Obj

Inherits:
Object
  • Object
show all
Defined in:
lib/msf/core/modules/metadata/obj.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(module_instance, obj_hash = nil) ⇒ Obj

Returns a new instance of Obj.


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/msf/core/modules/metadata/obj.rb', line 56

def initialize(module_instance, obj_hash = nil)
  unless obj_hash.nil?
    init_from_hash(obj_hash)
    return
  end

  @name               = module_instance.name
  @fullname           = module_instance.realname
  @aliases            = module_instance.aliases
  @disclosure_date    = module_instance.disclosure_date
  @rank               = module_instance.rank.to_i
  @type               = module_instance.type
  @description        = module_instance.description.to_s.strip
  @author             = module_instance.author.map{|x| x.to_s}
  @references         = module_instance.references.map{|x| [x.ctx_id, x.ctx_val].join("-") }
  @post_auth          = module_instance.post_auth?
  @default_credential = module_instance.default_cred?

  @platform           = module_instance.platform_to_s
  # Done to ensure that differences do not show up for the same array grouping
  sort_platform_string

  @arch               = module_instance.arch_to_s
  @rport              = module_instance.datastore['RPORT']
  @path               = module_instance.file_path
  @mod_time           = ::File.mtime(@path) rescue Time.now
  @ref_name           = module_instance.class.refname
  @needs_cleanup      = module_instance.respond_to?(:needs_cleanup) && module_instance.needs_cleanup

  if module_instance.respond_to?(:autofilter_ports)
    @autofilter_ports = module_instance.autofilter_ports
  end
  if module_instance.respond_to?(:autofilter_services)
    @autofilter_services = module_instance.autofilter_services
  end

  install_path = Msf::Config.install_root.to_s
  if (@path.to_s.include? (install_path))
    @path = @path.sub(install_path, '')
    @is_install_path = true
  end

  if module_instance.respond_to?(:targets) and module_instance.targets
    @targets = module_instance.targets.map{|x| x.name}
  end

  # Store whether a module has a check method
  @check = module_instance.has_check?

  @notes = module_instance.notes

  # Due to potentially non-standard ASCII we force UTF-8 to ensure no problem with JSON serialization
  force_encoding(::Encoding::UTF_8)
end

Instance Attribute Details

#aliasesArray<String> (readonly)

Returns:

  • (Array<String>)

16
17
18
# File 'lib/msf/core/modules/metadata/obj.rb', line 16

def aliases
  @aliases
end

#archString (readonly)

Returns:

  • (String)

32
33
34
# File 'lib/msf/core/modules/metadata/obj.rb', line 32

def arch
  @arch
end

#authorArray<String> (readonly)

Returns:

  • (Array<String>)

24
25
26
# File 'lib/msf/core/modules/metadata/obj.rb', line 24

def author
  @author
end

#autofilter_portsArray<Integer> (readonly)

Returns:

  • (Array<Integer>)

36
37
38
# File 'lib/msf/core/modules/metadata/obj.rb', line 36

def autofilter_ports
  @autofilter_ports
end

#autofilter_servicesArray<String> (readonly)

Returns:

  • (Array<String>)

38
39
40
# File 'lib/msf/core/modules/metadata/obj.rb', line 38

def autofilter_services
  @autofilter_services
end

#checkBoolean (readonly)

Returns:

  • (Boolean)

48
49
50
# File 'lib/msf/core/modules/metadata/obj.rb', line 48

def check
  @check
end

#default_credentialBoolean (readonly)

Returns:

  • (Boolean)

52
53
54
# File 'lib/msf/core/modules/metadata/obj.rb', line 52

def default_credential
  @default_credential
end

#descriptionString (readonly)

Returns:

  • (String)

26
27
28
# File 'lib/msf/core/modules/metadata/obj.rb', line 26

def description
  @description
end

#disclosure_dateDate (readonly)

Returns:

  • (Date)

20
21
22
# File 'lib/msf/core/modules/metadata/obj.rb', line 20

def disclosure_date
  @disclosure_date
end

#fullnameString (readonly)

Returns:

  • (String)

14
15
16
# File 'lib/msf/core/modules/metadata/obj.rb', line 14

def fullname
  @fullname
end

#is_install_pathBoolean (readonly)

Returns:

  • (Boolean)

44
45
46
# File 'lib/msf/core/modules/metadata/obj.rb', line 44

def is_install_path
  @is_install_path
end

#mod_timeTime (readonly)

Returns:

  • (Time)

42
43
44
# File 'lib/msf/core/modules/metadata/obj.rb', line 42

def mod_time
  @mod_time
end

#nameString (readonly)

Returns:

  • (String)

12
13
14
# File 'lib/msf/core/modules/metadata/obj.rb', line 12

def name
  @name
end

#notesHash (readonly)

Returns:

  • (Hash)

54
55
56
# File 'lib/msf/core/modules/metadata/obj.rb', line 54

def notes
  @notes
end

#platformBoolean (readonly)

Returns:

  • (Boolean)

30
31
32
# File 'lib/msf/core/modules/metadata/obj.rb', line 30

def platform
  @platform
end

#post_authBoolean (readonly)

Returns:

  • (Boolean)

50
51
52
# File 'lib/msf/core/modules/metadata/obj.rb', line 50

def post_auth
  @post_auth
end

#rankInteger (readonly)

Returns:

  • (Integer)

18
19
20
# File 'lib/msf/core/modules/metadata/obj.rb', line 18

def rank
  @rank
end

#ref_nameString (readonly)

Returns:

  • (String)

46
47
48
# File 'lib/msf/core/modules/metadata/obj.rb', line 46

def ref_name
  @ref_name
end

#referencesArray<String> (readonly)

Returns:

  • (Array<String>)

28
29
30
# File 'lib/msf/core/modules/metadata/obj.rb', line 28

def references
  @references
end

#rportInteger (readonly)

Returns:

  • (Integer)

34
35
36
# File 'lib/msf/core/modules/metadata/obj.rb', line 34

def rport
  @rport
end

#targetsArray<String> (readonly)

Returns:

  • (Array<String>)

40
41
42
# File 'lib/msf/core/modules/metadata/obj.rb', line 40

def targets
  @targets
end

#typeString (readonly)

Returns:

  • (String)

22
23
24
# File 'lib/msf/core/modules/metadata/obj.rb', line 22

def type
  @type
end

Class Method Details

.from_hash(obj_hash) ⇒ Object

Initialize this object from a hash


146
147
148
# File 'lib/msf/core/modules/metadata/obj.rb', line 146

def self.from_hash(obj_hash)
  return Obj.new(nil, obj_hash)
end

Instance Method Details

#pathObject


154
155
156
157
158
159
160
# File 'lib/msf/core/modules/metadata/obj.rb', line 154

def path
  if @is_install_path
    return ::File.join(Msf::Config.install_root, @path)
  end

  @path
end

#to_json(*args) ⇒ Object

Returns the JSON representation of the module metadata


114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/msf/core/modules/metadata/obj.rb', line 114

def to_json(*args)
  {
    'name'               => @name,
    'fullname'           => @fullname,
    'aliases'            => @aliases,
    'rank'               => @rank,
    'disclosure_date'    => @disclosure_date.nil? ? nil : @disclosure_date.to_s,
    'type'               => @type,
    'author'             => @author,
    'description'        => @description,
    'references'         => @references,
    'platform'           => @platform,
    'arch'               => @arch,
    'rport'              => @rport,
    'autofilter_ports'   => @autofilter_ports,
    'autofilter_services'=> @autofilter_services,
    'targets'            => @targets,
    'mod_time'           => @mod_time.to_s,
    'path'               => @path,
    'is_install_path'    => @is_install_path,
    'ref_name'           => @ref_name,
    'check'              => @check,
    'post_auth'          => @post_auth,
    'default_credential' => @default_credential,
    'notes'              => @notes,
    'needs_cleanup'      => @needs_cleanup
  }.to_json(*args)
end

#update_mod_time(mod_time) ⇒ Object


150
151
152
# File 'lib/msf/core/modules/metadata/obj.rb', line 150

def update_mod_time(mod_time)
  @mod_time = mod_time
end