32 lines
508 B
Ruby
32 lines
508 B
Ruby
# -*- coding: binary -*-
|
|
module Msf
|
|
module Encoding
|
|
|
|
###
|
|
#
|
|
# This class provides basic XOR encoding facilities and is used
|
|
# by XOR encoders.
|
|
#
|
|
###
|
|
class Xor
|
|
|
|
#
|
|
# Encodes a block using XOR.
|
|
#
|
|
def Xor.encode_block(key, block, block_size = 4, block_pack = 'V')
|
|
offset = 0
|
|
oblock = ''
|
|
|
|
while (offset < block.length)
|
|
cblock = block[offset, block_size].unpack(block_pack)[0]
|
|
cblock ^= key
|
|
oblock += [ cblock ].pack(block_pack)
|
|
end
|
|
|
|
return oblock
|
|
end
|
|
|
|
end
|
|
|
|
end end
|