ronin-support 1.0.2 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -2
- data/ChangeLog.md +27 -0
- data/README.md +0 -1
- data/lib/ronin/support/binary/core_ext/array.rb +7 -2
- data/lib/ronin/support/binary/core_ext/string.rb +7 -2
- data/lib/ronin/support/binary/ctypes/object_type.rb +7 -1
- data/lib/ronin/support/binary/ctypes/os/linux.rb +2 -2
- data/lib/ronin/support/binary/template.rb +37 -2
- data/lib/ronin/support/cli/io_shell.rb +2 -0
- data/lib/ronin/support/crypto/cert.rb +17 -9
- data/lib/ronin/support/encoding/html/core_ext/integer.rb +1 -1
- data/lib/ronin/support/network/http/mixin.rb +32 -38
- data/lib/ronin/support/network/ip.rb +4 -1
- data/lib/ronin/support/network/ssl/mixin.rb +2 -0
- data/lib/ronin/support/network/ssl.rb +3 -2
- data/lib/ronin/support/text/entropy.rb +1 -1
- data/lib/ronin/support/version.rb +1 -1
- data/lib/ronin/support.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6f75dd96200bd01190ad5ae040cc28dfc658c3f6bcf6c7f299bcdb01d1ee974
|
4
|
+
data.tar.gz: 2a9b6e98f9959efacbbc81fccecbaa68b1620a8f52e38efdc941dcdba74ba38d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 604e499c76bfd98e82dd2711a203edb85263742df23f128179d52b283c1f6e468334a34b456119b76c1a0d84b2d06969100d4b75e880a5b4ab963e6ccf244742
|
7
|
+
data.tar.gz: 843289f09e088afc611ee793f645cdb978bb51613d69176591599c26fdc4e8bfcc8b255e76fc01a7b8c40b1024aa94b69976754de3d9ef84b9ae5eecc62d4223
|
data/.github/workflows/ruby.yml
CHANGED
@@ -16,7 +16,7 @@ jobs:
|
|
16
16
|
# - truffleruby
|
17
17
|
name: Ruby ${{ matrix.ruby }}
|
18
18
|
steps:
|
19
|
-
- uses: actions/checkout@
|
19
|
+
- uses: actions/checkout@v4
|
20
20
|
- name: Set up Ruby
|
21
21
|
uses: ruby/setup-ruby@v1
|
22
22
|
with:
|
@@ -31,7 +31,7 @@ jobs:
|
|
31
31
|
rubocop:
|
32
32
|
runs-on: ubuntu-latest
|
33
33
|
steps:
|
34
|
-
- uses: actions/checkout@
|
34
|
+
- uses: actions/checkout@v4
|
35
35
|
- name: Set up Ruby
|
36
36
|
uses: ruby/setup-ruby@v1
|
37
37
|
with:
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
### 1.0.4 / 2023-12-15
|
2
|
+
|
3
|
+
* Fixed a bug in {Array#pack} where complex types (ex: `[[:uint32, 4], 10]`)
|
4
|
+
were not being packed correctly.
|
5
|
+
* Fixed a bug in {String#unpack} where complex types (ex: `[[:uint32, 4], 10]`)
|
6
|
+
were not being unpacked correctly.
|
7
|
+
* Fixed a bug in {Ronin::Support::Binary::CTypes::ObjectType#initialize} when
|
8
|
+
the object's type has an infinite size, such as an unbounded Array type.
|
9
|
+
* Allow using non-RSA keys in all SSL/TLS methods.
|
10
|
+
|
11
|
+
### 1.0.3 / 2023-09-19
|
12
|
+
|
13
|
+
* {Ronin::Support::Crypto::Cert::Name#entries} now returns UTF-8 encoded
|
14
|
+
Strings.
|
15
|
+
* {Ronin::Support::Crypto::Cert.Name} now passes through
|
16
|
+
{Ronin::Support::Crypto::Cert::Name} objects instead of copying them.
|
17
|
+
* Fixed a bug in {Ronin::Support::Crypto::Cert.generate} when it is given a
|
18
|
+
`OpenSSL::PKey::EC` signing key.
|
19
|
+
* Fixed a bug in {Ronin::Support::Network::SSL::Mixin#ssl_connect} where the
|
20
|
+
`OpenSSL::SSL::SSLSocket#hostname` attribute was not being set to the
|
21
|
+
host being connected to, which prevented connecting to TLS servers that use
|
22
|
+
SNI.
|
23
|
+
* Fixed {Ronin::Support::Network::IP#set} to return `self`.
|
24
|
+
* Fixed {Ronin::Support::Network::IP#inspect} to call the lazy-initialized
|
25
|
+
{Ronin::Support::Network::IP#address} method instead of the `@address`
|
26
|
+
instance variable directly.
|
27
|
+
|
1
28
|
### 1.0.2 / 2023-06-09
|
2
29
|
|
3
30
|
* Fixed a bug in {Ronin::Support::Encoding::Base32.decode},
|
data/README.md
CHANGED
@@ -8,7 +8,6 @@
|
|
8
8
|
* [Issues](https://github.com/ronin-rb/ronin-support/issues)
|
9
9
|
* [Documentation](https://ronin-rb.dev/docs/ronin-support/frames)
|
10
10
|
* [Discord](https://discord.gg/6WAb3PsVX9) |
|
11
|
-
[Twitter](https://twitter.com/ronin_rb) |
|
12
11
|
[Mastodon](https://infosec.exchange/@ronin_rb)
|
13
12
|
|
14
13
|
## Description
|
@@ -41,6 +41,11 @@ class Array
|
|
41
41
|
# :mips, :mips_le, :mips64, :mips64_le, nil] :arch
|
42
42
|
# The desired architecture to pack the data for.
|
43
43
|
#
|
44
|
+
# @option kwargs [:linux, :macos, :windows,
|
45
|
+
# :android, :apple_ios, :bsd,
|
46
|
+
# :freebsd, :openbsd, :netbsd] :os
|
47
|
+
# The Operating System (OS) to use.
|
48
|
+
#
|
44
49
|
# @return [String]
|
45
50
|
# The packed Array.
|
46
51
|
#
|
@@ -67,8 +72,8 @@ class Array
|
|
67
72
|
if (arguments.length == 1 && arguments.first.kind_of?(String))
|
68
73
|
pack_original(arguments.first)
|
69
74
|
else
|
70
|
-
|
71
|
-
|
75
|
+
template = Ronin::Support::Binary::Template.new(arguments,**kwargs)
|
76
|
+
template.pack(*self)
|
72
77
|
end
|
73
78
|
end
|
74
79
|
|
@@ -43,6 +43,11 @@ class String
|
|
43
43
|
# :mips, :mips_le, :mips64, :mips64_le, nil] :arch
|
44
44
|
# The desired architecture that the data was packed for.
|
45
45
|
#
|
46
|
+
# @option kwargs [:linux, :macos, :windows,
|
47
|
+
# :android, :apple_ios, :bsd,
|
48
|
+
# :freebsd, :openbsd, :netbsd] :os
|
49
|
+
# The Operating System (OS) to use.
|
50
|
+
#
|
46
51
|
# @return [Array]
|
47
52
|
# The values unpacked from the String.
|
48
53
|
#
|
@@ -69,8 +74,8 @@ class String
|
|
69
74
|
if (arguments.length == 1 && arguments.first.kind_of?(String))
|
70
75
|
unpack_original(arguments.first)
|
71
76
|
else
|
72
|
-
|
73
|
-
|
77
|
+
template = Ronin::Support::Binary::Template.new(arguments,**kwargs)
|
78
|
+
template.unpack(self)
|
74
79
|
end
|
75
80
|
end
|
76
81
|
|
@@ -44,7 +44,7 @@ module Ronin
|
|
44
44
|
typedef :long, :__blkcnt_t
|
45
45
|
typedef :long, :__blksize_t
|
46
46
|
typedef :long, :blksize_t
|
47
|
-
typedef
|
47
|
+
typedef :pointer, :__caddr_t
|
48
48
|
typedef :int, :__clockid_t
|
49
49
|
typedef :int, :clockid_t
|
50
50
|
typedef :long, :__clock_t
|
@@ -170,7 +170,7 @@ module Ronin
|
|
170
170
|
typedef :uint, :nlink_t
|
171
171
|
typedef :long_long, :__off64_t
|
172
172
|
typedef :long_long, :off_t
|
173
|
-
typedef
|
173
|
+
typedef :pointer, :__qaddr_t
|
174
174
|
typedef :long_long, :__quad_t
|
175
175
|
typedef :long_long, :quad_t
|
176
176
|
typedef :ulong_long, :__rlim64_t
|
@@ -132,11 +132,16 @@ module Ronin
|
|
132
132
|
# :arm64, :arm64_le, :arm64_be] :arch
|
133
133
|
# The desired architecture for the values within the template.
|
134
134
|
#
|
135
|
+
# @option kwargs [:linux, :macos, :windows,
|
136
|
+
# :android, :apple_ios, :bsd,
|
137
|
+
# :freebsd, :openbsd, :netbsd] :os
|
138
|
+
# The Operating System (OS) to use.
|
139
|
+
#
|
135
140
|
# @raise [ArgumentError]
|
136
141
|
# A given type is not known.
|
137
142
|
#
|
138
143
|
# @example
|
139
|
-
# template = Template.new([:uint32, [:char,
|
144
|
+
# template = Template.new([:uint32, [:char, 10]])
|
140
145
|
# template.pack(0x123456, ['A', 'B', 'C'])
|
141
146
|
# # => "CBA\x00XYZ\x00\x00\x00\x00\x00\x00\x00"
|
142
147
|
# template.unpack("CBA\x00XYZ\x00\x00\x00\x00\x00\x00\x00")
|
@@ -164,9 +169,39 @@ module Ronin
|
|
164
169
|
end
|
165
170
|
end
|
166
171
|
|
172
|
+
#
|
173
|
+
# Alias for `Template.new`.
|
174
|
+
#
|
175
|
+
# @param [::Array<Symbol, (Symbol, Integer)>] fields
|
176
|
+
# The C-types which the packer will use.
|
177
|
+
#
|
178
|
+
# @param [Hash{Symbol => Object}] kwargs
|
179
|
+
# Additional keyword arguments.
|
180
|
+
#
|
181
|
+
# @option kwargs [:little, :big, :net, nil] :endian
|
182
|
+
# The desired endianness of the values within the template.
|
183
|
+
#
|
184
|
+
# @option kwargs [:x86, :x86_64,
|
185
|
+
# :ppc, :ppc64,
|
186
|
+
# :mips, :mips_le, :mips_be,
|
187
|
+
# :mips64, :mips64_le, :mips64_be,
|
188
|
+
# :arm, :arm_le, :arm_be,
|
189
|
+
# :arm64, :arm64_le, :arm64_be] :arch
|
190
|
+
# The desired architecture for the values within the template.
|
191
|
+
#
|
192
|
+
# @option kwargs [:linux, :macos, :windows,
|
193
|
+
# :android, :apple_ios, :bsd,
|
194
|
+
# :freebsd, :openbsd, :netbsd] :os
|
195
|
+
# The Operating System (OS) to use.
|
196
|
+
#
|
197
|
+
# @return [Template]
|
198
|
+
# The new template object.
|
199
|
+
#
|
200
|
+
# @raise [ArgumentError]
|
201
|
+
# A given type is not known.
|
167
202
|
#
|
168
203
|
# @example
|
169
|
-
# template = Template
|
204
|
+
# template = Template[:uint32, [:char, 10]]
|
170
205
|
# template.pack(0x123456, ['A', 'B', 'C'])
|
171
206
|
# # => "CBA\x00XYZ\x00\x00\x00\x00\x00\x00\x00"
|
172
207
|
# template.unpack("CBA\x00XYZ\x00\x00\x00\x00\x00\x00\x00")
|
@@ -18,6 +18,7 @@
|
|
18
18
|
|
19
19
|
require 'ronin/support/crypto/openssl'
|
20
20
|
require 'ronin/support/crypto/key/rsa'
|
21
|
+
require 'ronin/support/crypto/key/ec'
|
21
22
|
|
22
23
|
module Ronin
|
23
24
|
module Support
|
@@ -83,7 +84,9 @@ module Ronin
|
|
83
84
|
# @return [Hash{String => String}]
|
84
85
|
#
|
85
86
|
def entries
|
86
|
-
@entries ||= to_a.to_h
|
87
|
+
@entries ||= to_a.to_h do |(oid,value,type)|
|
88
|
+
[oid, value && value.force_encoding(Encoding::UTF_8)]
|
89
|
+
end
|
87
90
|
end
|
88
91
|
|
89
92
|
alias to_h entries
|
@@ -160,7 +163,7 @@ module Ronin
|
|
160
163
|
#
|
161
164
|
# Coerces a value into a {Name} object.
|
162
165
|
#
|
163
|
-
# @param [String, Hash, OpenSSL::X509::Name] name
|
166
|
+
# @param [String, Hash, OpenSSL::X509::Name, Name] name
|
164
167
|
# The name value to coerce.
|
165
168
|
#
|
166
169
|
# @return [Cert::Name]
|
@@ -170,8 +173,9 @@ module Ronin
|
|
170
173
|
#
|
171
174
|
def self.Name(name)
|
172
175
|
case name
|
173
|
-
when String
|
174
|
-
when Hash
|
176
|
+
when String then Name.parse(name)
|
177
|
+
when Hash then Name.build(**name)
|
178
|
+
when Name then name
|
175
179
|
when OpenSSL::X509::Name
|
176
180
|
new_name = Name.allocate
|
177
181
|
new_name.send(:initialize_copy,name)
|
@@ -269,7 +273,7 @@ module Ronin
|
|
269
273
|
# key: key,
|
270
274
|
# subject: {
|
271
275
|
# common_name: 'localhost',
|
272
|
-
# organization: 'Test Co
|
276
|
+
# organization: 'Test Co.',
|
273
277
|
# organizational_unit: 'Test Dept',
|
274
278
|
# locality: 'Test City',
|
275
279
|
# state: 'XX',
|
@@ -288,7 +292,7 @@ module Ronin
|
|
288
292
|
# key: ca_key,
|
289
293
|
# subject: {
|
290
294
|
# common_name: 'Test CA',
|
291
|
-
# organization: 'Test CA, Inc
|
295
|
+
# organization: 'Test CA, Inc.',
|
292
296
|
# organizational_unit: 'Test Dept',
|
293
297
|
# locality: 'Test City',
|
294
298
|
# state: 'XX',
|
@@ -309,7 +313,7 @@ module Ronin
|
|
309
313
|
# ca_cert: ca_cert,
|
310
314
|
# subject: {
|
311
315
|
# common_name: 'test.com',
|
312
|
-
# organization: 'Test Co
|
316
|
+
# organization: 'Test Co.',
|
313
317
|
# organizational_unit: 'Test Dept',
|
314
318
|
# locality: 'Test City',
|
315
319
|
# state: 'XX',
|
@@ -343,7 +347,10 @@ module Ronin
|
|
343
347
|
|
344
348
|
cert.not_before = not_before
|
345
349
|
cert.not_after = not_after
|
346
|
-
cert.public_key = key
|
350
|
+
cert.public_key = case key
|
351
|
+
when OpenSSL::PKey::EC then key
|
352
|
+
else key.public_key
|
353
|
+
end
|
347
354
|
cert.subject = Name(subject) if subject
|
348
355
|
cert.issuer = if ca_cert then ca_cert.subject
|
349
356
|
else cert.subject
|
@@ -491,7 +498,7 @@ module Ronin
|
|
491
498
|
#
|
492
499
|
# Coerces a value into a {Cert} object.
|
493
500
|
#
|
494
|
-
# @param [String, OpenSSL::X509::Certificate] cert
|
501
|
+
# @param [String, OpenSSL::X509::Certificate, Cert] cert
|
495
502
|
# The certificate String or `OpenSSL::X509::Certificate` value.
|
496
503
|
#
|
497
504
|
# @return [Cert]
|
@@ -505,6 +512,7 @@ module Ronin
|
|
505
512
|
def self.Cert(cert)
|
506
513
|
case cert
|
507
514
|
when String then Cert.parse(cert)
|
515
|
+
when Cert then cert
|
508
516
|
when OpenSSL::X509::Certificate
|
509
517
|
new_cert = Cert.allocate
|
510
518
|
new_cert.send(:initialize_copy,cert)
|
@@ -182,7 +182,7 @@ module Ronin
|
|
182
182
|
# The HTTP method to use for the request.
|
183
183
|
#
|
184
184
|
# @param [URI::HTTP, Addressable::URI, String] url
|
185
|
-
#
|
185
|
+
# The URL to create the HTTP request for.
|
186
186
|
#
|
187
187
|
# @!macro request_kwargs
|
188
188
|
# @!macro connect_kwargs
|
@@ -215,7 +215,7 @@ module Ronin
|
|
215
215
|
# The HTTP method to use for the request.
|
216
216
|
#
|
217
217
|
# @param [URI::HTTP, Addressable::URI, String] url
|
218
|
-
#
|
218
|
+
# The URL to create the HTTP request for.
|
219
219
|
#
|
220
220
|
# @!macro request_kwargs
|
221
221
|
# @!macro connect_kwargs
|
@@ -240,7 +240,7 @@ module Ronin
|
|
240
240
|
# The HTTP method to use for the request.
|
241
241
|
#
|
242
242
|
# @param [URI::HTTP, Addressable::URI, String] url
|
243
|
-
#
|
243
|
+
# The URL to create the HTTP request for.
|
244
244
|
#
|
245
245
|
# @!macro request_kwargs
|
246
246
|
# @!macro connect_kwargs
|
@@ -263,7 +263,7 @@ module Ronin
|
|
263
263
|
# The HTTP method to use for the request.
|
264
264
|
#
|
265
265
|
# @param [URI::HTTP, Addressable::URI, String] url
|
266
|
-
#
|
266
|
+
# The URL to create the HTTP request for.
|
267
267
|
#
|
268
268
|
# @!macro request_kwargs
|
269
269
|
# @!macro connect_kwargs
|
@@ -285,7 +285,7 @@ module Ronin
|
|
285
285
|
# Sends an HTTP request and returns the `Server` header.
|
286
286
|
#
|
287
287
|
# @param [URI::HTTP, Addressable::URI, String] url
|
288
|
-
#
|
288
|
+
# The URL to create the HTTP request for.
|
289
289
|
#
|
290
290
|
# @!macro connect_kwargs
|
291
291
|
# @!macro request_kwargs
|
@@ -307,7 +307,7 @@ module Ronin
|
|
307
307
|
# Sends an HTTP request and returns the `X-Powered-By` header.
|
308
308
|
#
|
309
309
|
# @param [URI::HTTP, Addressable::URI, String] url
|
310
|
-
#
|
310
|
+
# The URL to create the HTTP request for.
|
311
311
|
#
|
312
312
|
# @!macro request_kwargs
|
313
313
|
# @!macro connect_kwargs
|
@@ -332,7 +332,7 @@ module Ronin
|
|
332
332
|
# The HTTP method to use for the request.
|
333
333
|
#
|
334
334
|
# @param [URI::HTTP, Addressable::URI, String] url
|
335
|
-
#
|
335
|
+
# The URL to create the HTTP request for.
|
336
336
|
#
|
337
337
|
# @!macro request_kwargs
|
338
338
|
# @!macro connect_kwargs
|
@@ -354,7 +354,7 @@ module Ronin
|
|
354
354
|
# Performs a `COPY` request for the given URI.
|
355
355
|
#
|
356
356
|
# @param [URI::HTTP, Addressable::URI, String] url
|
357
|
-
#
|
357
|
+
# The URL to create the HTTP request for.
|
358
358
|
#
|
359
359
|
# @!macro request_kwargs
|
360
360
|
# @!macro connect_kwargs
|
@@ -372,15 +372,15 @@ module Ronin
|
|
372
372
|
#
|
373
373
|
# @api public
|
374
374
|
#
|
375
|
-
def http_copy(url, ssl: nil, **kwargs)
|
376
|
-
Network::HTTP.copy(url, ssl: ssl, **kwargs)
|
375
|
+
def http_copy(url, ssl: nil, **kwargs,&block)
|
376
|
+
Network::HTTP.copy(url, ssl: ssl, **kwargs,&block)
|
377
377
|
end
|
378
378
|
|
379
379
|
#
|
380
380
|
# Performs a `DELETE` request for the given URI.
|
381
381
|
#
|
382
382
|
# @param [URI::HTTP, Addressable::URI, String] url
|
383
|
-
#
|
383
|
+
# The URL to create the HTTP request for.
|
384
384
|
#
|
385
385
|
# @!macro request_kwargs
|
386
386
|
# @!macro connect_kwargs
|
@@ -406,7 +406,7 @@ module Ronin
|
|
406
406
|
# Performs a `GET` request for the given URI.
|
407
407
|
#
|
408
408
|
# @param [URI::HTTP, Addressable::URI, String] url
|
409
|
-
#
|
409
|
+
# The URL to create the HTTP request for.
|
410
410
|
#
|
411
411
|
# @!macro request_kwargs
|
412
412
|
# @!macro connect_kwargs
|
@@ -433,7 +433,7 @@ module Ronin
|
|
433
433
|
# headers.
|
434
434
|
#
|
435
435
|
# @param [URI::HTTP, Addressable::URI, String] url
|
436
|
-
#
|
436
|
+
# The URL to create the HTTP request for.
|
437
437
|
#
|
438
438
|
# @!macro request_kwargs
|
439
439
|
# @!macro connect_kwargs
|
@@ -456,7 +456,7 @@ module Ronin
|
|
456
456
|
# header(s).
|
457
457
|
#
|
458
458
|
# @param [URI::HTTP, Addressable::URI, String] url
|
459
|
-
#
|
459
|
+
# The URL to create the HTTP request for.
|
460
460
|
#
|
461
461
|
# @!macro request_kwargs
|
462
462
|
# @!macro connect_kwargs
|
@@ -477,7 +477,7 @@ module Ronin
|
|
477
477
|
# body.
|
478
478
|
#
|
479
479
|
# @param [URI::HTTP, Addressable::URI, String] url
|
480
|
-
#
|
480
|
+
# The URL to create the HTTP request for.
|
481
481
|
#
|
482
482
|
# @!macro request_kwargs
|
483
483
|
# @!macro connect_kwargs
|
@@ -497,7 +497,7 @@ module Ronin
|
|
497
497
|
# Performs a `HEAD` request for the given URI.
|
498
498
|
#
|
499
499
|
# @param [URI::HTTP, Addressable::URI, String] url
|
500
|
-
#
|
500
|
+
# The URL to create the HTTP request for.
|
501
501
|
#
|
502
502
|
# @!macro request_kwargs
|
503
503
|
# @!macro connect_kwargs
|
@@ -523,7 +523,7 @@ module Ronin
|
|
523
523
|
# Performs a `LOCK` request for the given URI.
|
524
524
|
#
|
525
525
|
# @param [URI::HTTP, Addressable::URI, String] url
|
526
|
-
#
|
526
|
+
# The URL to create the HTTP request for.
|
527
527
|
#
|
528
528
|
# @!macro request_kwargs
|
529
529
|
# @!macro connect_kwargs
|
@@ -549,7 +549,7 @@ module Ronin
|
|
549
549
|
# Performs a `MKCOL` request for the given URI.
|
550
550
|
#
|
551
551
|
# @param [URI::HTTP, Addressable::URI, String] url
|
552
|
-
#
|
552
|
+
# The URL to create the HTTP request for.
|
553
553
|
#
|
554
554
|
# @!macro request_kwargs
|
555
555
|
# @!macro connect_kwargs
|
@@ -575,7 +575,7 @@ module Ronin
|
|
575
575
|
# Performs a `MOVE` request for the given URI.
|
576
576
|
#
|
577
577
|
# @param [URI::HTTP, Addressable::URI, String] url
|
578
|
-
#
|
578
|
+
# The URL to create the HTTP request for.
|
579
579
|
#
|
580
580
|
# @!macro request_kwargs
|
581
581
|
# @!macro connect_kwargs
|
@@ -601,7 +601,7 @@ module Ronin
|
|
601
601
|
# Performs a `OPTIONS` request for the given URI.
|
602
602
|
#
|
603
603
|
# @param [URI::HTTP, Addressable::URI, String] url
|
604
|
-
#
|
604
|
+
# The URL to create the HTTP request for.
|
605
605
|
#
|
606
606
|
# @!macro request_kwargs
|
607
607
|
# @!macro connect_kwargs
|
@@ -628,17 +628,11 @@ module Ronin
|
|
628
628
|
# `Allow` response header.
|
629
629
|
#
|
630
630
|
# @param [URI::HTTP, Addressable::URI, String] url
|
631
|
-
#
|
631
|
+
# The URL to create the HTTP request for.
|
632
632
|
#
|
633
633
|
# @!macro request_kwargs
|
634
634
|
# @!macro connect_kwargs
|
635
635
|
#
|
636
|
-
# @yield [response]
|
637
|
-
# If a block is given it will be passed the received HTTP response.
|
638
|
-
#
|
639
|
-
# @yieldparam [Net::HTTPRresponse] response
|
640
|
-
# The received HTTP response object.
|
641
|
-
#
|
642
636
|
# @return [Array<Symbol>]
|
643
637
|
# The allowed HTTP request methods for the given URL.
|
644
638
|
#
|
@@ -646,15 +640,15 @@ module Ronin
|
|
646
640
|
#
|
647
641
|
# @api public
|
648
642
|
#
|
649
|
-
def http_allowed_methods(url, ssl: nil, **kwargs
|
650
|
-
Network::HTTP.allowed_methods(url, ssl: ssl, **kwargs
|
643
|
+
def http_allowed_methods(url, ssl: nil, **kwargs)
|
644
|
+
Network::HTTP.allowed_methods(url, ssl: ssl, **kwargs)
|
651
645
|
end
|
652
646
|
|
653
647
|
#
|
654
648
|
# Performs a `PATCH` request for the given URI.
|
655
649
|
#
|
656
650
|
# @param [URI::HTTP, Addressable::URI, String] url
|
657
|
-
#
|
651
|
+
# The URL to create the HTTP request for.
|
658
652
|
#
|
659
653
|
# @!macro request_kwargs
|
660
654
|
# @!macro connect_kwargs
|
@@ -682,7 +676,7 @@ module Ronin
|
|
682
676
|
# Performs a `POST` request for the given URI.
|
683
677
|
#
|
684
678
|
# @param [URI::HTTP, Addressable::URI, String] url
|
685
|
-
#
|
679
|
+
# The URL to create the HTTP request for.
|
686
680
|
#
|
687
681
|
# @!macro request_kwargs
|
688
682
|
# @!macro connect_kwargs
|
@@ -709,7 +703,7 @@ module Ronin
|
|
709
703
|
# headers.
|
710
704
|
#
|
711
705
|
# @param [URI::HTTP, Addressable::URI, String] url
|
712
|
-
#
|
706
|
+
# The URL to create the HTTP request for.
|
713
707
|
#
|
714
708
|
# @!macro request_kwargs
|
715
709
|
# @!macro connect_kwargs
|
@@ -732,7 +726,7 @@ module Ronin
|
|
732
726
|
# response body.
|
733
727
|
#
|
734
728
|
# @param [URI::HTTP, Addressable::URI, String] url
|
735
|
-
#
|
729
|
+
# The URL to create the HTTP request for.
|
736
730
|
#
|
737
731
|
# @!macro request_kwargs
|
738
732
|
# @!macro connect_kwargs
|
@@ -752,7 +746,7 @@ module Ronin
|
|
752
746
|
# Performs a `PROPFIND` request for the given URI.
|
753
747
|
#
|
754
748
|
# @param [URI::HTTP, Addressable::URI, String] url
|
755
|
-
#
|
749
|
+
# The URL to create the HTTP request for.
|
756
750
|
#
|
757
751
|
# @!macro request_kwargs
|
758
752
|
# @!macro connect_kwargs
|
@@ -780,7 +774,7 @@ module Ronin
|
|
780
774
|
# Performs a `PROPPATCH` request for the given URI.
|
781
775
|
#
|
782
776
|
# @param [URI::HTTP, Addressable::URI, String] url
|
783
|
-
#
|
777
|
+
# The URL to create the HTTP request for.
|
784
778
|
#
|
785
779
|
# @!macro request_kwargs
|
786
780
|
# @!macro connect_kwargs
|
@@ -808,7 +802,7 @@ module Ronin
|
|
808
802
|
# Performs a `PUT` request for the given URI.
|
809
803
|
#
|
810
804
|
# @param [URI::HTTP, Addressable::URI, String] url
|
811
|
-
#
|
805
|
+
# The URL to create the HTTP request for.
|
812
806
|
#
|
813
807
|
# @!macro request_kwargs
|
814
808
|
# @!macro connect_kwargs
|
@@ -836,7 +830,7 @@ module Ronin
|
|
836
830
|
# Performs a `TRACE` request for the given URI.
|
837
831
|
#
|
838
832
|
# @param [URI::HTTP, Addressable::URI, String] url
|
839
|
-
#
|
833
|
+
# The URL to create the HTTP request for.
|
840
834
|
#
|
841
835
|
# @!macro request_kwargs
|
842
836
|
# @!macro connect_kwargs
|
@@ -862,7 +856,7 @@ module Ronin
|
|
862
856
|
# Performs a `UNLOCK` request for the given URI.
|
863
857
|
#
|
864
858
|
# @param [URI::HTTP, Addressable::URI, String] url
|
865
|
-
#
|
859
|
+
# The URL to create the HTTP request for.
|
866
860
|
#
|
867
861
|
# @!macro request_kwargs
|
868
862
|
# @!macro connect_kwargs
|
@@ -116,6 +116,8 @@ module Ronin
|
|
116
116
|
# @param [Integer] family
|
117
117
|
# Optional IP address family.
|
118
118
|
#
|
119
|
+
# @return [self]
|
120
|
+
#
|
119
121
|
# @api private
|
120
122
|
#
|
121
123
|
def set(addr,*family)
|
@@ -123,6 +125,7 @@ module Ronin
|
|
123
125
|
|
124
126
|
# unset the cached IP address since the numeric address has changed
|
125
127
|
@address = nil
|
128
|
+
return self
|
126
129
|
end
|
127
130
|
|
128
131
|
public
|
@@ -557,7 +560,7 @@ module Ronin
|
|
557
560
|
# The inspected IP object.
|
558
561
|
#
|
559
562
|
def inspect
|
560
|
-
"#<#{self.class}: #{
|
563
|
+
"#<#{self.class}: #{address}>"
|
561
564
|
end
|
562
565
|
|
563
566
|
end
|
@@ -16,7 +16,8 @@
|
|
16
16
|
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'ronin/support/
|
19
|
+
require 'ronin/support/crypto/openssl'
|
20
|
+
require 'ronin/support/crypto/key'
|
20
21
|
require 'ronin/support/network/ssl/local_key'
|
21
22
|
require 'ronin/support/network/ssl/local_cert'
|
22
23
|
require 'ronin/support/network/ssl/proxy'
|
@@ -148,7 +149,7 @@ module Ronin
|
|
148
149
|
context.verify_mode = VERIFY[verify]
|
149
150
|
|
150
151
|
if (key_file || key) && (cert_file || cert)
|
151
|
-
context.key = if key_file then Crypto::Key
|
152
|
+
context.key = if key_file then Crypto::Key.load_file(key_file)
|
152
153
|
else key
|
153
154
|
end
|
154
155
|
|
data/lib/ronin/support.rb
CHANGED
@@ -28,6 +28,20 @@ require 'ronin/support/text'
|
|
28
28
|
require 'ronin/support/version'
|
29
29
|
|
30
30
|
module Ronin
|
31
|
+
#
|
32
|
+
# Top-level namespace for `ronin-support`.
|
33
|
+
#
|
34
|
+
# ## Example
|
35
|
+
#
|
36
|
+
# require 'ronin/support'
|
37
|
+
# include Ronin::Support
|
38
|
+
#
|
39
|
+
# "hello world".base64_encode
|
40
|
+
# # => "aGVsbG8gd29ybGQ=\n"
|
41
|
+
#
|
42
|
+
# http_get 'https://example.com/'
|
43
|
+
# # => #<Net::HTTPOK 200 OK readbody=true>
|
44
|
+
#
|
31
45
|
module Support
|
32
46
|
include Mixin
|
33
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ronin-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chars
|