class Rex::Proto::SMB::CRYPT
Public Class Methods
is_signature_correct?(mackey, sequence_counter, data)
click to toggle source
# File lib/rex/proto/smb/crypt.rb, line 27 def self.is_signature_correct?(mackey, sequence_counter, data) signature1 = data[18,8] signature2 = sign_smb_packet(mackey, sequence_counter, data.dup)[18,8] return signature1 == signature2 end
sign_smb_packet(mackey, sequence_counter, data)
click to toggle source
Return a signed SMB
packet
# File lib/rex/proto/smb/crypt.rb, line 17 def self.sign_smb_packet(mackey, sequence_counter, data) raise RuntimeError, "No OpenSSL support" if not @@loaded_openssl seq = Rex::Text::pack_int64le(sequence_counter) netbios_hdr = data.slice!(0,4) data[14,8] = seq signature = OpenSSL::Digest::MD5.digest(mackey + data)[0,8] data[14,8] = signature netbios_hdr + data end