class CryptoToolbox::Oracles::PaddingOracle::HttpOracle

Public Class Methods

new() click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/http_oracle.rb, line 5
def initialize
  require 'net/http'
  @domain   = "crypto-class.appspot.com"
  @uri_base = "/po?er="
  @port     = 80
end

Public Instance Methods

connect() click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/http_oracle.rb, line 11
def connect
  true
end
disconnect() click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/http_oracle.rb, line 14
def disconnect
  true
end
valid_padding?(input,block_amount) click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/http_oracle.rb, line 17
def valid_padding?(input,block_amount)

  uri = @uri_base + input.hex

  Net::HTTP.start(@domain,@port) do |http|
    res   = http.request(Net::HTTP::Get.new(uri))
    code  = res.code.to_i
    sleep 0.001
    
    #   -> howto check this ? (block_index == 3 && pad_index == 9 && code == 200 )
    (code == 404 || code == 200)
  end
end