packetgen-plugin-smb 0.5.0 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/specs.yml +28 -0
  3. data/.rubocop.yml +26 -2
  4. data/Gemfile +15 -0
  5. data/README.md +51 -12
  6. data/Rakefile +10 -4
  7. data/examples/llmnr-responder +110 -0
  8. data/examples/smb-responder +233 -0
  9. data/lib/packetgen/plugin/gssapi.rb +16 -10
  10. data/lib/packetgen/plugin/llmnr.rb +4 -4
  11. data/lib/packetgen/plugin/netbios/datagram.rb +3 -3
  12. data/lib/packetgen/plugin/netbios/name.rb +4 -4
  13. data/lib/packetgen/plugin/netbios/session.rb +5 -5
  14. data/lib/packetgen/plugin/netbios.rb +2 -0
  15. data/lib/packetgen/plugin/ntlm/authenticate.rb +197 -0
  16. data/lib/packetgen/plugin/ntlm/av_pair.rb +115 -0
  17. data/lib/packetgen/plugin/ntlm/challenge.rb +140 -0
  18. data/lib/packetgen/plugin/ntlm/negotiate.rb +127 -0
  19. data/lib/packetgen/plugin/ntlm/ntlmv2_response.rb +59 -0
  20. data/lib/packetgen/plugin/ntlm.rb +211 -0
  21. data/lib/packetgen/plugin/smb/blocks.rb +2 -2
  22. data/lib/packetgen/plugin/smb/browser/domain_announcement.rb +2 -2
  23. data/lib/packetgen/plugin/smb/browser/host_announcement.rb +2 -2
  24. data/lib/packetgen/plugin/smb/browser/local_master_announcement.rb +2 -2
  25. data/lib/packetgen/plugin/smb/browser.rb +2 -2
  26. data/lib/packetgen/plugin/smb/close/request.rb +2 -2
  27. data/lib/packetgen/plugin/smb/close/response.rb +2 -2
  28. data/lib/packetgen/plugin/smb/close.rb +2 -2
  29. data/lib/packetgen/plugin/smb/filetime.rb +10 -2
  30. data/lib/packetgen/plugin/smb/negotiate/dialect.rb +7 -0
  31. data/lib/packetgen/plugin/smb/negotiate/request.rb +7 -0
  32. data/lib/packetgen/plugin/smb/negotiate/response.rb +9 -3
  33. data/lib/packetgen/plugin/smb/negotiate.rb +2 -2
  34. data/lib/packetgen/plugin/smb/nt_create_and_x.rb +2 -2
  35. data/lib/packetgen/plugin/smb/ntcreateandx/request.rb +4 -4
  36. data/lib/packetgen/plugin/smb/ntcreateandx/response.rb +2 -2
  37. data/lib/packetgen/plugin/smb/string.rb +60 -23
  38. data/lib/packetgen/plugin/smb/trans/request.rb +3 -3
  39. data/lib/packetgen/plugin/smb/trans/response.rb +2 -2
  40. data/lib/packetgen/plugin/smb/trans.rb +2 -2
  41. data/lib/packetgen/plugin/smb.rb +12 -12
  42. data/lib/packetgen/plugin/smb2/base.rb +3 -3
  43. data/lib/packetgen/plugin/smb2/error.rb +3 -4
  44. data/lib/packetgen/plugin/smb2/guid.rb +4 -3
  45. data/lib/packetgen/plugin/smb2/negotiate/context.rb +3 -3
  46. data/lib/packetgen/plugin/smb2/negotiate/request.rb +3 -5
  47. data/lib/packetgen/plugin/smb2/negotiate/response.rb +9 -7
  48. data/lib/packetgen/plugin/smb2/negotiate.rb +2 -2
  49. data/lib/packetgen/plugin/smb2/session_setup/request.rb +9 -5
  50. data/lib/packetgen/plugin/smb2/session_setup/response.rb +10 -6
  51. data/lib/packetgen/plugin/smb2/session_setup.rb +2 -2
  52. data/lib/packetgen/plugin/smb2.rb +3 -3
  53. data/lib/packetgen/plugin/smb_version.rb +3 -1
  54. data/lib/packetgen-plugin-smb.rb +3 -2
  55. data/packetgen-plugin-smb.gemspec +8 -10
  56. metadata +21 -84
  57. data/.travis.yml +0 -12
