Class: PacketGen::Plugin::SMB::Browser
- Inherits:
-
Header::Base
- Object
- Header::Base
- PacketGen::Plugin::SMB::Browser
- Defined in:
- lib/packetgen/plugin/smb/browser.rb,
lib/packetgen/plugin/smb/browser/host_announcement.rb,
lib/packetgen/plugin/smb/browser/domain_announcement.rb,
lib/packetgen/plugin/smb/browser/local_master_announcement.rb
Overview
Browser Trans sub-protocol. See subclasses.
Direct Known Subclasses
Defined Under Namespace
Classes: DomainAnnouncement, HostAnnouncement, LocalMasterAnnouncement
Constant Summary collapse
- OPCODES =
{ 'HostAnnouncement' => 1, 'HostAnnouncementReq' => 2, 'RequestElection' => 8, 'GetBackupListReq' => 9, 'GetBackupListResp' => 10, 'BecomeBackup' => 11, 'DomainAnnouncement' => 12, 'MasterAnnouncement' => 13, 'ResetStateRequest' => 14, 'LocalMasterAnnouncement' => 15 }.freeze
Instance Attribute Summary collapse
- #body ⇒ String
-
#opcode ⇒ Integer
8-bit opcode.
Class Method Summary collapse
-
.protocol_name ⇒ String
Give protocol name for this class.
Instance Method Summary collapse
-
#added_to_packet(packet) ⇒ void
Callback called when a Browser header is added to a packet.
-
#read(str) ⇒ Browser
Populate object from a binary string.
Instance Attribute Details
Class Method Details
.protocol_name ⇒ String
Give protocol name for this class
16 17 18 |
# File 'lib/packetgen/plugin/smb/browser.rb', line 16 def self.protocol_name 'SMB::Browser' end |
Instance Method Details
#added_to_packet(packet) ⇒ void
This method returns an undefined value.
Callback called when a Browser header is added to a packet. Here, add #smb_browser
method as a shortcut to existing #smb_browser_*
method.
71 72 73 74 75 |
# File 'lib/packetgen/plugin/smb/browser.rb', line 71 def added_to_packet(packet) return if packet.respond_to? :smb_browser packet.instance_eval("def smb_browser(arg=nil); header(#{self.class}, arg); end") end |
#read(str) ⇒ Browser
Populate object from a binary string
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/packetgen/plugin/smb/browser.rb', line 48 def read(str) if self.class == Browser return self if str.nil? PacketGen.force_binary str self[:opcode].read str[0] opcode_klass = Browser.const_get(self[:opcode].to_human) if Browser.const_defined?(self[:opcode].to_human) if opcode_klass opcode_klass.new.read str else private_read str end else private_read str end end |