packetgen-plugin-smb 0.3.0 → 0.6.2

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 +8 -1
  4. data/Gemfile +15 -3
  5. data/README.md +59 -3
  6. data/Rakefile +10 -4
  7. data/examples/llmnr-responder +110 -0
  8. data/examples/smb-responder +233 -0
  9. data/lib/packetgen-plugin-smb.rb +5 -2
  10. data/lib/packetgen/plugin/gssapi.rb +11 -6
  11. data/lib/packetgen/plugin/llmnr.rb +58 -0
  12. data/lib/packetgen/plugin/netbios.rb +19 -0
  13. data/lib/packetgen/plugin/netbios/datagram.rb +108 -0
  14. data/lib/packetgen/plugin/netbios/name.rb +64 -0
  15. data/lib/packetgen/plugin/netbios/session.rb +72 -0
  16. data/lib/packetgen/plugin/ntlm.rb +211 -0
  17. data/lib/packetgen/plugin/ntlm/authenticate.rb +197 -0
  18. data/lib/packetgen/plugin/ntlm/av_pair.rb +115 -0
  19. data/lib/packetgen/plugin/ntlm/challenge.rb +140 -0
  20. data/lib/packetgen/plugin/ntlm/negotiate.rb +127 -0
  21. data/lib/packetgen/plugin/ntlm/ntlmv2_response.rb +59 -0
  22. data/lib/packetgen/plugin/smb.rb +27 -15
  23. data/lib/packetgen/plugin/smb/blocks.rb +2 -4
  24. data/lib/packetgen/plugin/smb/browser.rb +8 -8
  25. data/lib/packetgen/plugin/smb/browser/domain_announcement.rb +2 -7
  26. data/lib/packetgen/plugin/smb/browser/host_announcement.rb +10 -7
  27. data/lib/packetgen/plugin/smb/browser/local_master_announcement.rb +2 -7
  28. data/lib/packetgen/plugin/smb/close.rb +2 -2
  29. data/lib/packetgen/plugin/smb/close/request.rb +3 -3
  30. data/lib/packetgen/plugin/smb/close/response.rb +3 -3
  31. data/lib/packetgen/plugin/smb/filetime.rb +30 -3
  32. data/lib/packetgen/plugin/smb/negotiate.rb +20 -0
  33. data/lib/packetgen/plugin/smb/negotiate/dialect.rb +39 -0
  34. data/lib/packetgen/plugin/smb/negotiate/request.rb +35 -0
  35. data/lib/packetgen/plugin/smb/negotiate/response.rb +29 -0
  36. data/lib/packetgen/plugin/smb/nt_create_and_x.rb +2 -2
  37. data/lib/packetgen/plugin/smb/ntcreateandx/request.rb +5 -5
  38. data/lib/packetgen/plugin/smb/ntcreateandx/response.rb +3 -3
  39. data/lib/packetgen/plugin/smb/string.rb +60 -23
  40. data/lib/packetgen/plugin/smb/trans.rb +2 -2
  41. data/lib/packetgen/plugin/smb/trans/request.rb +4 -4
  42. data/lib/packetgen/plugin/smb/trans/response.rb +3 -3
  43. data/lib/packetgen/plugin/smb2.rb +20 -9
  44. data/lib/packetgen/plugin/smb2/base.rb +5 -7
  45. data/lib/packetgen/plugin/smb2/error.rb +3 -4
  46. data/lib/packetgen/plugin/smb2/guid.rb +6 -4
  47. data/lib/packetgen/plugin/smb2/negotiate.rb +2 -2
  48. data/lib/packetgen/plugin/smb2/negotiate/context.rb +28 -27
  49. data/lib/packetgen/plugin/smb2/negotiate/request.rb +16 -12
  50. data/lib/packetgen/plugin/smb2/negotiate/response.rb +25 -14
  51. data/lib/packetgen/plugin/smb2/session_setup.rb +2 -2
  52. data/lib/packetgen/plugin/smb2/session_setup/request.rb +12 -7
  53. data/lib/packetgen/plugin/smb2/session_setup/response.rb +13 -8
  54. data/lib/packetgen/plugin/smb_version.rb +3 -1
  55. data/packetgen-plugin-smb.gemspec +10 -15
  56. metadata +28 -81
  57. data/.travis.yml +0 -12
@@ -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,20 +50,25 @@ 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
53
+ define_field :buffer, GSSAPI, token: :response, optional: ->(h) { h.buffer_offset.positive? }
54
54
 
55
- # Calculate and set {#buffer_length} field.
55
+ # Calculate and set {#buffer_length} and {#buffer_offset} fields.
56
56
  # @return [void]
57
57
  def calc_length