@@ -1,26 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  # Server Message Block (SMB) header.
10
10
  # @author Sylvain Daubert
11
11
  class SMB < PacketGen::Header::Base
12
12
  # Known commands
13
13
  COMMANDS = {
14
- 'delete_dir' => 0x01,
15
- 'close' => 0x04,
16
- 'delete' => 0x06,
17
- 'query_info2' => 0x23,
18
- 'trans' => 0x25,
19
- 'echo' => 0x2b,
20
- 'open_and_x' => 0x2d,
21
- 'read_and_x' => 0x2e,
22
- 'write_and_x' => 0x2f,
23
- 'trans2' => 0x32,
14
+ 'delete_dir' => 0x01,
15
+ 'close' => 0x04,
16
+ 'delete' => 0x06,
17
+ 'query_info2' => 0x23,
18
+ 'trans' => 0x25,
19
+ 'echo' => 0x2b,
20
+ 'open_and_x' => 0x2d,
21
+ 'read_and_x' => 0x2e,
22
+ 'write_and_x' => 0x2f,
23
+ 'trans2' => 0x32,
24
24
  'tree_disconnect' => 0x71,
25
25
  'negotiate' => 0x72,
26
26
  'session_setup_and_x' => 0x73,
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  require_relative 'guid'
9
9
 
10
10
  module PacketGen::Plugin
@@ -26,4 +26,4 @@ module PacketGen::Plugin
26
26
  end
27
27
  end
28
28
  end
29
- end
29
+ end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  # SMB2 Error response structure
@@ -45,6 +45,5 @@ module PacketGen::Plugin
45
45
  end
46
46
  end
47
47
  PacketGen::Header.add_class SMB2::ErrorResponse
48
- SMB2.bind SMB2::ErrorResponse, status: ->(v) { v > 0 }
48
+ SMB2.bind SMB2::ErrorResponse, status: ->(v) { v.positive? }
49
49
  end
50
-
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  # GUID, also known as UUID, is a 16-byte structure, intended to serve
@@ -22,6 +22,8 @@ module PacketGen::Plugin
22
22
  # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
23
23
  # @author Sylvain Daubert
24
24
  class GUID < PacketGen::Types::Fields
25
+ include PacketGen::Types::Fieldable
26
+
25
27
  # @!attribute data1
26
28
  # 32-bit little-endian data1
27
29
  # @return [Integer]
@@ -66,4 +68,3 @@ module PacketGen::Plugin
66
68
  end
67
69
  end
68
70
  end
69
-
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  module Negotiate
@@ -47,7 +47,7 @@ module PacketGen::Plugin
47
47
  # @!attribute pad
48
48
  # Padding to align next context on a 8-byte offset
49
49
  # @return [String]
50
- define_field :pad, PacketGen::Types::String, builder: ->(h, t) { t.new(length_from: -> { (8 - (h.offset_of(:data) + h.data_length) % 8) % 8 }) }
50
+ define_field :pad, PacketGen::Types::String, builder: ->(h, t) { t.new(length_from: -> { 8 - (h.offset_of(:data) + h.data_length) % 8 }) }
51
51
 
52
52
  # @private
53
53
  alias old_read read
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  module Negotiate
@@ -161,9 +161,7 @@ module PacketGen::Plugin
161
161
  self[:pad].read SMB2::MAX_PADDING
162
162
 
163
163
  self.context_offset = 0
164
- unless context_list.empty?
165
- self.context_offset = SMB2::HEADER_SIZE + offset_of(:context_list)
166
- end
164
+ self.context_offset = SMB2::HEADER_SIZE + offset_of(:context_list) unless context_list.empty?
167
165
  context_list.each { |ctx| ctx.calc_length if ctx.respond_to? :calc_length }
168
166
  end
169
167
  end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  module Negotiate
@@ -140,7 +140,7 @@ module PacketGen::Plugin
140
140
  define_field :context_offset, PacketGen::Types::Int32le
141
141
  # @!attribute buffer
142
142
  # @return [GSSAPI]
143
- define_field :buffer, GSSAPI, token: :init, optional: ->(h) { h.buffer_offset > 0 }
143
+ define_field :buffer, GSSAPI, token: :init, optional: ->(h) { h.buffer_offset.positive? }
144
144
  # @!attribute pad
145
145
  # Optional padding between the end of the {#buffer} field and the first negotiate
146
146
  # context in {#context_list} so that the first negotiate context is 8-byte aligned
@@ -184,13 +184,15 @@ module PacketGen::Plugin
184
184
  def calc_length
185
185
  self[:pad].read SMB2::MAX_PADDING
186
186
 
187
- self.buffer_offset = SMB2::HEADER_SIZE + offset_of(:buffer)
188
187
  self.buffer_length = self[:buffer].sz
188
+ self.buffer_offset = if self.buffer_length.zero?
189
+ 0
190
+ else
191
+ SMB2::HEADER_SIZE + offset_of(:buffer)
192
+ end
189
193
 
190
194
  self.context_offset = 0
191
- unless context_list.empty?
192
- self.context_offset = SMB2::HEADER_SIZE + offset_of(:context_list)
193
- end
195
+ self.context_offset = SMB2::HEADER_SIZE + offset_of(:context_list) unless context_list.empty?
194
196
  context_list.each { |ctx| ctx.calc_length if ctx.respond_to? :calc_length }
195
197
  end
196
198
  end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  require_relative 'guid'
9
9
 
10
10
  module PacketGen::Plugin
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  module SessionSetup
@@ -79,13 +79,17 @@ module PacketGen::Plugin
79
79
  define_field :prev_session_id, PacketGen::Types::Int64le
80
80
  # @!attribute buffer
81
81
  # @return [GSSAPI]
82
- define_field :buffer, GSSAPI, token: :response, optional: ->(h) { h.buffer_offset > 0 }
82
+ define_field :buffer, GSSAPI, token: :response, optional: ->(h) { h.buffer_offset.positive? }
83
83
 
84
84
  # Calculate and set {#buffer_length} and {#buffer_offset} fields.
85
85
  # @return [void]
86
86
  def calc_length
87
- self.buffer_offset = SMB2.new.sz + offset_of(:buffer)
88
87
  self.buffer_length = self[:buffer].sz
88
+ self.buffer_offset = if self.buffer_length.zero?
89
+ 0
90
+ else
91
+ SMB2.new.sz + offset_of(:buffer)
92
+ end
89
93
  end
90
94
 
91
95
  # Protocol name
@@ -96,4 +100,4 @@ module PacketGen::Plugin
96
100
  end
97
101
  end
98
102
  end
99
- end
103
+ end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  class SMB2
10
10
  module SessionSetup
@@ -39,7 +39,7 @@ module PacketGen::Plugin
39
39
  # @return [Boolean]
40
40
  # @!attribute flags_is_guest?
41
41
  # @return [Boolean]
42
- define_bit_fields_on :flags, :flags_rsv, 13,:flags_encrypt_data, :flags_is_null, :flags_is_guest
42
+ define_bit_fields_on :flags, :flags_rsv, 13, :flags_encrypt_data, :flags_is_null, :flags_is_guest
43
43
  # @!attribute buffer_offset
44
44
  # The offset, from the beginning of the SMB2 header of the {#buffer}.
45
45
  # @return [Integer]
@@ -50,13 +50,17 @@ module PacketGen::Plugin
50
50
  define_field :buffer_length, PacketGen::Types::Int16le
51
51
  # @!attribute buffer
52
52
  # @return [GSSAPI]
53
- define_field :buffer, GSSAPI, token: :response, optional: ->(h) { h.buffer_offset > 0 }
53
+ define_field :buffer, GSSAPI, token: :response, optional: ->(h) { h.buffer_offset.positive? }
54
54
 
55
55
  # Calculate and set {#buffer_length} and {#buffer_offset} fields.
56
56
  # @return [void]
57
57
  def calc_length
58
- self.buffer_offset = SMB2.new.sz + offset_of(:buffer)
59
58
  self.buffer_length = self[:buffer].sz
59
+ self.buffer_offset = if self.buffer_length.zero?
60
+ 0
61
+ else
62
+ SMB2.new.sz + offset_of(:buffer)
63
+ end
60
64
  end
61
65
 
62
66
  # Protocol name
@@ -67,4 +71,4 @@ module PacketGen::Plugin
67
71
  end
68
72
  end
69
73
  end
70
- end
74
+ end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  require_relative 'guid'
9
9
 
10
10
  module PacketGen::Plugin
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen::Plugin
9
9
  # Server Message Block version 2 and 3 (SMB2) header.
10
10
  # @author Sylvain Daubert
@@ -84,7 +84,7 @@ module PacketGen::Plugin
84
84
  # 64-bit unique ID that is created by the server to handle operations
85
85
  # asynchronously. Only present for asynchronous messages.
86
86
  # @return [Integer]
87
- define_field :async_id, PacketGen::Types::Int64le, optional: ->(h) { h.flags & 2 == 2}
87
+ define_field :async_id, PacketGen::Types::Int64le, optional: ->(h) { h.flags & 2 == 2 }
88
88
  # @!attribute reserved
89
89
  # 32-bit reserved field.
90
90
  # Only present for synchronous messages.
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PacketGen
2
4
  module Plugin
3
- SMB_VERSION = "0.5.0"
5
+ SMB_VERSION = '0.6.3'
4
6
  end
5
7
  end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of packetgen-plugin-smb.
2
4
  # See https://github.com/sdaubert/packetgen-plugin-smb for more informations
3
5
  # Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  require 'packetgen'
9
9
  require_relative 'packetgen/plugin/smb_version'
10
10
  require_relative 'packetgen/plugin/gssapi'
@@ -12,3 +12,4 @@ require_relative 'packetgen/plugin/netbios'
12
12
  require_relative 'packetgen/plugin/smb'
13
13
  require_relative 'packetgen/plugin/smb2'
14
14
  require_relative 'packetgen/plugin/llmnr'
15
+ require_relative 'packetgen/plugin/ntlm'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'packetgen/plugin/smb_version'
@@ -14,16 +16,12 @@ Gem::Specification.new do |spec|
14
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
15
17
  f.match(%r{^(test|spec|features)/})
16
18
  end
17
- spec.require_paths = ['lib']
18
-
19
- spec.required_ruby_version = '>= 2.3.0'
19
+ spec.bindir = 'bin'
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.require_paths = %w[lib]
20
22
 
21
- spec.add_dependency 'packetgen', '~>3.0', '>= 3.0.2'
22
- spec.add_dependency 'rasn1', '~>0.6', '>= 0.6.8'
23
+ spec.required_ruby_version = '>= 2.5.0'
23
24
 
24
- spec.add_development_dependency 'bundler', '~> 1.16'
25
- spec.add_development_dependency 'rake', '~> 10.0'
26
- spec.add_development_dependency 'rspec', '~> 3.7'
27
- spec.add_development_dependency 'simplecov', '~> 0.16'
28
- spec.add_development_dependency 'yard', '~> 0.9'
25
+ spec.add_dependency 'packetgen', '~>3.2', '>=3.2.1'
26
+ spec.add_dependency 'rasn1', '~>0.8', '>= 0.8.0'
29
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packetgen-plugin-smb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Daubert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-18 00:00:00.000000000 Z
11
+ date: 2022-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: packetgen
@@ -16,110 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '3.2'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.0.2
22
+ version: 3.2.1
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: '3.0'
29
+ version: '3.2'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.0.2
32
+ version: 3.2.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rasn1
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.6'
39
+ version: '0.8'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.6.8
42
+ version: 0.8.0
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: '0.6'
49
+ version: '0.8'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.6.8
53
- - !ruby/object:Gem::Dependency
54
- name: bundler
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '1.16'
60
- type: :development
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '1.16'
67
- - !ruby/object:Gem::Dependency
68
- name: rake
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '10.0'
74
- type: :development
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '10.0'
81
- - !ruby/object:Gem::Dependency
82
- name: rspec
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '3.7'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '3.7'
95
- - !ruby/object:Gem::Dependency
96
- name: simplecov
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '0.16'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '0.16'
109
- - !ruby/object:Gem::Dependency
110
- name: yard
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '0.9'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '0.9'
52
+ version: 0.8.0
123
53
  description:
124
54
  email:
125
55
  - sylvain.daubert@laposte.net
@@ -127,13 +57,15 @@ executables: []
127
57
  extensions: []
128
58
  extra_rdoc_files: []
129
59
  files:
60
+ - ".github/workflows/specs.yml"
130
61
  - ".gitignore"
131
62
  - ".rubocop.yml"
132
- - ".travis.yml"
133
63
  - Gemfile
134
64
  - LICENSE
135
65
  - README.md
136
66
  - Rakefile
67
+ - examples/llmnr-responder
68
+ - examples/smb-responder
137
69
  - lib/packetgen-plugin-smb.rb
138
70
  - lib/packetgen/plugin/gssapi.rb
139
71
  - lib/packetgen/plugin/llmnr.rb
@@ -141,6 +73,12 @@ files:
141
73
  - lib/packetgen/plugin/netbios/datagram.rb
142
74
  - lib/packetgen/plugin/netbios/name.rb
143
75
  - lib/packetgen/plugin/netbios/session.rb
76
+ - lib/packetgen/plugin/ntlm.rb
77
+ - lib/packetgen/plugin/ntlm/authenticate.rb
78
+ - lib/packetgen/plugin/ntlm/av_pair.rb
79
+ - lib/packetgen/plugin/ntlm/challenge.rb
80
+ - lib/packetgen/plugin/ntlm/negotiate.rb
81
+ - lib/packetgen/plugin/ntlm/ntlmv2_response.rb
144
82
  - lib/packetgen/plugin/smb.rb
145
83
  - lib/packetgen/plugin/smb/blocks.rb
146
84
  - lib/packetgen/plugin/smb/browser.rb
@@ -186,15 +124,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
124
  requirements:
187
125
  - - ">="
188
126
  - !ruby/object:Gem::Version
189
- version: 2.3.0
127
+ version: 2.5.0
190
128
  required_rubygems_version: !ruby/object:Gem::Requirement
191
129
  requirements:
192
130
  - - ">="
193
131
  - !ruby/object:Gem::Version
194
132
  version: '0'
195
133
  requirements: []
196
- rubyforge_project:
197
- rubygems_version: 2.7.6
134
+ rubygems_version: 3.2.5
198
135
  signing_key:
199
136
  specification_version: 4
200
137
  summary: SMB plugin for packetgen.
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3
4
- - 2.4
5
- - 2.5
6
-
7
- install:
8
- - sudo apt-get update -qq
9
- - sudo apt-get install libpcap-dev -qq
10
- - bundle install --path vendor/bundle --jobs=3 --retry=3
11
- script:
12
- - bundle exec rake