5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/bscan/modules/many_threads.rb', line 5
def run *args
@config ||= @bscan_config
@activity[0]=true
@prop_pref = 'bscan.many_threads.'
@prop_pref += args[2] + '.' if args[2] && args[2].length > 0
@mid = args[2]?"ManyThreads.#{args[2]}.":'ManyThreads.'
param = @config[prop('request')]
a=[]
if (not param or (a=param.split(':',3)).size < 2)
Log 0, "#{@mid}run: 'request' parameter is not valid #{param}, it should be 'request.txt:protocol[:repeater]'"
return
end
threads = @config[prop('threads')]
threads ||= '10'
Log 2, "#{@mid}run input: #{a.join('|')} #{threads}"
threads = threads.to_i
begin
f,proto,rep = a
file = open_in_path(f)
req = file.read
req.gsub!(/\^M\n/,"\r\n")
if (rep)
rep = Regexp.escape(rep)
req.gsub!(/#{rep}(.+?)#{rep}(\d+)/) {|m| $1*$2.to_i}
end
set_len req
file.close
threads.times do
Thread.new() {
@activity[0]=true
send_req req, proto, ''
}
end
rescue Exception => e
Log 0, "#{@mid}run Exception: #{e.message}"
Log 0, e.backtrace.join("\n")
end
end
|