uirusu 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +0 -6
- data/LICENSE +1 -1
- data/README.markdown +4 -4
- data/Rakefile +1 -1
- data/bin/uirusu +1 -1
- data/docs/NEWS.markdown +7 -0
- data/lib/uirusu.rb +32 -20
- data/lib/uirusu/cli/application.rb +18 -8
- data/lib/uirusu/scanner.rb +3 -3
- data/lib/uirusu/version.rb +5 -5
- data/lib/uirusu/vtcomment.rb +1 -1
- data/lib/uirusu/vtdomain.rb +1 -1
- data/lib/uirusu/vtfile.rb +44 -45
- data/lib/uirusu/vtipaddr.rb +1 -1
- data/lib/uirusu/vtresult.rb +1 -1
- data/lib/uirusu/vturl.rb +8 -6
- data/uirusu.gemspec +21 -26
- metadata +19 -21
- data/Gemfile.lock +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49e3532797b72c0f145b1f5f36a80acad2db42cc
|
4
|
+
data.tar.gz: 48a2b8320da1bef6327f98257f77103742aeff91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96599069413f823972277e52f97c2fa8f68f2ed90f84d7242f7751b8836d994c35d9b25cc7ee1f11732b6b72d8107b189a50b99aefa99a8d0e4696a2134123fd
|
7
|
+
data.tar.gz: b70a141bc7d943865d18f97e56b930efe000a178a0ddb4f171920d0123e7e29cb9a8482d53ba7e58c15c89bd9b2aedf17781ea501015dfb21b46dc9bbe5c6fd5
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.markdown
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
# uirusu [](http://badge.fury.io/rb/uirusu) [](http://badge.fury.io/rb/uirusu) [](https://travis-ci.org/hammackj/uirusu) [](https://codeclimate.com/github/hammackj/uirusu) [](http://inch-ci.org/github/hammackj/uirusu)
|
2
2
|
|
3
3
|
uirusu is an [Virustotal](http://www.virustotal.com) automation and convenience tool for hash, file and URL submission.
|
4
4
|
|
5
|
-
The current version is 1.0.
|
5
|
+
The current version is 1.1.0.
|
6
6
|
|
7
7
|
## Requirements
|
8
8
|
|
9
|
-
* ruby 2.
|
9
|
+
* ruby 2.4+
|
10
10
|
* json
|
11
11
|
* rest-client
|
12
12
|
* **public api key from [virustotal.com](http://www.virustotal.com)**
|
@@ -120,4 +120,4 @@ Uirusu::VTIPAddr.query_report(API_KEY, ip)
|
|
120
120
|
Uirusu is licensed under the MIT license see the `LICENSE` file for the full license.
|
121
121
|
|
122
122
|
## Contact
|
123
|
-
You can reach the team at jacob.hammack[@]
|
123
|
+
You can reach the team at jacob.hammack[@]hammackj[dot]com, http://www.hammackj.com, or contact hammackj
|
data/Rakefile
CHANGED
data/bin/uirusu
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
# Copyright (c) 2010-
|
3
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
4
4
|
#
|
5
5
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
# of this software and associated documentation files (the "Software"), to deal
|
data/docs/NEWS.markdown
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
# 1.1.0 (March 1, 2017)
|
4
|
+
- **Moved Github repository from http://github.com/arxopia/uirusu to http://github.com/hammackj/uirusu**
|
5
|
+
- Fixed File query report
|
6
|
+
- Fixed Url API
|
7
|
+
- Updated copyrights to 2017
|
8
|
+
- Fixed unit test for vturl
|
9
|
+
|
3
10
|
# 1.0.2 (September 21, 2016)
|
4
11
|
- Added Private API support [@joshporter1]
|
5
12
|
|
data/lib/uirusu.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -36,15 +36,22 @@ module Uirusu
|
|
36
36
|
raise "Invalid API Key"
|
37
37
|
end
|
38
38
|
|
39
|
+
# TODO get options to here.
|
40
|
+
#resource = RestClient::Resource.new(url, :verify_ssl=>false)
|
41
|
+
resource = RestClient::Resource.new(url)
|
42
|
+
|
39
43
|
begin
|
40
44
|
if post
|
41
|
-
response = RestClient.post url, **params
|
45
|
+
#response = RestClient.post url, **params
|
46
|
+
response = resource.post(params)
|
42
47
|
else
|
43
|
-
response = RestClient.get url, params: params
|
48
|
+
#response = RestClient.get url, params: params
|
49
|
+
response = resource.get(params)
|
44
50
|
end
|
45
51
|
rescue => e
|
46
52
|
response = e.response
|
47
53
|
end
|
54
|
+
|
48
55
|
self.parse_response response
|
49
56
|
end
|
50
57
|
|
@@ -54,24 +61,29 @@ module Uirusu
|
|
54
61
|
#
|
55
62
|
# @return [JSON] Parsed response
|
56
63
|
def self.parse_response(response)
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
JSON
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
64
|
+
puts "Parse Response"
|
65
|
+
begin
|
66
|
+
case response.code
|
67
|
+
when 429, 204
|
68
|
+
raise "Virustotal limit reached. Try again later."
|
69
|
+
when 403
|
70
|
+
raise "Invalid privileges, please check your API key."
|
71
|
+
when 200
|
72
|
+
# attempt to parse it as json, otherwise return the raw response
|
73
|
+
# network_traffic and download return non-JSON data
|
74
|
+
begin
|
75
|
+
JSON.parse(response)
|
76
|
+
rescue
|
77
|
+
response
|
78
|
+
end
|
79
|
+
when 500
|
80
|
+
nil
|
81
|
+
else
|
82
|
+
raise "Unknown Server error. (#{response.code})"
|
83
|
+
end
|
74
84
|
end
|
85
|
+
rescue => e
|
86
|
+
puts e.message
|
75
87
|
end
|
76
88
|
end
|
77
89
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -153,7 +153,7 @@ module Uirusu
|
|
153
153
|
|
154
154
|
# Create config skeleton
|
155
155
|
#
|
156
|
-
def create_config
|
156
|
+
def create_config file=CONFIG_FILE
|
157
157
|
f = File.expand_path(file)
|
158
158
|
|
159
159
|
if File.exists?(f) == false
|
@@ -168,7 +168,7 @@ module Uirusu
|
|
168
168
|
|
169
169
|
# Loads the .uirusu config file for the api key
|
170
170
|
#
|
171
|
-
def load_config
|
171
|
+
def load_config file=CONFIG_FILE
|
172
172
|
|
173
173
|
@config = nil
|
174
174
|
|
@@ -196,6 +196,20 @@ module Uirusu
|
|
196
196
|
end
|
197
197
|
|
198
198
|
@options[:timeout] = @config['virustotal']['timeout'] if @config['virustotal']['timeout'] != nil
|
199
|
+
@options["proxy"] = @config['virustotal']['proxy'] if @config['virustotal']['proxy'] != nil
|
200
|
+
@options["ssl_ca_cert"] = @config['virustotal']['ssl_ca_cert'] if @config['virustotal']['ssl_ca_cert'] != nil
|
201
|
+
@options["verify_ssl"] = @config['virustotal']['verify_ssl'] if @config['virustotal']['verify_ssl'] != nil
|
202
|
+
|
203
|
+
process_ssl_proxy
|
204
|
+
end
|
205
|
+
|
206
|
+
# Processes SSL and Proxy Related Options
|
207
|
+
#
|
208
|
+
def process_ssl_proxy
|
209
|
+
if @options['proxy'] != nil
|
210
|
+
puts "[DEBUG] Proxy enabled: #{@options['proxy']}"
|
211
|
+
RestClient.proxy = @options['proxy']
|
212
|
+
end
|
199
213
|
end
|
200
214
|
|
201
215
|
# Submits a file/url and waits for analysis to be complete and returns the results.
|
@@ -277,7 +291,7 @@ module Uirusu
|
|
277
291
|
end
|
278
292
|
end
|
279
293
|
|
280
|
-
#
|
294
|
+
# Main entry point for uirusu
|
281
295
|
#
|
282
296
|
def main(args)
|
283
297
|
parse_options(args)
|
@@ -293,10 +307,6 @@ module Uirusu
|
|
293
307
|
output_method = :to_xml
|
294
308
|
end
|
295
309
|
|
296
|
-
if @options['proxy'] != nil
|
297
|
-
RestClient.proxy = @options['proxy']
|
298
|
-
end
|
299
|
-
|
300
310
|
if @options[:directory] != nil
|
301
311
|
hashes = Uirusu::Scanner.scan(@options[:directory])
|
302
312
|
|
data/lib/uirusu/scanner.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -29,7 +29,7 @@ module Uirusu
|
|
29
29
|
# Recursively lists all files in a directory
|
30
30
|
# calling process_file on each file
|
31
31
|
#
|
32
|
-
def Scanner.recurse
|
32
|
+
def Scanner.recurse file_name
|
33
33
|
Dir.new("#{file_name}").each do |file|
|
34
34
|
next if file.match(/^\.+/)
|
35
35
|
path = "#{file_name}/#{file}"
|
@@ -44,7 +44,7 @@ module Uirusu
|
|
44
44
|
|
45
45
|
# Processes a file, hashing it with MD5
|
46
46
|
#
|
47
|
-
def Scanner.process_file
|
47
|
+
def Scanner.process_file file
|
48
48
|
begin
|
49
49
|
digest = Digest::MD5.hexdigest(File.read(file))
|
50
50
|
@hash_list << digest
|
data/lib/uirusu/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -20,9 +20,9 @@
|
|
20
20
|
|
21
21
|
module Uirusu
|
22
22
|
APP_NAME = "uirusu"
|
23
|
-
VERSION = "1.0
|
24
|
-
HOME_PAGE = "http://
|
23
|
+
VERSION = "1.1.0"
|
24
|
+
HOME_PAGE = "http://hammackj.github.io/uirusu"
|
25
25
|
AUTHOR = "Jacob Hammack"
|
26
|
-
EMAIL = "jacob.hammack@
|
27
|
-
GITHUB = "http://github.com/
|
26
|
+
EMAIL = "jacob.hammack@hammackj.com"
|
27
|
+
GITHUB = "http://github.com/hammackj/uirusu"
|
28
28
|
end
|
data/lib/uirusu/vtcomment.rb
CHANGED
data/lib/uirusu/vtdomain.rb
CHANGED
data/lib/uirusu/vtfile.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -23,9 +23,9 @@ module Uirusu
|
|
23
23
|
# Module for Accessing the File scan and report functionalities of the
|
24
24
|
# Virustotal.com public API
|
25
25
|
module VTFile
|
26
|
-
|
26
|
+
SCAN_URL = Uirusu::VT_API + "/file/scan"
|
27
27
|
SCAN_UPLOAD_URL = Uirusu::VT_API + "/file/scan/upload_url"
|
28
|
-
|
28
|
+
RESCAN_URL = Uirusu::VT_API + "/file/rescan"
|
29
29
|
RESCAN_DELETE_URL = Uirusu::VT_API + "/file/rescan/delete"
|
30
30
|
REPORT_URL = Uirusu::VT_API + "/file/report"
|
31
31
|
BEHAVIOUR_URL = Uirusu::VT_API + "/file/behaviour"
|
@@ -53,28 +53,28 @@ module Uirusu
|
|
53
53
|
apikey: api_key,
|
54
54
|
resource: resource
|
55
55
|
}
|
56
|
-
Uirusu.query_api REPORT_URL, params.merge!(args)
|
56
|
+
Uirusu.query_api REPORT_URL, params.merge!(args), true
|
57
57
|
end
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
59
|
+
# Submits a file to Virustotal.com for analysis
|
60
|
+
#
|
61
|
+
# @param api_key Virustotal.com API key
|
62
|
+
# @param path_to_file Path to file on disk to upload
|
63
|
+
# @params **args named arguments for optional parameters - https://www.virustotal.com/en/documentation/private-api/#scan
|
64
|
+
#
|
65
|
+
# @return [JSON] Parsed response
|
66
|
+
def self.scan_file(api_key, path_to_file, **args)
|
67
|
+
if !File.exists?(path_to_file)
|
68
|
+
raise Errno::ENOENT
|
69
|
+
end
|
70
|
+
|
71
|
+
params = {
|
72
|
+
apikey: api_key,
|
73
|
+
filename: path_to_file,
|
74
|
+
file: File.new(path_to_file, 'rb')
|
75
|
+
}
|
76
|
+
Uirusu.query_api SCAN_URL, params.merge!(args), true
|
77
|
+
end
|
78
78
|
|
79
79
|
# Retrieves a custom upload URL for files larger than 32MB
|
80
80
|
#
|
@@ -82,31 +82,30 @@ module Uirusu
|
|
82
82
|
#
|
83
83
|
# @return [JSON] Parsed response
|
84
84
|
def self.scan_upload_url(api_key)
|
85
|
-
params = {
|
85
|
+
params = {
|
86
86
|
apikey: api_key
|
87
87
|
}
|
88
88
|
Uirusu.query_api SCAN_UPLOAD_URL, params
|
89
89
|
end
|
90
90
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
end
|
91
|
+
# Requests an existing file to be rescanned.
|
92
|
+
#
|
93
|
+
# @param api_key Virustotal.com API key
|
94
|
+
# @param resource MD5/sha1/sha256/scan_id to rescan
|
95
|
+
# @params **args named arguments for optional parameters - https://www.virustotal.com/en/documentation/private-api/#rescan
|
96
|
+
#
|
97
|
+
# @return [JSON] Parsed response
|
98
|
+
def self.rescan_file(api_key, resource, **args)
|
99
|
+
if resource == nil
|
100
|
+
raise "Invalid resource, must be md5/sha1/sha256/scan_id"
|
101
|
+
end
|
102
|
+
|
103
|
+
params = {
|
104
|
+
apikey: api_key,
|
105
|
+
resource: resource
|
106
|
+
}
|
107
|
+
Uirusu.query_api RESCAN_URL, params.merge!(args), true
|
108
|
+
end
|
110
109
|
|
111
110
|
# Deletes a scheduled rescan request.
|
112
111
|
#
|
@@ -119,7 +118,7 @@ module Uirusu
|
|
119
118
|
raise "Invalid resource, must be md5/sha1/sha256/scan_id"
|
120
119
|
end
|
121
120
|
|
122
|
-
params = {
|
121
|
+
params = {
|
123
122
|
apikey: api_key,
|
124
123
|
resource: resource
|
125
124
|
}
|
@@ -236,6 +235,6 @@ module Uirusu
|
|
236
235
|
# @return [JSON] Parsed response
|
237
236
|
def self.false_positives(api_key, limit=100)
|
238
237
|
raise "#false_positives not yet implemented. This API is only available to antivirus vendors participating in VirusTotal."
|
239
|
-
end
|
238
|
+
end
|
240
239
|
end
|
241
240
|
end
|
data/lib/uirusu/vtipaddr.rb
CHANGED
data/lib/uirusu/vtresult.rb
CHANGED
data/lib/uirusu/vturl.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -31,16 +31,17 @@ module Uirusu
|
|
31
31
|
# @param resource url to submit
|
32
32
|
#
|
33
33
|
# @return [JSON] Parsed response
|
34
|
-
def self.scan_url
|
34
|
+
def self.scan_url api_key, resource
|
35
35
|
if resource == nil
|
36
36
|
raise "Invalid resource, must be a valid url"
|
37
37
|
end
|
38
38
|
|
39
39
|
params = {
|
40
40
|
apikey: api_key,
|
41
|
-
|
41
|
+
url: resource
|
42
42
|
}
|
43
|
-
|
43
|
+
|
44
|
+
Uirusu.query_api SCAN_URL, params, true
|
44
45
|
end
|
45
46
|
|
46
47
|
# Searches reports by URL from Virustotal.com
|
@@ -49,7 +50,7 @@ module Uirusu
|
|
49
50
|
# @param resource url to search
|
50
51
|
#
|
51
52
|
# @return [JSON] Parsed response
|
52
|
-
def self.query_report
|
53
|
+
def self.query_report api_key, resource, **args
|
53
54
|
if resource == nil
|
54
55
|
raise "Invalid resource, must be a valid url"
|
55
56
|
end
|
@@ -58,7 +59,8 @@ module Uirusu
|
|
58
59
|
apikey: api_key,
|
59
60
|
resource: resource
|
60
61
|
}
|
61
|
-
|
62
|
+
|
63
|
+
Uirusu.query_api REPORT_URL, params.merge!(args), true
|
62
64
|
end
|
63
65
|
|
64
66
|
# Searches reports by URL from Virustotal.com
|
data/uirusu.gemspec
CHANGED
@@ -1,28 +1,23 @@
|
|
1
|
-
# Copyright (c)
|
2
|
-
# All rights reserved.
|
1
|
+
# Copyright (c) 2010-2017 Jacob Hammack.
|
3
2
|
#
|
4
|
-
#
|
5
|
-
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
6
9
|
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# * Redistributions in binary form must reproduce the above copyright
|
10
|
-
# notice, this list of conditions and the following disclaimer in the
|
11
|
-
# documentation and/or other materials provided with the distribution.
|
12
|
-
# * Neither the name of the Arxopia LLC nor the names of its contributors
|
13
|
-
# may be used to endorse or promote products derived from this software
|
14
|
-
# without specific prior written permission.
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
15
12
|
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
|
24
|
-
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
25
|
-
# OF THE POSSIBILITY OF SUCH DAMAGE.
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
26
21
|
|
27
22
|
base = __FILE__
|
28
23
|
$:.unshift(File.join(File.dirname(base), 'lib'))
|
@@ -48,11 +43,11 @@ Gem::Specification.new do |s|
|
|
48
43
|
s.has_rdoc = 'yard'
|
49
44
|
s.extra_rdoc_files = ["README.markdown", "LICENSE", "docs/NEWS.markdown", "docs/TODO.markdown"]
|
50
45
|
|
51
|
-
s.add_runtime_dependency 'rake', '~>
|
52
|
-
s.add_runtime_dependency 'json', '~>
|
53
|
-
s.add_runtime_dependency 'rest-client', '~>
|
46
|
+
s.add_runtime_dependency 'rake', '~> 12.0', '>= 12.0.0'
|
47
|
+
s.add_runtime_dependency 'json', '~> 2.0', '>= 2.0.3'
|
48
|
+
s.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.0'
|
54
49
|
|
55
50
|
s.add_development_dependency 'yard', '~> 0.8', '>= 0.8.7.6'
|
56
|
-
s.add_development_dependency 'minitest', '~> 5.0', '>= 5.
|
51
|
+
s.add_development_dependency 'minitest', '~> 5.0', '>= 5.10.1'
|
57
52
|
s.add_development_dependency 'test-unit', '~> 3.2', ">= 3.2"
|
58
53
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uirusu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Hammack
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -16,60 +16,60 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '12.0'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 12.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '12.0'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 12.0.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: json
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '2.0'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: 2.0.3
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '2.0'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
52
|
+
version: 2.0.3
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: rest-client
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
59
|
+
version: '2.0'
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 2.0.0
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '2.0'
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
72
|
+
version: 2.0.0
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: yard
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,7 +99,7 @@ dependencies:
|
|
99
99
|
version: '5.0'
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
102
|
+
version: 5.10.1
|
103
103
|
type: :development
|
104
104
|
prerelease: false
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '5.0'
|
110
110
|
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
112
|
+
version: 5.10.1
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: test-unit
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,7 +131,7 @@ dependencies:
|
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '3.2'
|
133
133
|
description: uirusu is tool and REST library for interacting with Virustotal.org
|
134
|
-
email: jacob.hammack@
|
134
|
+
email: jacob.hammack@hammackj.com
|
135
135
|
executables:
|
136
136
|
- uirusu
|
137
137
|
extensions: []
|
@@ -142,7 +142,6 @@ extra_rdoc_files:
|
|
142
142
|
- docs/TODO.markdown
|
143
143
|
files:
|
144
144
|
- Gemfile
|
145
|
-
- Gemfile.lock
|
146
145
|
- LICENSE
|
147
146
|
- README.markdown
|
148
147
|
- Rakefile
|
@@ -160,7 +159,7 @@ files:
|
|
160
159
|
- lib/uirusu/vtresult.rb
|
161
160
|
- lib/uirusu/vturl.rb
|
162
161
|
- uirusu.gemspec
|
163
|
-
homepage: http://
|
162
|
+
homepage: http://hammackj.github.io/uirusu
|
164
163
|
licenses:
|
165
164
|
- MIT
|
166
165
|
metadata: {}
|
@@ -180,9 +179,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
179
|
version: '0'
|
181
180
|
requirements: []
|
182
181
|
rubyforge_project:
|
183
|
-
rubygems_version: 2.6.
|
182
|
+
rubygems_version: 2.6.8
|
184
183
|
signing_key:
|
185
184
|
specification_version: 4
|
186
185
|
summary: uirusu
|
187
186
|
test_files: []
|
188
|
-
has_rdoc: yard
|
data/Gemfile.lock
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
uirusu (1.0.1)
|
5
|
-
json (~> 1.8, >= 1.8.3)
|
6
|
-
rest-client (~> 1.8, >= 1.8.0)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
domain_name (0.5.20160615)
|
12
|
-
unf (>= 0.0.5, < 1.0.0)
|
13
|
-
http-cookie (1.0.2)
|
14
|
-
domain_name (~> 0.5)
|
15
|
-
json (1.8.3)
|
16
|
-
mime-types (2.99.2)
|
17
|
-
minitest (5.9.0)
|
18
|
-
netrc (0.11.0)
|
19
|
-
power_assert (0.3.0)
|
20
|
-
rest-client (1.8.0)
|
21
|
-
http-cookie (>= 1.0.2, < 2.0)
|
22
|
-
mime-types (>= 1.16, < 3.0)
|
23
|
-
netrc (~> 0.7)
|
24
|
-
test-unit (3.2.0)
|
25
|
-
power_assert
|
26
|
-
unf (0.1.4)
|
27
|
-
unf_ext
|
28
|
-
unf_ext (0.0.7.2)
|
29
|
-
yard (0.8.7.6)
|
30
|
-
|
31
|
-
PLATFORMS
|
32
|
-
ruby
|
33
|
-
|
34
|
-
DEPENDENCIES
|
35
|
-
minitest (~> 5.0, >= 5.9)
|
36
|
-
test-unit (~> 3.2, >= 3.2)
|
37
|
-
uirusu!
|
38
|
-
yard (~> 0.8, >= 0.8.7.6)
|
39
|
-
|
40
|
-
BUNDLED WITH
|
41
|
-
1.12.5
|