class WinRM::PSRP::Fragment
PowerShell Remoting Protocol message fragment.
Attributes
blob[R]
end_fragment[R]
fragment_id[R]
object_id[R]
start_fragment[R]
Public Class Methods
new(object_id, blob, fragment_id = 0, start_fragment = true, end_fragment = true)
click to toggle source
Creates a new PSRP message fragment @param #object_id [Integer] The id of the fragmented message. @param blob [Array] Array of fragmented bytes. @param #fragment_id [Integer] The id of this fragment @param #start_fragment [Boolean] If the fragment is the first fragment @param #end_fragment [Boolean] If the fragment is the last fragment
# File lib/winrm/psrp/fragment.rb, line 27 def initialize(object_id, blob, fragment_id = 0, start_fragment = true, end_fragment = true) @object_id = object_id @blob = blob @fragment_id = fragment_id @start_fragment = start_fragment @end_fragment = end_fragment end
Public Instance Methods
bytes()
click to toggle source
Returns the raw PSRP message bytes ready for transfer to Windows inside a WinRM message. @return [Array<Byte>] Unencoded raw byte array of the PSRP message.
# File lib/winrm/psrp/fragment.rb, line 40 def bytes [ int64be(object_id), int64be(fragment_id), end_start_fragment, int16be(blob.length), blob ].flatten end
Private Instance Methods
end_start_fragment()
click to toggle source
# File lib/winrm/psrp/fragment.rb, line 52 def end_start_fragment end_start = 0 end_start += 0b10 if end_fragment end_start += 0b1 if start_fragment [end_start] end
int16be(int16)
click to toggle source
# File lib/winrm/psrp/fragment.rb, line 63 def int16be(int16) [int16].pack('N').unpack('C4') end
int64be(int64)
click to toggle source
# File lib/winrm/psrp/fragment.rb, line 59 def int64be(int64) [int64 >> 32, int64 & 0x00000000ffffffff].pack('N2').unpack('C8') end