58
- self.buffer_length = buffer.sz
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
59
64
  end
60
65
 
61
66
  # Protocol name
62
67
  # @return [String]
63
- def protocol_name
68
+ def self.protocol_name
64
69
  'SMB2::SessionSetup::Response'
65
70
  end
66
71
  end
67
72
  end
68
73
  end
69
- end
74
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PacketGen
2
4
  module Plugin
3
- SMB_VERSION = "0.3.0"
5
+ SMB_VERSION = '0.6.2'
4
6
  end
5
7
  end
@@ -1,4 +1,6 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
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'
4
6
 
@@ -8,25 +10,18 @@ Gem::Specification.new do |spec|
8
10
  spec.authors = ['Sylvain Daubert']
9
11
  spec.email = ['sylvain.daubert@laposte.net']
10
12
 
11
- spec.summary = %q{SMB plugin for packetgen.}
12
- #spec.description = %q{TODO: Write a longer description or delete this line.}
13
+ spec.summary = 'SMB plugin for packetgen.'
13
14
  spec.homepage = 'https://github.com/sdaubert/packetgen-plugin-smb'
14
15
 
15
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
17
  f.match(%r{^(test|spec|features)/})
17
18
  end
18
- spec.require_paths = ['lib']
19
-
20
- spec.required_ruby_version = '>= 2.3.0'
21
-
22
- spec.add_dependency 'packetgen', '~>2.8', '>= 2.8.7'
23
- spec.add_dependency 'rasn1', '~>0.6', '>= 0.6.7'
24
-
25
- spec.add_development_dependency 'bundler', '~> 1.16'
26
- spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.7'
28
- spec.add_development_dependency 'simplecov', '~> 0.16'
29
- spec.add_development_dependency 'yard', '~> 0.9'
19
+ spec.bindir = 'bin'
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.require_paths = %w[lib]
30
22
 
23
+ spec.required_ruby_version = '>= 2.4.0'
31
24
 
25
+ spec.add_dependency 'packetgen', '~>3.1', '>=3.1.7'
26
+ spec.add_dependency 'rasn1', '~>0.6', '>= 0.6.8'
32
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.3.0
4
+ version: 0.6.2
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-10-18 00:00:00.000000000 Z
11
+ date: 2020-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: packetgen
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.8'
19
+ version: '3.1'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 2.8.7
22
+ version: 3.1.7
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: '2.8'
29
+ version: '3.1'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.8.7
32
+ version: 3.1.7
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rasn1
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '0.6'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.6.7
42
+ version: 0.6.8
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,77 +49,7 @@ dependencies:
49
49
  version: '0.6'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.6.7
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.6.8
123
53
  description:
124
54
  email:
125
55
  - sylvain.daubert@laposte.net
@@ -127,15 +57,28 @@ 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
71
+ - lib/packetgen/plugin/llmnr.rb
72
+ - lib/packetgen/plugin/netbios.rb
73
+ - lib/packetgen/plugin/netbios/datagram.rb
74
+ - lib/packetgen/plugin/netbios/name.rb
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
139
82
  - lib/packetgen/plugin/smb.rb
140
83
  - lib/packetgen/plugin/smb/blocks.rb
141
84
  - lib/packetgen/plugin/smb/browser.rb
@@ -146,6 +89,10 @@ files:
146
89
  - lib/packetgen/plugin/smb/close/request.rb
147
90
  - lib/packetgen/plugin/smb/close/response.rb
148
91
  - lib/packetgen/plugin/smb/filetime.rb
92
+ - lib/packetgen/plugin/smb/negotiate.rb
93
+ - lib/packetgen/plugin/smb/negotiate/dialect.rb
94
+ - lib/packetgen/plugin/smb/negotiate/request.rb
95
+ - lib/packetgen/plugin/smb/negotiate/response.rb
149
96
  - lib/packetgen/plugin/smb/nt_create_and_x.rb
150
97
  - lib/packetgen/plugin/smb/ntcreateandx/request.rb
151
98
  - lib/packetgen/plugin/smb/ntcreateandx/response.rb
@@ -177,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
124
  requirements:
178
125
  - - ">="
179
126
  - !ruby/object:Gem::Version
180
- version: 2.3.0
127
+ version: 2.4.0
181
128
  required_rubygems_version: !ruby/object:Gem::Requirement
182
129
  requirements:
183
130
  - - ">="
@@ -185,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
132
  version: '0'
186
133
  requirements: []
187
134
  rubyforge_project:
188
- rubygems_version: 2.7.6
135
+ rubygems_version: 2.7.6.2
189
136
  signing_key:
190
137
  specification_version: 4
191
138
  summary: SMB plugin for packetgen.
@@ -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