Skip to content

Commit b25b2a5

Browse files
committed
Cleaned up code per suggestions in the PR
1 parent 0778b77 commit b25b2a5

File tree

1 file changed

+24
-35
lines changed

1 file changed

+24
-35
lines changed

lib/msf/core/post/windows/dotnet.rb

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,12 @@
22
require 'msf/core/post/common'
33
require 'msf/core/post/windows/registry'
44

5-
module Msf
6-
class Post
7-
module Windows
8-
9-
#
10-
# This module serves to hold methods related to .NET framework
11-
#
12-
module Dotnet
5+
module Msf::Post::Windows::Dotnet
136
include ::Msf::Post::Common
147
include ::Msf::Post::Windows::Registry
158

169
def initialize(info = {})
1710
super
18-
register_advanced_options(
19-
[
20-
OptInt.new('Dotnet::Post::timeout', [true, 'Dotnet execution timeout, set < 0 to run async without termination', 15]),
21-
OptBool.new('Dotnet::Post::log_output', [true, 'Write output to log file', false]),
22-
OptBool.new('Dotnet::Post::dry_run', [true, 'Return encoded output to caller', false]),
23-
OptBool.new('Dotnet::Post::force_wow64', [true, 'Force WOW64 execution', false])
24-
],
25-
self.class
26-
)
2711
end
2812
#
2913
# Searches the subkey for the value 'Version' which contains the
@@ -35,13 +19,16 @@ def search_for_version(dotnet_subkey)
3519
dotnet_version = nil
3620
begin
3721
subkeys = registry_enumvals(dotnet_subkey)
38-
rescue ::Exception => e
22+
rescue Rex::Post::Meterpreter::RequestError => e
3923
print_status("Encountered exception in search_for_version: #{e.class} #{e}")
24+
elog("#{e.class} #{e.message}\n#{e.backtrace * "\n"}")
4025
end
41-
subkeys.each do |i|
42-
if i == 'Version'
43-
dotnet_version = registry_getvaldata(dotnet_subkey, i)
44-
break
26+
unless subkeys.nil?
27+
subkeys.each do |subkey|
28+
if subkey == 'Version'
29+
dotnet_version = registry_getvaldata(dotnet_subkey, subkey)
30+
break
31+
end
4532
end
4633
end
4734
return dotnet_version
@@ -55,14 +42,17 @@ def get_versionception(dotnet_vkey)
5542
exact_version = nil
5643
begin
5744
subkeys = registry_enumkeys(dotnet_vkey)
58-
rescue ::Exception => e
45+
rescue Rex::Post::Meterpreter::RequestError => e
5946
print_status("Encountered exception in get_versionception: #{e.class} #{e}")
47+
elog("#{e.class} #{e.message}\n#{e.backtrace * "\n"}")
6048
end
61-
subkeys.each do |i|
62-
exact_version = search_for_version(dotnet_vkey + '\\' + i)
63-
unless exact_version.nil?
64-
# if we find a version, stop looking
65-
break
49+
unless subkeys.nil?
50+
subkeys.each do |subkey|
51+
exact_version = search_for_version(dotnet_vkey + '\\' + subkey)
52+
unless exact_version.nil?
53+
# if we find a version, stop looking
54+
break
55+
end
6656
end
6757
end
6858
return exact_version
@@ -77,13 +67,14 @@ def get_dotnet_versions
7767
key = 'HKLM\\SOFTWARE\\Microsoft\NET Framework Setup\\NDP'
7868
begin
7969
dotnet_keys = registry_enumkeys(key)
80-
rescue ::Exception => e
70+
rescue Rex::Post::Meterpreter::RequestError => e
8171
print_status("Encountered exception in get_dotnet_version: #{e.class} #{e}")
72+
elog("#{e.class} #{e.message}\n#{e.backtrace * "\n"}")
8273
end
8374
unless dotnet_keys.nil?
84-
dotnet_keys.each do |i|
85-
if i[0,1] == 'v'
86-
key = 'HKLM\\SOFTWARE\\Microsoft\NET Framework Setup\\NDP\\' + i
75+
dotnet_keys.each do |temp_key|
76+
if temp_key[0] == 'v'
77+
key = 'HKLM\\SOFTWARE\\Microsoft\NET Framework Setup\\NDP\\' + temp_key
8778
dotnet_version = get_versionception(key)
8879
unless dotnet_version.nil?
8980
ret_val << dotnet_version
@@ -94,6 +85,4 @@ def get_dotnet_versions
9485
return ret_val
9586
end
9687
end
97-
end
98-
end
99-
end
88+

0 commit comments

Comments
 (0)