class CryptoToolchain::BlackBoxes::CbcPaddingOracle

Attributes

ciphertext[R]
iv[R]
key[R]
plaintext[R]

Public Class Methods

new(key: Random.new.bytes(16), iv: Random.new.bytes(16)) click to toggle source
# File lib/crypto_toolchain/black_boxes/cbc_padding_oracle.rb, line 7
def initialize(key: Random.new.bytes(16), iv: Random.new.bytes(16))
  @key = key
  @iv = iv
  @ciphertext = text.encrypt_cbc(key: key, iv: iv, blocksize: 16)
  @plaintext = text
end

Public Instance Methods

execute(str) click to toggle source
# File lib/crypto_toolchain/black_boxes/cbc_padding_oracle.rb, line 14
def execute(str)
  begin
    !!str.
      decrypt_cbc(key: key, iv: iv, blocksize: 16, strip_padding: false).
      without_pkcs7_padding(16, raise_error: true)
  rescue ArgumentError
    false
  end
end

Private Instance Methods

text() click to toggle source
# File lib/crypto_toolchain/black_boxes/cbc_padding_oracle.rb, line 28
def text
  @text ||= %w(
    MDAwMDAwTm93IHRoYXQgdGhlIHBhcnR5IGlzIGp1bXBpbmc=
    MDAwMDAxV2l0aCB0aGUgYmFzcyBraWNrZWQgaW4gYW5kIHRoZSBWZWdhJ3MgYXJlIHB1bXBpbic=
    MDAwMDAyUXVpY2sgdG8gdGhlIHBvaW50LCB0byB0aGUgcG9pbnQsIG5vIGZha2luZw==
    MDAwMDAzQ29va2luZyBNQydzIGxpa2UgYSBwb3VuZCBvZiBiYWNvbg==
    MDAwMDA0QnVybmluZyAnZW0sIGlmIHlvdSBhaW4ndCBxdWljayBhbmQgbmltYmxl
    MDAwMDA1SSBnbyBjcmF6eSB3aGVuIEkgaGVhciBhIGN5bWJhbA==
    MDAwMDA2QW5kIGEgaGlnaCBoYXQgd2l0aCBhIHNvdXBlZCB1cCB0ZW1wbw==
    MDAwMDA3SSdtIG9uIGEgcm9sbCwgaXQncyB0aW1lIHRvIGdvIHNvbG8=
    MDAwMDA4b2xsaW4nIGluIG15IGZpdmUgcG9pbnQgb2g=
    MDAwMDA5aXRoIG15IHJhZy10b3AgZG93biBzbyBteSBoYWlyIGNhbiBibG93
  ).map(&:from_base64).sample
end