class CryptoToolchain::Tools::CbcBitflipAttack
Attributes
target[R]
Public Class Methods
new(target: CryptoToolchain::BlackBoxes::CbcBitflipTarget.new)
click to toggle source
# File lib/crypto_toolchain/tools/cbc_bitflip_attack.rb, line 5 def initialize(target: CryptoToolchain::BlackBoxes::CbcBitflipTarget.new) @target = target end
Public Instance Methods
execute()
click to toggle source
# File lib/crypto_toolchain/tools/cbc_bitflip_attack.rb, line 14 def execute easy = ":admin<true:" #only need to flip the last bit of bytes 1, 7, 12 blocks = target.encrypt(easy).in_blocks(16) first = flip(blocks[1], 0, 8) equals = flip(first, 6, 8) last = flip(equals, 11, 8) blocks[1] = last blocks.join end
flip(block, byte, bit)
click to toggle source
# File lib/crypto_toolchain/tools/cbc_bitflip_attack.rb, line 9 def flip(block, byte, bit) new_byte = ((1 << (bit - 8)) ^ (block[byte].ord)).chr block[0...byte] + new_byte + block[(byte+1)..-1] end