Module: RubySMB::Client::Encryption
- Included in:
- RubySMB::Client
- Defined in:
- lib/ruby_smb/client/encryption.rb
Overview
Contains the methods for handling encryption / decryption
Instance Method Summary collapse
Instance Method Details
#smb3_decrypt(th) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ruby_smb/client/encryption.rb', line 34 def smb3_decrypt(th) unless @server_encryption_key case @dialect when '0x0300', '0x0302' @server_encryption_key = RubySMB::Crypto::KDF.counter_mode( @session_key, "SMB2AESCCM\x00", "ServerOut\x00" ) when '0x0311' @server_encryption_key = RubySMB::Crypto::KDF.counter_mode( @session_key, "SMBS2CCipherKey\x00", @preauth_integrity_hash_value ) else raise RubySMB::Error::EncryptionError.new('Dialect is incompatible with SMBv3 decryption') end ###### # DEBUG #puts "Server encryption key = #{@server_encryption_key.each_byte.map {|e| '%02x' % e}.join}" ###### end th.decrypt(@server_encryption_key, algorithm: @encryption_algorithm) end |
#smb3_encrypt(data) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ruby_smb/client/encryption.rb', line 5 def smb3_encrypt(data) unless @client_encryption_key case @dialect when '0x0300', '0x0302' @client_encryption_key = RubySMB::Crypto::KDF.counter_mode( @session_key, "SMB2AESCCM\x00", "ServerIn \x00" ) when '0x0311' @client_encryption_key = RubySMB::Crypto::KDF.counter_mode( @session_key, "SMBC2SCipherKey\x00", @preauth_integrity_hash_value ) else raise RubySMB::Error::EncryptionError.new('Dialect is incompatible with SMBv3 encryption') end ###### # DEBUG #puts "Client encryption key = #{@client_encryption_key.each_byte.map {|e| '%02x' % e}.join}" ###### end th = RubySMB::SMB2::Packet::TransformHeader.new(flags: 1, session_id: @session_id) th.encrypt(data, @client_encryption_key, algorithm: @encryption_algorithm) th end |