@@ -91,28 +91,6 @@ def run_service(port, direct)
91
91
disconnect_wkssvc
92
92
end
93
93
94
- def format_results ( results )
95
- users_table = Rex ::Text ::Table . new (
96
- 'Indent' => 4 ,
97
- 'Header' => "Logged-on Users" ,
98
- 'Columns' =>
99
- [
100
- 'Name' ,
101
- 'Domain' ,
102
- 'Other Domains' ,
103
- 'Logon Server'
104
- ] ,
105
- 'SortIndex' => 0 ,
106
- )
107
-
108
- results . compact . each do |result_set |
109
- result_set . each { |result | users_table << [ result . wkui1_username , result . wkui1_logon_domain , result . wkui1_oth_domains , result . wkui1_logon_server ] }
110
- end
111
-
112
- users_table
113
-
114
- end
115
-
116
94
def run_host ( _ip )
117
95
if session
118
96
self . simple = session . simple_client
@@ -122,11 +100,40 @@ def run_host(_ip)
122
100
end
123
101
124
102
unless results . to_s . empty?
125
- results_table = format_results ( results )
126
- results_table . rows = results_table . rows . uniq # Remove potentially duplicate entries from port 139 & 445
127
-
128
- print_line
129
- print_line results_table . to_s
103
+
104
+ accounts = [ Hash . new ( ) ]
105
+ results . compact . each do |result_set |
106
+ result_set . each { |result | accounts << {
107
+ :account_name => result . wkui1_username . encode ( 'UTF-8' ) ,
108
+ :logon_domain => result . wkui1_logon_domain . encode ( 'UTF-8' ) ,
109
+ :other_domains => result . wkui1_oth_domains . encode ( 'UTF-8' ) ,
110
+ :logon_server => result . wkui1_logon_server . encode ( 'UTF-8' ) } }
111
+ end
112
+ accounts . shift
113
+
114
+ if datastore [ 'VERBOSE' ]
115
+ accounts . each do |x |
116
+ print_status x [ :logon_domain ] + "\\ " + x [ :account_name ] +
117
+ "\t (logon_server: #{ x [ :logon_server ] } , other_domains: #{ x [ :other_domains ] } )"
118
+ end
119
+ else
120
+ print_status "#{ accounts . collect { |x | x [ :logon_domain ] + "\\ " + x [ :account_name ] } . join ( ", " ) } "
121
+ end
122
+
123
+ found_accounts = [ ]
124
+ accounts . each do |x |
125
+ comp_user = x [ :logon_domain ] + "\\ " + x [ :account_name ]
126
+ found_accounts . push ( comp_user . scan ( /[[:print:]]/ ) . join ) unless found_accounts . include? ( comp_user . scan ( /[[:print:]]/ ) . join )
127
+ end
128
+
129
+ found_accounts . each do |comp_user |
130
+ if comp_user . to_s =~ /\$ $/
131
+ next
132
+ end
133
+
134
+ print_good ( "Found user: #{ comp_user } " )
135
+ end
136
+
130
137
end
131
138
132
139
end
0 commit comments