Adds a timeout to wait_report method
In case it takes too long to get a report, the method will give up checking after one hour. The user can still manually check the report from the analysis link given earlier.bug/bundler_fix
parent
481ec7b9ec
commit
4f7cf0994a
|
@ -38,6 +38,7 @@ require 'msf/core'
|
||||||
require 'digest/sha2'
|
require 'digest/sha2'
|
||||||
require 'optparse'
|
require 'optparse'
|
||||||
require 'json'
|
require 'json'
|
||||||
|
require 'timeout'
|
||||||
|
|
||||||
|
|
||||||
class ToolConfig
|
class ToolConfig
|
||||||
|
@ -442,12 +443,21 @@ class Driver < DriverBase
|
||||||
sha256 = res['sha256']
|
sha256 = res['sha256']
|
||||||
print_status("Requesting the report...")
|
print_status("Requesting the report...")
|
||||||
res = nil
|
res = nil
|
||||||
|
|
||||||
|
# 3600 seconds = 1 hour
|
||||||
|
begin
|
||||||
|
::Timeout.timeout(3600) {
|
||||||
while true
|
while true
|
||||||
res = vt.retrieve_report
|
res = vt.retrieve_report
|
||||||
break if res['response_code'] == 1
|
break if res['response_code'] == 1
|
||||||
select(nil, nil, nil, delay)
|
select(nil, nil, nil, delay)
|
||||||
print_status("Received code #{res['response_code']}. Waiting for another #{delay.to_s} seconds...")
|
print_status("Received code #{res['response_code']}. Waiting for another #{delay.to_s} seconds...")
|
||||||
end
|
end
|
||||||
|
}
|
||||||
|
rescue ::Timeout::Error
|
||||||
|
print_error("No report collected. Please manually check the analysis link later.")
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
res
|
res
|
||||||
end
|
end
|
||||||
|
@ -488,7 +498,7 @@ class Driver < DriverBase
|
||||||
vt = VirusTotal.new({'api_key' => @opts['api_key'], 'sample' => sample})
|
vt = VirusTotal.new({'api_key' => @opts['api_key'], 'sample' => sample})
|
||||||
res = upload_sample(vt, sample)
|
res = upload_sample(vt, sample)
|
||||||
res = wait_report(vt, res, @opts['delay'])
|
res = wait_report(vt, res, @opts['delay'])
|
||||||
generate_report(res, sample)
|
generate_report(res, sample) if res
|
||||||
|
|
||||||
puts
|
puts
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue