ruby_smb 3.2.0 → 3.3.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/verify.yml +8 -9
  4. data/README.md +1 -0
  5. data/cortex.yaml +15 -0
  6. data/examples/dump_secrets_from_sid.rb +2 -1
  7. data/lib/ruby_smb/client.rb +6 -4
  8. data/lib/ruby_smb/dcerpc/alter_context.rb +30 -0
  9. data/lib/ruby_smb/dcerpc/alter_context_resp.rb +42 -0
  10. data/lib/ruby_smb/dcerpc/bind.rb +3 -35
  11. data/lib/ruby_smb/dcerpc/bind_ack.rb +0 -31
  12. data/lib/ruby_smb/dcerpc/client.rb +10 -4
  13. data/lib/ruby_smb/dcerpc/drsr.rb +13 -13
  14. data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_request.rb +22 -0
  15. data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_response.rb +21 -0
  16. data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_request.rb +20 -0
  17. data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_response.rb +21 -0
  18. data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_request.rb +20 -0
  19. data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_response.rb +21 -0
  20. data/lib/ruby_smb/dcerpc/encrypting_file_system.rb +52 -0
  21. data/lib/ruby_smb/dcerpc/icpr.rb +3 -2
  22. data/lib/ruby_smb/dcerpc/ndr.rb +148 -3
  23. data/lib/ruby_smb/dcerpc/p_cont_list_t.rb +37 -0
  24. data/lib/ruby_smb/dcerpc/p_result_list_t.rb +13 -0
  25. data/lib/ruby_smb/dcerpc/p_result_t.rb +15 -0
  26. data/lib/ruby_smb/dcerpc/port_any_t.rb +11 -0
  27. data/lib/ruby_smb/dcerpc/request.rb +8 -3
  28. data/lib/ruby_smb/dcerpc/response.rb +6 -1
  29. data/lib/ruby_smb/dcerpc/samr.rb +4 -2
  30. data/lib/ruby_smb/dcerpc.rb +165 -122
  31. data/lib/ruby_smb/dispatcher/socket.rb +1 -1
  32. data/lib/ruby_smb/field/file_time.rb +2 -2
  33. data/lib/ruby_smb/field/utime.rb +2 -2
  34. data/lib/ruby_smb/generic_packet.rb +2 -2
  35. data/lib/ruby_smb/gss/provider/ntlm.rb +12 -5
  36. data/lib/ruby_smb/ntlm/client.rb +4 -0
  37. data/lib/ruby_smb/ntlm/custom/string_encoder.rb +22 -0
  38. data/lib/ruby_smb/ntlm.rb +37 -0
  39. data/lib/ruby_smb/server/server_client/share_io.rb +2 -2
  40. data/lib/ruby_smb/server/server_client/tree_connect.rb +2 -2
  41. data/lib/ruby_smb/server/share/provider/disk.rb +2 -2
  42. data/lib/ruby_smb/server/share/provider/processor.rb +25 -0
  43. data/lib/ruby_smb/server/share/provider/virtual_disk.rb +3 -3
  44. data/lib/ruby_smb/server/share/provider.rb +48 -1
  45. data/lib/ruby_smb/smb1/data_block.rb +2 -2
  46. data/lib/ruby_smb/smb1/packet/nt_create_andx_request.rb +1 -1
  47. data/lib/ruby_smb/smb1/parameter_block.rb +2 -2
  48. data/lib/ruby_smb/smb1/pipe.rb +4 -0
  49. data/lib/ruby_smb/smb2/create_context.rb +5 -2
  50. data/lib/ruby_smb/smb2/packet/negotiate_request.rb +5 -5
  51. data/lib/ruby_smb/smb2/packet/negotiate_response.rb +1 -1
  52. data/lib/ruby_smb/smb2/pipe.rb +4 -0
  53. data/lib/ruby_smb/smb2/tree.rb +3 -1
  54. data/lib/ruby_smb/utils.rb +15 -0
  55. data/lib/ruby_smb/version.rb +1 -1
  56. data/lib/ruby_smb.rb +2 -0
  57. data/spec/lib/ruby_smb/client_spec.rb +4 -4
  58. data/spec/lib/ruby_smb/dcerpc/client_spec.rb +31 -16
  59. data/spec/lib/ruby_smb/dcerpc/drsr_spec.rb +4 -1
  60. data/spec/lib/ruby_smb/dcerpc/ndr_spec.rb +198 -0
  61. data/spec/lib/ruby_smb/dcerpc/request_spec.rb +0 -6
  62. data/spec/lib/ruby_smb/dcerpc/response_spec.rb +4 -12
  63. data/spec/lib/ruby_smb/dcerpc/sec_trailer_spec.rb +0 -14
  64. data/spec/lib/ruby_smb/dcerpc/winreg_spec.rb +2 -2
  65. data/spec/lib/ruby_smb/smb1/packet/read_andx_request_spec.rb +2 -2
  66. data/spec/lib/ruby_smb/smb1/packet/write_andx_request_spec.rb +1 -1
  67. data/spec/lib/ruby_smb/smb2/create_context/create_context_request_spec.rb +35 -0
  68. data/spec/lib/ruby_smb/smb2/tree_spec.rb +5 -0
  69. data.tar.gz.sig +0 -0
  70. metadata +41 -86
  71. metadata.gz.sig +0 -0
@@ -77,12 +77,6 @@ RSpec.describe RubySMB::Dcerpc::Response do
77
77
  packet.pdu_header.auth_length = 10
78
78
  expect(packet.auth_pad?).to be true
79
79
  end
80
-
81
- it 'makes sure #sec_trailer is 16-bytes aligned with the begining of the PDU body (stub)' do
82
- packet.pdu_header.auth_length = 6
83
- packet.stub = 'A' * rand(0xFF)
84
- expect((packet.sec_trailer.abs_offset - packet.stub.abs_offset) % 16).to eq(0)
85
- end
86
80
  end
87
81
 
88
82
  describe '#sec_trailer' do
@@ -137,7 +131,7 @@ RSpec.describe RubySMB::Dcerpc::Response do
137
131
  end
138
132
 
139
133
  describe '#stub_length' do
140
- let(:stub_length) { rand(0xFF) }
134
+ let(:stub_length) { rand(1..0xFF) }
141
135
  before :example do
142
136
  packet.stub = 'A' * stub_length
143
137
  end
@@ -148,7 +142,7 @@ RSpec.describe RubySMB::Dcerpc::Response do
148
142
 
149
143
  context 'with auth verifier' do
150
144
  it 'returns the correct stub length' do
151
- auth_size = rand(0xFF)
145
+ auth_size = rand(1..0xFF)
152
146
  packet.pdu_header.auth_length = auth_size
153
147
  packet.auth_value = 'B' * auth_size
154
148
  expect(packet.stub_length).to eq(stub_length + packet.auth_pad.num_bytes)
@@ -158,8 +152,8 @@ RSpec.describe RubySMB::Dcerpc::Response do
158
152
 
159
153
  describe '#read' do
160
154
  let(:response) { described_class.new }
161
- let(:auth_size) { rand(0xFF) }
162
- let(:stub_size) { rand(0xFF) }
155
+ let(:auth_size) { rand(1..0xFF) }
156
+ let(:stub_size) { rand(1..0xFF) }
163
157
  before :example do
164
158
  response.pdu_header.auth_length = auth_size
165
159
  response.stub = 'A' * stub_size
@@ -182,5 +176,3 @@ RSpec.describe RubySMB::Dcerpc::Response do
182
176
  expect(described_class.read(binary)).to eq(packet)
183
177
  end
184
178
  end
185
-
186
-
@@ -36,20 +36,6 @@ RSpec.describe RubySMB::Dcerpc::SecTrailer do
36
36
  expect(packet.auth_pad_length).to eq(0)
37
37
  end
38
38
 
39
- context 'when the parent structure has an #auth_pad field' do
40
- let(:pad) { 'A' * rand(0xFF) }
41
- let(:packet_with_parent) do
42
- Class.new(BinData::Record) do
43
- string :auth_pad
44
- sec_trailer :sec_trailer
45
- end.new(auth_pad: pad)
46
- end
47
-
48
- it 'has a value equal to the size of the #auth_pad field' do
49
- expect(packet_with_parent.sec_trailer.auth_pad_length).to eq(pad.size)
50
- end
51
- end
52
-
53
39
  context 'when the parent structure does not have an #auth_pad field' do
54
40
  let(:pad) { 'A' * rand(0xFF) }
55
41
  let(:packet_with_parent) do
@@ -631,7 +631,7 @@ RSpec.describe RubySMB::Dcerpc::Winreg do
631
631
 
632
632
  it 'calls #enum_key the expected number of times' do
633
633
  winreg.enum_registry_key(key)
634
- expect(winreg).to have_received(:enum_key).with(subkey_handle, instance_of(Fixnum)).twice
634
+ expect(winreg).to have_received(:enum_key).with(subkey_handle, instance_of(Integer)).twice
635
635
  end
636
636
 
637
637
  it 'closes the key' do
@@ -710,7 +710,7 @@ RSpec.describe RubySMB::Dcerpc::Winreg do
710
710
 
711
711
  it 'calls #enum_key the expected number of times' do
712
712
  winreg.enum_registry_values(key)
713
- expect(winreg).to have_received(:enum_value).with(subkey_handle, instance_of(Fixnum)).twice
713
+ expect(winreg).to have_received(:enum_value).with(subkey_handle, instance_of(Integer)).twice
714
714
  end
715
715
 
716
716
  it 'closes the key' do
@@ -112,7 +112,7 @@ RSpec.describe RubySMB::SMB1::Packet::ReadAndxRequest do
112
112
  expect { packet.set_read_from_named_pipe('true') }.to raise_error(ArgumentError)
113
113
  end
114
114
 
115
- it 'raises an exception when the value is a Numeric' do
115
+ it 'raises an exception when the value is a Integer' do
116
116
  expect { packet.set_read_from_named_pipe(1) }.to raise_error(ArgumentError)
117
117
  end
118
118
 
@@ -138,7 +138,7 @@ RSpec.describe RubySMB::SMB1::Packet::ReadAndxRequest do
138
138
  expect { packet.set_64_bit_offset('true') }.to raise_error(ArgumentError)
139
139
  end
140
140
 
141
- it 'raises an exception when the value is a Numeric' do
141
+ it 'raises an exception when the value is a Integer' do
142
142
  expect { packet.set_64_bit_offset(1) }.to raise_error(ArgumentError)
143
143
  end
144
144
 
@@ -137,7 +137,7 @@ RSpec.describe RubySMB::SMB1::Packet::WriteAndxRequest do
137
137
  expect { packet.set_64_bit_offset('true') }.to raise_error(ArgumentError)
138
138
  end
139
139
 
140
- it 'raises an exception when the value is a Numeric' do
140
+ it 'raises an exception when the value is a Integer' do
141
141
  expect { packet.set_64_bit_offset(1) }.to raise_error(ArgumentError)
142
142
  end
143
143
 
@@ -8,6 +8,7 @@ RSpec.describe RubySMB::SMB2::CreateContext::CreateContextRequest do
8
8
  it { is_expected.to respond_to :name_length }
9
9
  it { is_expected.to respond_to :data_offset }
10
10
  it { is_expected.to respond_to :data_length }
11
+ it { is_expected.to respond_to :buffer }
11
12
  it { is_expected.to respond_to :name }
12
13
  it { is_expected.to respond_to :data }
13
14
 
@@ -39,4 +40,38 @@ RSpec.describe RubySMB::SMB2::CreateContext::CreateContextRequest do
39
40
  expect(struct.data_offset).to eq 0
40
41
  end
41
42
  end
43
+
44
+ context 'when reading a packet with extra padding' do
45
+ # :name_offset=>120,
46
+ # :name_length=>14,
47
+ # :contexts_offset=>136,
48
+ # :contexts_length=>60,
49
+ # :bytes_remaining=>76,
50
+ # :buffer=> "t\x00e\x00s\x00t\x00.\x00r\x00b\x00\x00\x00\x00\x00\x00[...SNIP...]"
51
+ let(:raw_data) {
52
+ "\x00\x00\x00\x00\x10\x00\x04\x00\x00\x00\x18\x00\x24\x00\x00\x00\x44\x48\x32\x43\x00\x00"\
53
+ "\x00\x00\x04\xfa\xb6\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x43\xe0\x35"\
54
+ "\x5c\x6e\xee\x11\xb8\xbb\x00\x0c\x29\xc1\x13\xd0\x00\x00\x00\x00".b
55
+ }
56
+
57
+ it 'reads without error' do
58
+ expect { described_class.read(raw_data) }.to_not raise_error
59
+ end
60
+
61
+ context 'when getting #name and #data' do
62
+ let(:create_request_packet) { described_class.read(raw_data) }
63
+
64
+ it 'gets the expected #name value' do
65
+ create_request_packet.name.read_now!
66
+ expect(create_request_packet.name).to eq 'DH2C'
67
+ end
68
+
69
+ it 'gets the expected #data value' do
70
+ create_request_packet.data.read_now!
71
+ expected_data = "\x04\xfa\xb6\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x43"\
72
+ "\xe0\x35\x5c\x6e\xee\x11\xb8\xbb\x00\x0c\x29\xc1\x13\xd0\x00\x00\x00\x00".b
73
+ expect(create_request_packet.data).to eq expected_data
74
+ end
75
+ end
76
+ end
42
77
  end
@@ -166,10 +166,14 @@ RSpec.describe RubySMB::SMB2::Tree do
166
166
  let(:create_res) { double('create response') }
167
167
  let(:query_dir_req) { RubySMB::SMB2::Packet::QueryDirectoryRequest.new }
168
168
  let(:query_dir_res) { RubySMB::SMB2::Packet::QueryDirectoryResponse.new }
169
+ let(:open_dir) { instance_double(RubySMB::SMB2::File) }
169
170
 
170
171
  before :example do
171
172
  allow(tree).to receive(:open_directory).and_return(create_res)
172
173
  allow(create_res).to receive(:file_id)
174
+ allow(RubySMB::SMB2::File).to receive(:new).and_return(open_dir)
175
+ allow(open_dir).to receive(:close)
176
+ allow(create_res).to receive(:file_attributes)
173
177
  allow(RubySMB::SMB2::Packet::QueryDirectoryRequest).to receive(:new).and_return(query_dir_req)
174
178
  allow(client).to receive(:send_recv)
175
179
  allow(RubySMB::SMB2::Packet::QueryDirectoryResponse).to receive(:read).and_return(query_dir_res)
@@ -180,6 +184,7 @@ RSpec.describe RubySMB::SMB2::Tree do
180
184
  dir = '/dir'
181
185
  expect(tree).to receive(:open_directory).with(directory: dir).and_return(create_res)
182
186
  tree.list(directory: dir)
187
+ expect(open_dir).to have_received(:close)
183
188
  end
184
189
 
185
190
  it 'uses the File ID from the create response' do
data.tar.gz.sig CHANGED
Binary file
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.2.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
@@ -14,90 +14,31 @@ bindir: bin
14
14
  cert_chain:
15
15
  - |
16
16
  -----BEGIN CERTIFICATE-----
17
- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
18
- 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
- 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
- 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
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
22
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
33
- 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
- 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
- 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
- +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
37
40
  -----END CERTIFICATE-----
38
- - |
39
- -----BEGIN CERTIFICATE-----
40
- MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
41
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
42
- d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
43
- b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
44
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
45
- cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
46
- aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
47
- Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
48
- 8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
49
- wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
50
- fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
51
- jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
52
- n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
53
- HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
54
- MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
55
- MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
56
- RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
57
- ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
58
- Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
59
- TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
60
- d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
61
- CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
62
- MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
63
- fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
64
- RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
65
- EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
66
- L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
67
- B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
68
- -----END CERTIFICATE-----
69
- - |
70
- -----BEGIN CERTIFICATE-----
71
- MIIFIzCCBAugAwIBAgIQCMePMbkSxvnPeJhYXIfaxzANBgkqhkiG9w0BAQsFADBy
72
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
73
- d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
74
- SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTAwNzAwMDAwMFoXDTIzMTEwNjEyMDAw
75
- MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
76
- BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
77
- IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNTz4zvAy7h/vQp
78
- 4dr1txXHlABAagkwYYwTMCtHs5PXsJITx/5SAjx5swuaLfze5kPBNF2YImvFlOXY
79
- WaB+0PsOnXnaARsDZU683xFlj8izU6IN6VrAHzDLKFBzruJENrOJD/ikbEtbjO/q
80
- gFbmS9J9v5ohG/pcRSS0t4ZPAwymf8eCp6QsvOKK/Aymp1RhlRaP8N6N5CIpkhz1
81
- 9p968iCE+DjOXVYxcWE+jE/7uB1dbgrXykNBujMSS3GULOvVEY28n6NCmrPlo23g
82
- yRjYVJ2Vy14nBqnxDZ/yRIfWRVjWoT9TsAEbe9gY29oDpSCSs4wSmLQd5zGCpZ9h
83
- r0HDFB8CAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
84
- dQ5YMB0GA1UdDgQWBBTLBL7DTwumVEKtdCdpHVYMXOFeDzAOBgNVHQ8BAf8EBAMC
85
- B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
86
- L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
87
- L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
88
- MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
89
- d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
90
- JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
91
- AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
92
- ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
93
- BQADggEBAN+GL5/myPWg7oH4mVrG7/OhXF1MoYQF0ddaNiqaweEHMuKJBQCVZRbL
94
- 37HojoKXXv2yyRJBCeTB+ojrxX+5PdLVZa0ss7toWzJ2A1poPXZ1eZvm5xeFD32z
95
- YQaTmmNWNI3PCDTyJ2PXUc+bDiNNwcZ7yc5o78UNRvp9Jxghya17Q76c9Ov9wvnv
96
- dxxQKWGOQy0m4fBrkyjAyH9Djjn81RbQrqYgPuhd5nD0HjN3VUQLhQbIJrk9TVs0
97
- EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
98
- 9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
99
- -----END CERTIFICATE-----
100
- date: 2022-08-30 00:00:00.000000000 Z
41
+ date: 2023-12-11 00:00:00.000000000 Z
101
42
  dependencies:
102
43
  - !ruby/object:Gem::Dependency
103
44
  name: redcarpet
@@ -256,6 +197,7 @@ files:
256
197
  - LICENSE.txt
257
198
  - README.md
258
199
  - Rakefile
200
+ - cortex.yaml
259
201
  - examples/anonymous_auth.rb
260
202
  - examples/append_file.rb
261
203
  - examples/auth_capture.rb
@@ -295,6 +237,8 @@ files:
295
237
  - lib/ruby_smb/create_actions.rb
296
238
  - lib/ruby_smb/crypto.rb
297
239
  - lib/ruby_smb/dcerpc.rb
240
+ - lib/ruby_smb/dcerpc/alter_context.rb
241
+ - lib/ruby_smb/dcerpc/alter_context_resp.rb
298
242
  - lib/ruby_smb/dcerpc/bind.rb
299
243
  - lib/ruby_smb/dcerpc/bind_ack.rb
300
244
  - lib/ruby_smb/dcerpc/client.rb
@@ -316,10 +260,16 @@ files:
316
260
  - lib/ruby_smb/dcerpc/drsr/drs_unbind_request.rb
317
261
  - lib/ruby_smb/dcerpc/drsr/drs_unbind_response.rb
318
262
  - lib/ruby_smb/dcerpc/encrypting_file_system.rb
263
+ - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_request.rb
264
+ - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_response.rb
319
265
  - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request.rb
320
266
  - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response.rb
321
267
  - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request.rb
322
268
  - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response.rb
269
+ - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_request.rb
270
+ - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_response.rb
271
+ - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_request.rb
272
+ - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_response.rb
323
273
  - lib/ruby_smb/dcerpc/epm.rb
324
274
  - lib/ruby_smb/dcerpc/epm/epm_ept_map_request.rb
325
275
  - lib/ruby_smb/dcerpc/epm/epm_ept_map_response.rb
@@ -337,8 +287,12 @@ files:
337
287
  - lib/ruby_smb/dcerpc/netlogon/netr_server_password_set2_response.rb
338
288
  - lib/ruby_smb/dcerpc/netlogon/netr_server_req_challenge_request.rb
339
289
  - lib/ruby_smb/dcerpc/netlogon/netr_server_req_challenge_response.rb
290
+ - lib/ruby_smb/dcerpc/p_cont_list_t.rb
291
+ - lib/ruby_smb/dcerpc/p_result_list_t.rb
292
+ - lib/ruby_smb/dcerpc/p_result_t.rb
340
293
  - lib/ruby_smb/dcerpc/p_syntax_id_t.rb
341
294
  - lib/ruby_smb/dcerpc/pdu_header.rb
295
+ - lib/ruby_smb/dcerpc/port_any_t.rb
342
296
  - lib/ruby_smb/dcerpc/print_system.rb
343
297
  - lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request.rb
344
298
  - lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response.rb
@@ -493,6 +447,7 @@ files:
493
447
  - lib/ruby_smb/nbss/session_request.rb
494
448
  - lib/ruby_smb/ntlm.rb
495
449
  - lib/ruby_smb/ntlm/client.rb
450
+ - lib/ruby_smb/ntlm/custom/string_encoder.rb
496
451
  - lib/ruby_smb/peer_info.rb
497
452
  - lib/ruby_smb/server.rb
498
453
  - lib/ruby_smb/server/cli.rb
@@ -673,6 +628,7 @@ files:
673
628
  - lib/ruby_smb/smb2/smb2_header.rb
674
629
  - lib/ruby_smb/smb2/tree.rb
675
630
  - lib/ruby_smb/smb_error.rb
631
+ - lib/ruby_smb/utils.rb
676
632
  - lib/ruby_smb/version.rb
677
633
  - ruby_smb.gemspec
678
634
  - spec/lib/ruby_smb/client_spec.rb
@@ -999,8 +955,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
999
955
  - !ruby/object:Gem::Version
1000
956
  version: '0'
1001
957
  requirements: []
1002
- rubyforge_project:
1003
- rubygems_version: 2.7.10
958
+ rubygems_version: 3.1.4
1004
959
  signing_key:
1005
960
  specification_version: 4
1006
961
  summary: A pure Ruby implementation of the SMB Protocol Family
metadata.gz.sig CHANGED
Binary file