packetgen-plugin-smb 0.6.1 → 0.6.2
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/.github/workflows/specs.yml +28 -0
- data/.rubocop.yml +6 -0
- data/Gemfile +15 -0
- data/README.md +50 -12
- data/Rakefile +10 -4
- data/lib/packetgen-plugin-smb.rb +2 -2
- data/lib/packetgen/plugin/gssapi.rb +4 -2
- data/lib/packetgen/plugin/llmnr.rb +4 -4
- data/lib/packetgen/plugin/netbios.rb +2 -0
- data/lib/packetgen/plugin/netbios/datagram.rb +3 -3
- data/lib/packetgen/plugin/netbios/name.rb +4 -4
- data/lib/packetgen/plugin/netbios/session.rb +5 -5
- data/lib/packetgen/plugin/ntlm.rb +3 -3
- data/lib/packetgen/plugin/ntlm/authenticate.rb +2 -2
- data/lib/packetgen/plugin/ntlm/av_pair.rb +3 -5
- data/lib/packetgen/plugin/ntlm/challenge.rb +2 -2
- data/lib/packetgen/plugin/ntlm/negotiate.rb +2 -2
- data/lib/packetgen/plugin/ntlm/ntlmv2_response.rb +2 -2
- data/lib/packetgen/plugin/smb.rb +12 -12
- data/lib/packetgen/plugin/smb/blocks.rb +2 -2
- data/lib/packetgen/plugin/smb/browser.rb +2 -2
- data/lib/packetgen/plugin/smb/browser/domain_announcement.rb +2 -2
- data/lib/packetgen/plugin/smb/browser/host_announcement.rb +2 -2
- data/lib/packetgen/plugin/smb/browser/local_master_announcement.rb +2 -2
- data/lib/packetgen/plugin/smb/close.rb +2 -2
- data/lib/packetgen/plugin/smb/close/request.rb +2 -2
- data/lib/packetgen/plugin/smb/close/response.rb +2 -2
- data/lib/packetgen/plugin/smb/filetime.rb +4 -2
- data/lib/packetgen/plugin/smb/negotiate.rb +2 -2
- data/lib/packetgen/plugin/smb/negotiate/dialect.rb +7 -0
- data/lib/packetgen/plugin/smb/negotiate/request.rb +7 -0
- data/lib/packetgen/plugin/smb/negotiate/response.rb +8 -2
- data/lib/packetgen/plugin/smb/nt_create_and_x.rb +2 -2
- data/lib/packetgen/plugin/smb/ntcreateandx/request.rb +4 -4
- data/lib/packetgen/plugin/smb/ntcreateandx/response.rb +2 -2
- data/lib/packetgen/plugin/smb/string.rb +40 -28
- data/lib/packetgen/plugin/smb/trans.rb +2 -2
- data/lib/packetgen/plugin/smb/trans/request.rb +3 -3
- data/lib/packetgen/plugin/smb/trans/response.rb +2 -2
- data/lib/packetgen/plugin/smb2.rb +3 -3
- data/lib/packetgen/plugin/smb2/base.rb +3 -3
- data/lib/packetgen/plugin/smb2/error.rb +3 -4
- data/lib/packetgen/plugin/smb2/guid.rb +4 -3
- data/lib/packetgen/plugin/smb2/negotiate.rb +2 -2
- data/lib/packetgen/plugin/smb2/negotiate/context.rb +3 -3
- data/lib/packetgen/plugin/smb2/negotiate/request.rb +3 -5
- data/lib/packetgen/plugin/smb2/negotiate/response.rb +4 -6
- data/lib/packetgen/plugin/smb2/session_setup.rb +2 -2
- data/lib/packetgen/plugin/smb2/session_setup/request.rb +4 -4
- data/lib/packetgen/plugin/smb2/session_setup/response.rb +5 -5
- data/lib/packetgen/plugin/smb_version.rb +3 -1
- data/packetgen-plugin-smb.gemspec +4 -11
- metadata +6 -82
- 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 SMB
|
10
10
|
# Common blocks used for unsupported SMB messages.
|
@@ -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 SMB
|
10
10
|
# Browser Trans sub-protocol.
|
@@ -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 SMB
|
10
10
|
class Browser
|
@@ -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 SMB
|
10
10
|
class Browser
|
@@ -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 SMB
|
10
10
|
class Browser
|
@@ -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 SMB
|
10
10
|
# Namespace for CLOSE related classes
|
@@ -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 SMB
|
10
10
|
module Close
|
@@ -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 SMB
|
10
10
|
module Close
|
@@ -1,15 +1,17 @@
|
|
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 SMB
|
10
10
|
# SMB FILETIME.
|
11
11
|
# @author Sylvain Daubert
|
12
12
|
class Filetime
|
13
|
+
include PacketGen::Types::Fieldable
|
14
|
+
|
13
15
|
# Base time for SMB FILETIME.
|
14
16
|
# This value also indicate no time.
|
15
17
|
NO_TIME = Time.utc(1601).freeze
|
@@ -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 SMB
|
10
10
|
# Namespace for NEGOTIATE related classes
|
@@ -1,3 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is part of packetgen-plugin-smb.
|
4
|
+
# See https://github.com/sdaubert/packetgen-plugin-smb for more informations
|
5
|
+
# Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
|
6
|
+
# This program is published under MIT license.
|
7
|
+
|
1
8
|
module PacketGen::Plugin
|
2
9
|
class SMB
|
3
10
|
module Negotiate
|
@@ -1,3 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is part of packetgen-plugin-smb.
|
4
|
+
# See https://github.com/sdaubert/packetgen-plugin-smb for more informations
|
5
|
+
# Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
|
6
|
+
# This program is published under MIT license.
|
7
|
+
|
1
8
|
module PacketGen::Plugin
|
2
9
|
class SMB
|
3
10
|
module Negotiate
|
@@ -1,3 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is part of packetgen-plugin-smb.
|
4
|
+
# See https://github.com/sdaubert/packetgen-plugin-smb for more informations
|
5
|
+
# Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
|
6
|
+
# This program is published under MIT license.
|
7
|
+
|
1
8
|
module PacketGen::Plugin
|
2
9
|
class SMB
|
3
10
|
module Negotiate
|
@@ -7,7 +14,6 @@ module PacketGen::Plugin
|
|
7
14
|
# and {Blocks#bytes}.
|
8
15
|
# @author Sylvain Daubert
|
9
16
|
class Response < Blocks
|
10
|
-
|
11
17
|
# Get index of the dialect selected by the server from the list presented in the request.
|
12
18
|
# @return [Integer]
|
13
19
|
def dialect_index
|
@@ -20,4 +26,4 @@ module PacketGen::Plugin
|
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
23
|
-
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 SMB
|
10
10
|
# Namespace for NT_CREATE_ANDX related classes
|
@@ -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 SMB
|
10
10
|
# Namespace for NT_CREATE_ANDX related classes
|
@@ -128,7 +128,7 @@ module PacketGen::Plugin
|
|
128
128
|
# Padding before {#filename} to align it on 16-bit boundary. Only present
|
129
129
|
# if {SMB#flags2_unicode?} is +true+.
|
130
130
|
# @return [Integer]
|
131
|
-
define_field :pad1, PacketGen::Types::Int8, optional: ->(h) { h
|
131
|
+
define_field :pad1, PacketGen::Types::Int8, optional: ->(h) { h&.packet&.smb&.flags2_unicode? }
|
132
132
|
# @!attribute filename
|
133
133
|
# A string that represents the fully qualified name of the file
|
134
134
|
# relative to the supplied TID
|
@@ -154,6 +154,6 @@ module PacketGen::Plugin
|
|
154
154
|
self.byte_count = bcount
|
155
155
|
end
|
156
156
|
end
|
157
|
-
|
157
|
+
end
|
158
158
|
end
|
159
159
|
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 SMB
|
10
10
|
# Namespace for NT_CREATE_ANDX related classes
|
@@ -1,34 +1,39 @@
|
|
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
|
-
|
8
|
+
require 'forwardable'
|
7
9
|
|
8
10
|
module PacketGen::Plugin
|
9
11
|
class SMB
|
10
12
|
# SMB strings (UTF-16 little-endian or OEM).
|
11
13
|
# @author Sylvain Daubert
|
12
|
-
class String
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
class String
|
15
|
+
extend Forwardable
|
16
|
+
include PacketGen::Types::Fieldable
|
17
|
+
|
18
|
+
def_delegators :@string, :[], :length, :size, :inspect, :==, :<<,
|
19
|
+
:unpack, :force_encoding, :encoding, :index, :empty?,
|
20
|
+
:encode
|
21
|
+
|
22
|
+
# @return [::String]
|
23
|
+
attr_reader :string
|
16
24
|
# @param [Boolean] null_terminated
|
17
25
|
# @return [Boolean]
|
18
26
|
attr_writer :null_terminated
|
19
27
|
|
20
28
|
# @param [Hash] options
|
21
|
-
# @option options [Integer] :static_length set a static length for this string
|
22
29
|
# @option options [Boolean] :unicode If +true+, string is encoded as a UTF-16
|
23
30
|
# unicode string. If +false+, string is encode in ASCII. Defaults to +true+.
|
24
31
|
# @option options [Boolean] :null_terminated If +true+, string is null-terminated.
|
25
32
|
# If +false+, string is not null-terminated. Defaults to +true+.
|
26
33
|
def initialize(options={})
|
27
|
-
super
|
28
34
|
@unicode = options.key?(:unicode) ? options[:unicode] : true
|
29
35
|
@null_terminated = options.key?(:null_terminated) ? options[:null_terminated] : true
|
30
|
-
|
31
|
-
self.encode!(encoding)
|
36
|
+
@string = +''.encode(self_encoding)
|
32
37
|
end
|
33
38
|
|
34
39
|
# @return [Boolean]
|
@@ -36,6 +41,14 @@ module PacketGen::Plugin
|
|
36
41
|
@unicode
|
37
42
|
end
|
38
43
|
|
44
|
+
# @param [Boolean] bool
|
45
|
+
# @return [Boolean]
|
46
|
+
def unicode=(bool)
|
47
|
+
@unicode = bool
|
48
|
+
@string.force_encoding(self_encoding)
|
49
|
+
bool
|
50
|
+
end
|
51
|
+
|
39
52
|
# @return [Boolean]
|
40
53
|
def null_terminated?
|
41
54
|
@null_terminated
|
@@ -48,48 +61,47 @@ module PacketGen::Plugin
|
|
48
61
|
|
49
62
|
str2 = case str.encoding
|
50
63
|
when Encoding::BINARY
|
51
|
-
|
52
|
-
0.step(to: str.size, by: 2) do |i|
|
53
|
-
binidx = i if str[i, 2] == binary_terminator
|
54
|
-
end
|
55
|
-
s = if binidx.nil?
|
56
|
-
str
|
57
|
-
else
|
58
|
-
str[0, binidx]
|
59
|
-
end
|
60
|
-
s.force_encoding(self_encoding)
|
64
|
+
str.dup.force_encoding(self_encoding)
|
61
65
|
else
|
62
66
|
str.encode(self_encoding)
|
63
67
|
end
|
64
|
-
str2 = str2[0, @static_length / 2] if @static_length.is_a? Integer
|
65
68
|
idx = str2.index(+"\x00".encode(self_encoding))
|
66
69
|
str2 = str2[0, idx] unless idx.nil?
|
67
|
-
|
70
|
+
@string = str2
|
68
71
|
self
|
69
72
|
end
|
70
73
|
|
71
74
|
# @return [String]
|
72
75
|
def to_s
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
+
str = string.dup.force_encoding('BINARY')
|
77
|
+
return str unless null_terminated?
|
78
|
+
|
79
|
+
str << binary_terminator.force_encoding('BINARY')
|
80
|
+
end
|
76
81
|
|
77
|
-
|
82
|
+
# Populate String from a human readable (ie UTF-8) string
|
83
|
+
# @param [String] str
|
84
|
+
# @return [self]
|
85
|
+
def from_human(str)
|
86
|
+
return self if str.nil?
|
87
|
+
|
88
|
+
@string = str.encode(self_encoding)
|
89
|
+
self
|
78
90
|
end
|
79
91
|
|
80
92
|
# @return [String]
|
81
93
|
def to_human
|
82
|
-
|
94
|
+
string.encode('UTF-8')
|
83
95
|
end
|
84
96
|
|
85
97
|
private
|
86
98
|
|
87
99
|
def self_encoding
|
88
|
-
@unicode ? Encoding::UTF_16LE : Encoding::
|
100
|
+
@unicode ? Encoding::UTF_16LE : Encoding::ASCII_8BIT
|
89
101
|
end
|
90
102
|
|
91
103
|
def binary_terminator
|
92
|
-
|
104
|
+
[0].pack('C').encode(self_encoding)
|
93
105
|
end
|
94
106
|
end
|
95
107
|
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 SMB
|
10
10
|
# Namespace for TRANS related classes
|
@@ -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 SMB
|
10
10
|
module Trans
|
@@ -96,7 +96,7 @@ module PacketGen::Plugin
|
|
96
96
|
# 8-bit optional padding to align {#name} on a 2-byte boundary. Only present
|
97
97
|
# if {SMB#flags2_unicode?} is +true+.
|
98
98
|
# @return [Integer]
|
99
|
-
define_field :padname, PacketGen::Types::Int8, optional: ->(h) { h
|
99
|
+
define_field :padname, PacketGen::Types::Int8, optional: ->(h) { h&.packet&.smb&.flags2_unicode? }
|
100
100
|
# @!attribute name
|
101
101
|
# Pathname of the mailslot or named pipe.
|
102
102
|
# @return [String]
|
@@ -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 SMB
|
10
10
|
module Trans
|
@@ -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
|
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.
|