Class: CryptoToolchain::Tools::CbcBitflipAttack
- Defined in:
- lib/crypto_toolchain/tools/cbc_bitflip_attack.rb
Instance Method Summary collapse
- #execute ⇒ Object
- #flip(block, byte, bit) ⇒ Object
-
#initialize(target: CryptoToolchain::BlackBoxes::CbcBitflipTarget.new) ⇒ CbcBitflipAttack
constructor
A new instance of CbcBitflipAttack.
Constructor Details
#initialize(target: CryptoToolchain::BlackBoxes::CbcBitflipTarget.new) ⇒ CbcBitflipAttack
Returns a new instance of CbcBitflipAttack.
5 6 7 |
# File 'lib/crypto_toolchain/tools/cbc_bitflip_attack.rb', line 5 def initialize(target: CryptoToolchain::BlackBoxes::CbcBitflipTarget.new) @target = target end |
Instance Method Details
#execute ⇒ Object
14 15 16 17 18 19 20 21 22 |
# 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) ⇒ Object
9 10 11 12 |
# 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 |