@@ -6,30 +6,36 @@ module Msf
6
6
class Post
7
7
module Windows
8
8
9
+ #
10
+ # This module serves to hold methods related to .NET framework
11
+ #
9
12
module Dotnet
10
13
include ::Msf ::Post ::Common
11
14
include ::Msf ::Post ::Windows ::Registry
12
-
15
+
13
16
def initialize ( info = { } )
14
17
super
15
18
register_advanced_options (
16
19
[
17
- OptInt . new ( 'Dotnet::Post::timeout' , [ true , 'Dotnet execution timeout, set < 0 to run async without termination' , 15 ] ) ,
20
+ OptInt . new ( 'Dotnet::Post::timeout' , [ true , 'Dotnet execution timeout, set < 0 to run async without termination' , 15 ] ) ,
18
21
OptBool . new ( 'Dotnet::Post::log_output' , [ true , 'Write output to log file' , false ] ) ,
19
22
OptBool . new ( 'Dotnet::Post::dry_run' , [ true , 'Return encoded output to caller' , false ] ) ,
20
- OptBool . new ( 'Dotnet::Post::force_wow64' , [ true , 'Force WOW64 execution' , false ] ) ,
21
- ] , self . class )
23
+ OptBool . new ( 'Dotnet::Post::force_wow64' , [ true , 'Force WOW64 execution' , false ] )
24
+ ] ,
25
+ self . class
26
+ )
22
27
end
23
28
#
24
29
# Searches the subkey for the value 'Version' which contains the
25
30
# actual version, rather than the over-arching release
26
31
# An alternative would be to query for it, and catch the exception.
27
32
#
33
+
28
34
def search_for_version ( dotnet_subkey )
29
35
dotnet_version = nil
30
36
begin
31
37
subkeys = registry_enumvals ( dotnet_subkey )
32
- rescue ::Exception => e
38
+ rescue ::Exception => e
33
39
print_status ( "Encountered exception in search_for_version: #{ e . class } #{ e } " )
34
40
end
35
41
subkeys . each do |i |
@@ -40,7 +46,7 @@ def search_for_version(dotnet_subkey)
40
46
end
41
47
return dotnet_version
42
48
end
43
-
49
+
44
50
#
45
51
# Bruteforce search all subkeys in an over-arching release to
46
52
# locate the actual release version.
@@ -49,13 +55,13 @@ def get_versionception(dotnet_vkey)
49
55
exact_version = nil
50
56
begin
51
57
subkeys = registry_enumkeys ( dotnet_vkey )
52
- rescue ::Exception => e
58
+ rescue ::Exception => e
53
59
print_status ( "Encountered exception in get_versionception: #{ e . class } #{ e } " )
54
60
end
55
61
subkeys . each do |i |
56
- exact_version = search_for_version ( dotnet_vkey + '\\' +i )
62
+ exact_version = search_for_version ( dotnet_vkey + '\\' + i )
57
63
unless exact_version . nil?
58
- #if we find a version, stop looking
64
+ # if we find a version, stop looking
59
65
break
60
66
end
61
67
end
@@ -67,19 +73,19 @@ def get_versionception(dotnet_vkey)
67
73
# a windows host
68
74
#
69
75
def get_dotnet_versions
70
- ret_val = Array . new
76
+ ret_val = [ ]
71
77
key = 'HKLM\\SOFTWARE\\Microsoft\NET Framework Setup\\NDP'
72
78
begin
73
79
dotnet_keys = registry_enumkeys ( key )
74
- rescue ::Exception => e
80
+ rescue ::Exception => e
75
81
print_status ( "Encountered exception in get_dotnet_version: #{ e . class } #{ e } " )
76
82
end
77
83
unless dotnet_keys . nil?
78
84
dotnet_keys . each do |i |
79
85
if i [ 0 , 1 ] == 'v'
80
- key = 'HKLM\\SOFTWARE\\Microsoft\NET Framework Setup\\NDP\\' + i
86
+ key = 'HKLM\\SOFTWARE\\Microsoft\NET Framework Setup\\NDP\\' + i
81
87
dotnet_version = get_versionception ( key )
82
- unless dotnet_version . nil?
88
+ unless dotnet_version . nil?
83
89
ret_val << dotnet_version
84
90
end
85
91
end
0 commit comments