uirusu 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Gem Version](https://badge.fury.io/rb/uirusu.png)](http://badge.fury.io/rb/uirusu) [![Build Status](https://travis-ci.org/
|
1
|
+
# uirusu [![Gem Version](https://badge.fury.io/rb/uirusu.png)](http://badge.fury.io/rb/uirusu) [![Build Status](https://travis-ci.org/hammackj/uirusu.svg)](https://travis-ci.org/hammackj/uirusu) [![Code Climate](https://codeclimate.com/github/hammackj/uirusu/badges/gpa.svg)](https://codeclimate.com/github/hammackj/uirusu) [![Inline docs](http://inch-ci.org/github/hammackj/uirusu.svg?branch=master)](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
|