Sha256: ccc0f0f006524cdb892a34b5f71bd83835fc1ff93bc84b25292e059ca12de24f
Contents?: true
Size: 789 Bytes
Versions: 2
Compression:
Stored size: 789 Bytes
Contents
# -*- coding: binary -*- require 'rex/text' module Rex module Proto module SMB class Crypt @@loaded_openssl = false begin require 'openssl' @@loaded_openssl = true rescue ::Exception end # Return a signed SMB packet 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 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 end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
librex-0.0.68 | lib/rex/proto/smb/crypt.rb |
librex-0.0.66 | lib/rex/proto/smb/crypt.rb |