mu 5.7.15 → 5.7.16
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mu/command/cmd_musl.rb +4 -4
- data/lib/mu/har.rb +15 -3
- data/version.rb +1 -1
- metadata +14 -14
data/lib/mu/command/cmd_musl.rb
CHANGED
@@ -62,10 +62,10 @@ class Mu
|
|
62
62
|
# Get har object and hosts
|
63
63
|
har_file = @options.har_files[0]
|
64
64
|
@har = Har.new har_file, @options, @ignores
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
File.open(@options.scenario,'w') do |file|
|
66
|
+
created_musl = @har.generate file
|
67
|
+
file.write created_musl
|
68
|
+
end
|
69
69
|
puts "You have successfully generated a scenario: #{@options.scenario}"
|
70
70
|
else
|
71
71
|
# Handle failure logic here
|
data/lib/mu/har.rb
CHANGED
@@ -109,11 +109,15 @@ class Har
|
|
109
109
|
m['url']['pathname'] = m['url_object'].path || '/'
|
110
110
|
m["url"]["search"] = m["url_object"].query || ''
|
111
111
|
m["url"]["hash"] = m["url_object"].fragment || ''
|
112
|
+
require 'pp'
|
113
|
+
#pp entry if entry['request']['headers'].length < 1
|
114
|
+
#raise "die" if entry['request']['headers'].length < 1
|
112
115
|
|
113
116
|
# Create the host entry hash with underscores instead of dots for the host value
|
114
117
|
entry['request']['headers'].each do |header|
|
115
118
|
if (!host && header['name'].downcase === 'host')
|
116
119
|
host = header['value']
|
120
|
+
|
117
121
|
# Set the hosts_seen value to host_count and increment the host_count unless we have already seen the host
|
118
122
|
hosts_seen[host] += host_count && host_count += 1 unless hosts_seen.has_key?(host)
|
119
123
|
|
@@ -124,10 +128,10 @@ class Har
|
|
124
128
|
if entry['musl'][host].match /^[0-9]/
|
125
129
|
entry['musl'][host] = 'host_' + entry['musl'][host]
|
126
130
|
end
|
127
|
-
|
128
131
|
end
|
129
132
|
end
|
130
|
-
|
133
|
+
# request-headers are empty
|
134
|
+
next if host.nil? && entry['musl'][host].nil?
|
131
135
|
@hosts[host] = entry['musl'][host]
|
132
136
|
entry['musl']['host'] = entry['musl'][host]
|
133
137
|
|
@@ -263,7 +267,7 @@ class Har
|
|
263
267
|
m = entry['musl']
|
264
268
|
req = entry['request']
|
265
269
|
res = entry['response']
|
266
|
-
next if m.nil?
|
270
|
+
next if m.nil? || m['host'].nil?
|
267
271
|
|
268
272
|
xopts = { 'src' => '&host_0', 'dst' => '&' + "#{m['host']}" }
|
269
273
|
xklass = m['url_object'].scheme === 'http' ? 'tcp' : 'ssl'
|
@@ -330,9 +334,16 @@ class Har
|
|
330
334
|
|
331
335
|
if (res['cookies'] && res['cookies'].length > 0)
|
332
336
|
cr.variables do |vs|
|
337
|
+
seen = {}
|
333
338
|
res['cookies'].each do |cookie|
|
339
|
+
# Check to make sure we are not repeating a variable name
|
340
|
+
repeated = '@' + cookie['name'].gsub(/[^a-zA-Z0-9_]/, '_') + ' = ' + '/' + cookie['name'] + '=([^;]*)' + '/:1'
|
341
|
+
next if seen.has_key?(repeated)
|
342
|
+
seen[repeated] = cookie
|
343
|
+
# Build the variable
|
334
344
|
vs.create('@' + cookie['name'].gsub(/[^a-zA-Z0-9_]/, '_') + ' = ' + '/' + cookie['name'] + '=([^;]*)' + '/:1')
|
335
345
|
end
|
346
|
+
|
336
347
|
end
|
337
348
|
end
|
338
349
|
end
|
@@ -417,6 +428,7 @@ class Har
|
|
417
428
|
end
|
418
429
|
cs_send.literal_no_format("\"");
|
419
430
|
else
|
431
|
+
payload.gsub!(/#\{|##\{/, "\\x23{")
|
420
432
|
cs_send.literal_no_format("\"" + self.escape(payload) + "\"")
|
421
433
|
end
|
422
434
|
|
data/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION='5.7.
|
1
|
+
VERSION='5.7.16'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.7.
|
4
|
+
version: 5.7.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-04-
|
12
|
+
date: 2011-04-21 00:00:00.000000000 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
requirement: &
|
17
|
+
requirement: &12873620 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.4.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *12873620
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rest-client
|
28
|
-
requirement: &
|
28
|
+
requirement: &12873160 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.6.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *12873160
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: mime-types
|
39
|
-
requirement: &
|
39
|
+
requirement: &12872700 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '1.16'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *12872700
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json
|
50
|
-
requirement: &
|
50
|
+
requirement: &12872320 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *12872320
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: hexy
|
61
|
-
requirement: &
|
61
|
+
requirement: &12871780 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 0.1.1
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *12871780
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: uuid
|
72
|
-
requirement: &
|
72
|
+
requirement: &12871280 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
version: 2.0.2
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *12871280
|
81
81
|
description: ! "The Mu gem allows users to include mu libraries within scripts\n that
|
82
82
|
interact with mu appliance software. The gem also supplies command line interfaces\n
|
83
83
|
\ to many of these same libraries"
|