Skip to content

Commit 456cb3b

Browse files
committed
Merge pull request #1 from jvazquez-r7/rfcode_work
Final cleanup for rfcode_reader_enum
2 parents 6188df1 + ae027a9 commit 456cb3b

File tree

1 file changed

+48
-38
lines changed

1 file changed

+48
-38
lines changed

modules/auxiliary/scanner/http/rfcode_reader_enum.rb

Lines changed: 48 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def initialize(info={})
3232

3333
register_options(
3434
[
35-
OptString.new('STOP_ON_SUCCESS', [true, 'Stop guessing when a credential works for a host', true])
35+
OptBool.new('STOP_ON_SUCCESS', [ true, "Stop guessing when a credential works for a host", true])
3636
], self.class)
3737

3838
end
@@ -125,7 +125,6 @@ def do_login(user, pass)
125125

126126
if not res or res.code == 401
127127
vprint_error("#{rhost}:#{rport} - FAILED LOGIN - #{user.inspect}:#{pass.inspect} with code #{res.code}")
128-
return :skip_pass
129128
else
130129
print_good("#{rhost}:#{rport} - SUCCESSFUL LOGIN - #{user.inspect}:#{pass.inspect}")
131130

@@ -168,20 +167,22 @@ def collect_info(user, pass)
168167
}
169168
})
170169

171-
release_ver = JSON.parse(res.body)["release"]
172-
product_name = JSON.parse(res.body)["product"]
170+
if res and res.body
171+
release_ver = JSON.parse(res.body)["release"]
172+
product_name = JSON.parse(res.body)["product"]
173173

174-
vprint_status("#{rhost}:#{rport} - Collecting device platform info...")
175-
print_good("#{rhost}:#{rport} - Release version: '#{release_ver}', Product Name: '#{product_name}'")
174+
vprint_status("#{rhost}:#{rport} - Collecting device platform info...")
175+
vprint_good("#{rhost}:#{rport} - Release version: '#{release_ver}', Product Name: '#{product_name}'")
176176

177-
report_note(
178-
:host => rhost,
179-
:proto => 'tcp',
180-
:port => rport,
181-
:sname => "RFCode Reader",
182-
:data => 'Release Version: #{release_ver}, Product: #{product_name}',
183-
:type => 'Info'
184-
)
177+
report_note(
178+
:host => rhost,
179+
:proto => 'tcp',
180+
:port => rport,
181+
:sname => "RFCode Reader",
182+
:data => "Release Version: #{release_ver}, Product: #{product_name}",
183+
:type => 'Info'
184+
)
185+
end
185186

186187
res = send_request_cgi(
187188
{
@@ -194,19 +195,20 @@ def collect_info(user, pass)
194195
}
195196
})
196197

197-
userlist = JSON.parse(res.body)
198-
vprint_status("#{rhost}:#{rport} - Collecting user list...")
199-
print_good("#{rhost}:#{rport} - User list & role: #{userlist}")
200-
201-
report_note(
202-
:host => rhost,
203-
:proto => 'tcp',
204-
:port => rport,
205-
:sname => "RFCode Reader",
206-
:data => 'User List & Roles: #{userlist}',
207-
:type => 'Info'
208-
)
198+
if res and res.body
199+
userlist = JSON.parse(res.body)
200+
vprint_status("#{rhost}:#{rport} - Collecting user list...")
201+
vprint_good("#{rhost}:#{rport} - User list & role: #{userlist}")
209202

203+
report_note(
204+
:host => rhost,
205+
:proto => 'tcp',
206+
:port => rport,
207+
:sname => "RFCode Reader",
208+
:data => "User List & Roles: #{userlist}",
209+
:type => 'Info'
210+
)
211+
end
210212

211213
res = send_request_cgi(
212214
{
@@ -219,19 +221,27 @@ def collect_info(user, pass)
219221
}
220222
})
221223

222-
eth0_info = JSON.parse(res.body)["eth0"]
223-
vprint_status("#{rhost}:#{rport} - Collecting interface info...")
224-
print_good("#{rhost}:#{rport} - Interface eth0 info: #{eth0_info}")
225-
226-
report_note(
227-
:host => rhost,
228-
:proto => 'tcp',
229-
:port => rport,
230-
:sname => "RFCode Reader",
231-
:data => 'Interface eth0: #{eth0_info}',
232-
:type => 'Info'
233-
)
224+
if res and res.body
225+
eth0_info = JSON.parse(res.body)["eth0"]
226+
vprint_status("#{rhost}:#{rport} - Collecting interface info...")
227+
vprint_good("#{rhost}:#{rport} - Interface eth0 info: #{eth0_info}")
228+
229+
report_note(
230+
:host => rhost,
231+
:proto => 'tcp',
232+
:port => rport,
233+
:sname => "RFCode Reader",
234+
:data => "Interface eth0: #{eth0_info}",
235+
:type => 'Info'
236+
)
237+
end
234238

239+
return
240+
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout, ::Rex::ConnectionError, ::Errno::EPIPE
241+
vprint_error("#{rhost}:#{rport} - HTTP Connection Failed while collecting info")
242+
return
243+
rescue JSON::ParserError
244+
vprint_error("#{rhost}:#{rport} - Unable to parse JSON response while collecting info")
235245
return
236246
end
237247
end

0 commit comments

Comments
 (0)