ruby_smb 3.3.13 → 3.3.14
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/cortex.yaml +2 -0
- data/lib/ruby_smb/dcerpc/error.rb +10 -0
- data/lib/ruby_smb/dcerpc/gkdi/gkdi_ffc_dh_key.rb +17 -0
- data/lib/ruby_smb/dcerpc/gkdi/gkdi_ffc_dh_parameters.rb +17 -0
- data/lib/ruby_smb/dcerpc/gkdi/gkdi_get_key_request.rb +26 -0
- data/lib/ruby_smb/dcerpc/gkdi/gkdi_get_key_response.rb +23 -0
- data/lib/ruby_smb/dcerpc/gkdi/gkdi_group_key_envelope.rb +51 -0
- data/lib/ruby_smb/dcerpc/gkdi.rb +54 -0
- data/lib/ruby_smb/dcerpc/request.rb +3 -0
- data/lib/ruby_smb/dcerpc/samr.rb +12 -3
- data/lib/ruby_smb/dcerpc.rb +1 -0
- data/lib/ruby_smb/version.rb +1 -1
- data/spec/lib/ruby_smb/dcerpc/samr/user_properties_spec.rb +76 -0
- metadata +15 -33
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0e82037a7cede300c72e18aca227e16dd6f6c67c46e739aae546ff990562a20
|
4
|
+
data.tar.gz: ac24976008cf479989fbea0edc88ceafec163c998a7d5a87ea4b085ae1f6fcd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9f2bae08d955e0a977b5614a577ff1801f8b977a675f21a70ec7dac2b695d6215d91cd3f69b37b354022aba93494be64687b90e96c8a7b75390384eb7dd0b99
|
7
|
+
data.tar.gz: de80907d4e9d1d91de05ca1b363ba94da81f2f39fd089bad724d1b6c2b5fae8ed8048b66ac84238174f573dbb362e49d809734446e5381b1914bc5cd9b8286ce
|
data/cortex.yaml
CHANGED
@@ -70,6 +70,16 @@ module RubySMB
|
|
70
70
|
super(msg)
|
71
71
|
end
|
72
72
|
end
|
73
|
+
|
74
|
+
class GkdiError < DcerpcError
|
75
|
+
include RubySMB::Error::UnexpectedStatusCode::Mixin
|
76
|
+
|
77
|
+
def initialize(msg, status_code: nil)
|
78
|
+
self.status_code = status_code unless status_code.nil?
|
79
|
+
|
80
|
+
super(msg)
|
81
|
+
end
|
82
|
+
end
|
73
83
|
end
|
74
84
|
end
|
75
85
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Gkdi
|
4
|
+
|
5
|
+
# [2.2.3.1 FFC DH Key](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gkdi/f8770f01-036d-4bf6-a4cf-1bd0e3913404)
|
6
|
+
class GkdiFfcDhKey < BinData::Record
|
7
|
+
endian :little
|
8
|
+
|
9
|
+
uint8_array :magic, initial_length: 4, initial_value: [ 0x44, 0x48, 0x50, 0x42 ]
|
10
|
+
uint32 :key_length
|
11
|
+
uint8_array :field_order, initial_length: :key_length
|
12
|
+
uint8_array :generator, initial_length: :key_length
|
13
|
+
uint8_array :public_key, initial_length: :key_length
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Gkdi
|
4
|
+
|
5
|
+
# [2.2.2 FFC DH Parameters](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gkdi/e15ae269-ee21-446a-a480-de3ea243db5f)
|
6
|
+
class GkdiFfcDhParameters < BinData::Record
|
7
|
+
endian :little
|
8
|
+
|
9
|
+
uint32 :parameters_length, initial_value: -> { (key_length * 2) + offset_of(generator) }
|
10
|
+
uint8_array :magic, initial_length: 4, initial_value: [ 0x44, 0x48, 0x50, 0x4d ]
|
11
|
+
uint32 :key_length
|
12
|
+
uint8_array :field_order, initial_length: :key_length
|
13
|
+
uint8_array :generator, initial_length: :key_length
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Gkdi
|
4
|
+
|
5
|
+
# [3.1.4.1 GetKey (Opnum 0)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gkdi/4cac87a3-521e-4918-a272-240f8fabed39)
|
6
|
+
class GkdiGetKeyRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_uint32 :cb_target_sd
|
12
|
+
ndr_conf_array :pb_target_sd, type: :ndr_uint8
|
13
|
+
uuid_ptr :p_root_key_id
|
14
|
+
ndr_int32 :l0_key_id
|
15
|
+
ndr_int32 :l1_key_id
|
16
|
+
ndr_int32 :l2_key_id
|
17
|
+
|
18
|
+
def initialize_instance
|
19
|
+
super
|
20
|
+
@opnum = GKDI_GET_KEY
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Gkdi
|
4
|
+
|
5
|
+
# [3.1.4.1 GetKey (Opnum 0)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gkdi/4cac87a3-521e-4918-a272-240f8fabed39)
|
6
|
+
class GkdiGetKeyResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_uint32 :pcb_out
|
12
|
+
ndr_byte_conf_array_ptr :pbb_out
|
13
|
+
ndr_uint32 :error_status
|
14
|
+
|
15
|
+
def initialize_instance
|
16
|
+
super
|
17
|
+
@opnum = GKDI_GET_KEY
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Gkdi
|
4
|
+
|
5
|
+
# [2.2.4 Group Key Envelope](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gkdi/192c061c-e740-4aa0-ab1d-6954fb3e58f7)
|
6
|
+
class GkdiGroupKeyEnvelope < BinData::Record
|
7
|
+
endian :little
|
8
|
+
|
9
|
+
uint32 :version
|
10
|
+
uint8_array :magic, initial_length: 4, initial_value: [ 0x4b, 0x44, 0x53, 0x5b ]
|
11
|
+
uint32 :dw_flags
|
12
|
+
uint32 :l0_index
|
13
|
+
uint32 :l1_index
|
14
|
+
uint32 :l2_index
|
15
|
+
uuid :root_key_identifier
|
16
|
+
uint32 :cb_kdf_algorithm
|
17
|
+
uint32 :cb_kdf_parameters, initial_value: -> { kdf_parameters.length }
|
18
|
+
uint32 :cb_secret_agreement_algorithm
|
19
|
+
uint32 :cb_secret_agreement_parameters
|
20
|
+
uint32 :private_key_length
|
21
|
+
uint32 :public_key_length
|
22
|
+
uint32 :cb_l1_key
|
23
|
+
uint32 :cb_l2_key
|
24
|
+
uint32 :cb_domain_name
|
25
|
+
uint32 :cb_forest_name
|
26
|
+
stringz16 :kdf_algorithm
|
27
|
+
struct :kdf_parameters, only_if: -> { cb_kdf_parameters > 0 } do
|
28
|
+
uint8_array :block0, initial_length: 8, initial_value: [ 0, 0, 0, 0, 1, 0, 0, 0 ]
|
29
|
+
uint32 :length_of_hash_name, initial_value: -> { hash_algorithm_name.length }
|
30
|
+
uint8_array :block1, initial_length: 4, initial_value: [ 0, 0, 0, 0 ]
|
31
|
+
stringz16 :hash_algorithm_name
|
32
|
+
end
|
33
|
+
stringz16 :secret_agreement_algorithm
|
34
|
+
uint8_array :secret_agreement_parameters, initial_length: :cb_secret_agreement_parameters
|
35
|
+
stringz16 :domain_name
|
36
|
+
stringz16 :forest_name
|
37
|
+
uint8_array :l1_key, initial_length: 64, only_if: -> { cb_l1_key != 0 }
|
38
|
+
uint8_array :l2_key, initial_length: :l2_key_length, only_if: -> { cb_l2_key != 0 }
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def l2_key_length
|
43
|
+
return 0 if cb_l2_key == 0
|
44
|
+
return 64 if (dw_flags & (1 << 31)) == 0
|
45
|
+
|
46
|
+
public_key_length
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Gkdi
|
4
|
+
|
5
|
+
# [2.1 Transport](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gkdi/2ca63ad2-2464-4a41-ba84-2e0270e95e86)
|
6
|
+
UUID = 'b9785960-524f-11df-8b6d-83dcded72085'
|
7
|
+
VER_MAJOR = 1
|
8
|
+
VER_MINOR = 0
|
9
|
+
|
10
|
+
# Operation numbers
|
11
|
+
GKDI_GET_KEY = 0x0000
|
12
|
+
|
13
|
+
require 'ruby_smb/dcerpc/gkdi/gkdi_get_key_request'
|
14
|
+
require 'ruby_smb/dcerpc/gkdi/gkdi_get_key_response'
|
15
|
+
require 'ruby_smb/dcerpc/gkdi/gkdi_ffc_dh_key'
|
16
|
+
require 'ruby_smb/dcerpc/gkdi/gkdi_ffc_dh_parameters'
|
17
|
+
require 'ruby_smb/dcerpc/gkdi/gkdi_group_key_envelope'
|
18
|
+
|
19
|
+
def gkdi_get_key(target_sd, root_key_id, l0_key_id, l1_key_id, l2_key_id)
|
20
|
+
target_sd = target_sd.to_binary_s if target_sd.respond_to?(:to_binary_s)
|
21
|
+
|
22
|
+
gkdi_get_key_request = GkdiGetKeyRequest.new(
|
23
|
+
cb_target_sd: target_sd.length,
|
24
|
+
pb_target_sd: target_sd.unpack('C*'),
|
25
|
+
p_root_key_id: root_key_id,
|
26
|
+
l0_key_id: l0_key_id,
|
27
|
+
l1_key_id: l1_key_id,
|
28
|
+
l2_key_id: l2_key_id
|
29
|
+
)
|
30
|
+
|
31
|
+
response = dcerpc_request(
|
32
|
+
gkdi_get_key_request,
|
33
|
+
auth_level: @auth_level,
|
34
|
+
auth_type: @auth_type
|
35
|
+
)
|
36
|
+
begin
|
37
|
+
gkdi_get_key_response = GkdiGetKeyResponse.read(response)
|
38
|
+
rescue IOError
|
39
|
+
raise RubySMB::Dcerpc::Error::InvalidPacket, 'Error reading CertServerRequestResponse'
|
40
|
+
end
|
41
|
+
unless gkdi_get_key_response.error_status == WindowsError::NTStatus::STATUS_SUCCESS
|
42
|
+
status_code = WindowsError::Win32.find_by_retval(gkdi_get_key_response.error_status.value).first
|
43
|
+
raise RubySMB::Dcerpc::Error::GkdiError.new(
|
44
|
+
"Error returned with gkdi_get_key: #{status_code}",
|
45
|
+
status_code: status_code
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
GkdiGroupKeyEnvelope.read(gkdi_get_key_response.pbb_out.snapshot.pack('C*'))
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -124,6 +124,9 @@ module RubySMB
|
|
124
124
|
lsar_close_handle_request Lsarpc::LSAR_CLOSE_HANDLE
|
125
125
|
lsar_lookup_sids_request Lsarpc::LSAR_LOOKUP_SIDS
|
126
126
|
end
|
127
|
+
choice 'Gkdi', selection: -> { opnum } do
|
128
|
+
gkdi_get_key_request Gkdi::GKDI_GET_KEY
|
129
|
+
end
|
127
130
|
string :default
|
128
131
|
end
|
129
132
|
|
data/lib/ruby_smb/dcerpc/samr.rb
CHANGED
@@ -522,16 +522,25 @@ module RubySMB
|
|
522
522
|
# [2.2.10.1 USER_PROPERTIES](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-samr/8263e7ab-aba9-43d2-8a36-3a9cb2dd3dad)
|
523
523
|
class UserProperties < BinData::Record
|
524
524
|
endian :little
|
525
|
+
hide :bytes_remaining
|
525
526
|
|
526
527
|
uint32 :reserved1
|
527
|
-
|
528
|
+
# Length, in bytes, of the entire structure, starting from the :reserved4 field (offset 12):
|
529
|
+
uint32 :struct_length, value: -> { num_bytes - 12}
|
528
530
|
uint16 :reserved2
|
529
531
|
uint16 :reserved3
|
530
532
|
string :reserved4, length: 96
|
531
533
|
uint16 :property_signature, initial_value: 0x50
|
532
|
-
|
533
|
-
|
534
|
+
count_bytes_remaining :bytes_remaining
|
535
|
+
# When there are zero `user_property` elements in the `:user_properties` field, this field MUST be omitted;
|
536
|
+
# the resultant `UserProperties` structure has a constant size of 0x6F bytes.
|
537
|
+
uint16 :property_count, value: -> { user_properties.size }, onlyif: :display_user_properties?
|
538
|
+
array :user_properties, type: :user_property, read_until: -> { array.size == property_count }, onlyif: :display_user_properties?
|
534
539
|
uint8 :reserved5
|
540
|
+
|
541
|
+
def display_user_properties?
|
542
|
+
(bytes_remaining > 1 && reading?) || user_properties.size > 0
|
543
|
+
end
|
535
544
|
end
|
536
545
|
|
537
546
|
# [2.2.10.7 KERB_KEY_DATA_NEW](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-samr/447520a5-e1cc-48cc-8fdc-b90db57f7eac)
|
data/lib/ruby_smb/dcerpc.rb
CHANGED
@@ -50,6 +50,7 @@ module RubySMB
|
|
50
50
|
require 'ruby_smb/dcerpc/icpr'
|
51
51
|
require 'ruby_smb/dcerpc/efsrpc'
|
52
52
|
require 'ruby_smb/dcerpc/lsarpc'
|
53
|
+
require 'ruby_smb/dcerpc/gkdi'
|
53
54
|
require 'ruby_smb/dcerpc/request'
|
54
55
|
require 'ruby_smb/dcerpc/response'
|
55
56
|
require 'ruby_smb/dcerpc/rpc_auth3'
|
data/lib/ruby_smb/version.rb
CHANGED
@@ -0,0 +1,76 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::Samr::UserProperties do
|
2
|
+
describe '#read' do
|
3
|
+
context 'when reading a structure with no user properties' do
|
4
|
+
let(:binary) { [ 0, 0x63, 0, 0, 0x50, 0].pack('L<L<S<S<x96<SC') }
|
5
|
+
let(:subject) { described_class.read(binary) }
|
6
|
+
|
7
|
+
it 'does not include the property_count' do
|
8
|
+
expect(subject.property_count?).to be_falsey
|
9
|
+
expect(subject.snapshot).to_not include(:property_count)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'does not include the user_properties' do
|
13
|
+
expect(subject.user_properties?).to be_falsey
|
14
|
+
expect(subject.snapshot).to_not include(:user_properties)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'serializes to the value that was read' do
|
18
|
+
expect(subject.to_binary_s).to eq(binary)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when reading a structure with two user properties' do
|
23
|
+
let(:user_property1) { RubySMB::Dcerpc::Samr::UserProperty.new(property_name: 'key1', property_value: 'value1') }
|
24
|
+
let(:user_property2) { RubySMB::Dcerpc::Samr::UserProperty.new(property_name: 'key2', property_value: 'value2') }
|
25
|
+
let(:user_properties) { user_property1.to_binary_s + user_property2.to_binary_s }
|
26
|
+
let(:binary) { [ 0, 0x63 + 2 + user_properties.length, 0, 0, 0x50, 2].pack('L<L<S<S<x96<S<S') + user_properties + "\x00".b }
|
27
|
+
let(:subject) { described_class.read(binary) }
|
28
|
+
|
29
|
+
it 'includes the property_count' do
|
30
|
+
expect(subject.property_count?).to be_truthy
|
31
|
+
expect(subject.property_count).to eq(2)
|
32
|
+
expect(subject.snapshot).to include(:property_count)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'includes the user_properties' do
|
36
|
+
expect(subject.user_properties?).to be_truthy
|
37
|
+
expect(subject.user_properties).to eq([user_property1, user_property2])
|
38
|
+
expect(subject.snapshot).to include(:user_properties)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'serializes to the value that was read' do
|
42
|
+
expect(subject.to_binary_s).to eq(binary)
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when #user_properties is cleared' do
|
46
|
+
before(:each) { subject.user_properties.clear }
|
47
|
+
|
48
|
+
it 'does not include the property_count' do
|
49
|
+
expect(subject.property_count?).to be_falsey
|
50
|
+
expect(subject.snapshot).to_not include(:property_count)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'does not include the user_properties' do
|
54
|
+
expect(subject.user_properties?).to be_falsey
|
55
|
+
expect(subject.snapshot).to_not include(:user_properties)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#initialize' do
|
62
|
+
let(:subject) { described_class.new }
|
63
|
+
|
64
|
+
it 'initializes #struct_length to 0x63' do
|
65
|
+
expect(subject.struct_length).to eq(0x63)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'initializes #property_signature to 0x50' do
|
69
|
+
expect(subject.property_signature).to eq(0x50)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'does not include user_properties' do
|
73
|
+
expect(subject.user_properties).to be_empty
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_smb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Metasploit Hackers
|
@@ -10,36 +10,10 @@ authors:
|
|
10
10
|
- Dev Mohanty
|
11
11
|
- Christophe De La Fuente
|
12
12
|
- Spencer McIntyre
|
13
|
-
autorequire:
|
13
|
+
autorequire:
|
14
14
|
bindir: bin
|
15
|
-
cert_chain:
|
16
|
-
-
|
17
|
-
-----BEGIN CERTIFICATE-----
|
18
|
-
MIIERDCCAqygAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBttc2Zk
|
19
|
-
ZXYvREM9bWV0YXNwbG9pdC9EQz1jb20wHhcNMjMxMDMwMTYwNDI1WhcNMjUxMDI5
|
20
|
-
MTYwNDI1WjAmMSQwIgYDVQQDDBttc2ZkZXYvREM9bWV0YXNwbG9pdC9EQz1jb20w
|
21
|
-
ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZN/EKv+yVjwiKWvjAVhjF
|
22
|
-
aWNYI0E9bJ5d1qKd29omRYX9a+OOKBCu5+394fyF5RjwU4mYGr2iopX9ixRJrWXH
|
23
|
-
ojs70tEvV1CmvP9rhz7JKzQQoJOkinrz4d+StIylxVxVdgm7DeiB3ruTwvl7qKUv
|
24
|
-
piWzhrBFiVU6XIEAwq6wNEmnv2D+Omyf4h0Tf99hc6G0QmBnU3XydqvnZ+AzUbBV
|
25
|
-
24RH3+NQoigLbvK4M5aOeYhk19di58hznebOw6twHzNczshrBeMFQp985ScNgsvF
|
26
|
-
rL+7HNNwpcpngERwZfzDNn7iYN5X3cyvTcykShtsuPMa5zXsYo42LZrsTF87DW38
|
27
|
-
D8sxL6Dgdqu25Mltdw9m+iD4rHSfb1KJYEoNO+WwBJLO2Y4d6G1CR66tVeWsZspb
|
28
|
-
zneOVC+sDuil7hOm+6a7Y2yrrRyT6IfL/07DywjPAIRUp5+Jn8ZrkWRNo2AOwWBG
|
29
|
-
k5gz7SfJPHuyVnPlxoMA0MTFCUnnnbyHu882TGoJGgMCAwEAAaN9MHswCQYDVR0T
|
30
|
-
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFIQfNa4E889ZE334cwU7eNu2hScH
|
31
|
-
MCAGA1UdEQQZMBeBFW1zZmRldkBtZXRhc3Bsb2l0LmNvbTAgBgNVHRIEGTAXgRVt
|
32
|
-
c2ZkZXZAbWV0YXNwbG9pdC5jb20wDQYJKoZIhvcNAQELBQADggGBAMfzvKcV27p7
|
33
|
-
pctmpW2JmIXLMrjNLyGJAxELH/t9pJueXdga7uj2fJkYQDbwGw5x4MGyFqhqJLH4
|
34
|
-
l/qsUF3PyAXDTSWLVaqXQVWO+IIHxecG0XjPXTNudzMU0hzqbqiBKvsW7/a3V5BP
|
35
|
-
SWlFzrFkoXWlPouFpoakyYMJjpW4SGdPzRv7pM4OhXtkXpHiRvx5985FrHgHlI89
|
36
|
-
NSIuIUbp8zqk4hP1i9MV0Lc/vTf2gOmo+RHnjqG1NiYfMCYyY/Mcd4W36kGOl468
|
37
|
-
I8VDTwgCufkAzFu7BJ5yCOueqtDcuq+d3YhAyU7NI4+Ja8EwazOnB+07sWhKpg7z
|
38
|
-
yuQ1mWYPmZfVQpoSVv1CvXsoqJYXVPBBLOacKKSj8ArVG6pPn9Bej7IOQdblaFjl
|
39
|
-
DgscAao7wB3xW2BWEp1KnaDWkf1x9ttgoBEYyuYwU7uatB67kBQG1PKvLt79wHvz
|
40
|
-
Dxs+KOjGbBRfMnPgVGYkORKVrZIwlaboHbDKxcVW5xv+oZc7KYXWGg==
|
41
|
-
-----END CERTIFICATE-----
|
42
|
-
date: 2024-12-06 00:00:00.000000000 Z
|
15
|
+
cert_chain: []
|
16
|
+
date: 2025-04-30 00:00:00.000000000 Z
|
43
17
|
dependencies:
|
44
18
|
- !ruby/object:Gem::Dependency
|
45
19
|
name: redcarpet
|
@@ -279,6 +253,12 @@ files:
|
|
279
253
|
- lib/ruby_smb/dcerpc/epm/epm_twrt.rb
|
280
254
|
- lib/ruby_smb/dcerpc/error.rb
|
281
255
|
- lib/ruby_smb/dcerpc/fault.rb
|
256
|
+
- lib/ruby_smb/dcerpc/gkdi.rb
|
257
|
+
- lib/ruby_smb/dcerpc/gkdi/gkdi_ffc_dh_key.rb
|
258
|
+
- lib/ruby_smb/dcerpc/gkdi/gkdi_ffc_dh_parameters.rb
|
259
|
+
- lib/ruby_smb/dcerpc/gkdi/gkdi_get_key_request.rb
|
260
|
+
- lib/ruby_smb/dcerpc/gkdi/gkdi_get_key_response.rb
|
261
|
+
- lib/ruby_smb/dcerpc/gkdi/gkdi_group_key_envelope.rb
|
282
262
|
- lib/ruby_smb/dcerpc/icpr.rb
|
283
263
|
- lib/ruby_smb/dcerpc/icpr/cert_server_request_request.rb
|
284
264
|
- lib/ruby_smb/dcerpc/icpr/cert_server_request_response.rb
|
@@ -746,6 +726,7 @@ files:
|
|
746
726
|
- spec/lib/ruby_smb/dcerpc/samr/samr_set_information_user2_response_spec.rb
|
747
727
|
- spec/lib/ruby_smb/dcerpc/samr/samr_unicode_change_password_user2_request_spec.rb
|
748
728
|
- spec/lib/ruby_smb/dcerpc/samr/samr_unicode_change_password_user2_response_spec.rb
|
729
|
+
- spec/lib/ruby_smb/dcerpc/samr/user_properties_spec.rb
|
749
730
|
- spec/lib/ruby_smb/dcerpc/samr_spec.rb
|
750
731
|
- spec/lib/ruby_smb/dcerpc/sec_trailer_spec.rb
|
751
732
|
- spec/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all_spec.rb
|
@@ -995,7 +976,7 @@ homepage: https://github.com/rapid7/ruby_smb
|
|
995
976
|
licenses:
|
996
977
|
- BSD-3-clause
|
997
978
|
metadata: {}
|
998
|
-
post_install_message:
|
979
|
+
post_install_message:
|
999
980
|
rdoc_options: []
|
1000
981
|
require_paths:
|
1001
982
|
- lib
|
@@ -1010,8 +991,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1010
991
|
- !ruby/object:Gem::Version
|
1011
992
|
version: '0'
|
1012
993
|
requirements: []
|
1013
|
-
rubygems_version: 3.
|
1014
|
-
signing_key:
|
994
|
+
rubygems_version: 3.4.19
|
995
|
+
signing_key:
|
1015
996
|
specification_version: 4
|
1016
997
|
summary: A pure Ruby implementation of the SMB Protocol Family
|
1017
998
|
test_files:
|
@@ -1096,6 +1077,7 @@ test_files:
|
|
1096
1077
|
- spec/lib/ruby_smb/dcerpc/samr/samr_set_information_user2_response_spec.rb
|
1097
1078
|
- spec/lib/ruby_smb/dcerpc/samr/samr_unicode_change_password_user2_request_spec.rb
|
1098
1079
|
- spec/lib/ruby_smb/dcerpc/samr/samr_unicode_change_password_user2_response_spec.rb
|
1080
|
+
- spec/lib/ruby_smb/dcerpc/samr/user_properties_spec.rb
|
1099
1081
|
- spec/lib/ruby_smb/dcerpc/samr_spec.rb
|
1100
1082
|
- spec/lib/ruby_smb/dcerpc/sec_trailer_spec.rb
|
1101
1083
|
- spec/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all_spec.rb
|
checksums.yaml.gz.sig
DELETED
Binary file
|
data.tar.gz.sig
DELETED
Binary file
|
metadata.gz.sig
DELETED
Binary file
|