class CryptoToolbox::Oracles::PaddingOracle::TcpOracle
Public Class Methods
new()
click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/tcp_oracle.rb, line 6 def initialize require "socket" @hostname = '54.165.60.84' @port = 80 @socket = nil end
Public Instance Methods
connect()
click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/tcp_oracle.rb, line 13 def connect @socket = TCPSocket.open(@hostname,@port) end
disconnect()
click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/tcp_oracle.rb, line 17 def disconnect if @socket @socket.close end end
valid_padding?(input,block_amount)
click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/tcp_oracle.rb, line 23 def valid_padding?(input,block_amount) ! send_msg(input, block_amount).zero? end
Private Instance Methods
connected?()
click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/tcp_oracle.rb, line 36 def connected? !!@socket end
send_msg(input,block_amount)
click to toggle source
# File lib/crypto-toolbox/oracles/padding_oracle/tcp_oracle.rb, line 28 def send_msg(input,block_amount) connect unless connected? msg = ([block_amount] + input + [0]).map(&:chr).join sleep 0.01 @socket.write(msg) @socket.read(2).to_i end