class Xploit::Sock
Attributes
debug[RW]
timeout[RW]
Public Class Methods
new(host, port, timeout = nil, debug = false)
click to toggle source
# File lib/xploit/sock.rb, line 15 def initialize(host, port, timeout = nil, debug = false) @sock = TCPSocket.open(host, port) @timeout = 0.5 @debug = debug puts "[\e[32m*\e[0m] Connect to #{host}:#{port}" end
open(host, port, timeout = nil, debug = false) { |s| ... }
click to toggle source
# File lib/xploit/sock.rb, line 22 def self.open(host, port, timeout = nil, debug = false) if block_given? s = Sock.new(host, port, timeout, debug) yield(s) s.close else Sock.new(host, port, timeout, debug) end end
Public Instance Methods
close()
click to toggle source
# File lib/xploit/sock.rb, line 88 def close puts "[\e[32m*\e[0m] Close the connection" @sock.close end
recv(n = nil, delim = nil)
click to toggle source
# File lib/xploit/sock.rb, line 48 def recv(n = nil, delim = nil) puts "[ \e[35mRECV\e[0m ]" if @debug unless n.nil? res = @sock.read(n) Hexdump.dump(res) if @debug return res end res = "" while select([@sock], nil, nil,timeout=@timeout) s = @sock.read(1) raise RecvError if s.length != 1 res << s break res if not delim.nil? and res.include?(delim) end Hexdump.dump(res) if @debug res end
recvline()
click to toggle source
# File lib/xploit/sock.rb, line 76 def recvline() recvuntil("\n") end
recvuntil(delim)
click to toggle source
# File lib/xploit/sock.rb, line 72 def recvuntil(delim) self.recv(n = nil, delim) end
send(data)
click to toggle source
# File lib/xploit/sock.rb, line 32 def send(data) puts "[\e[34m SEND \e[0m]" if @debug len = @sock.write(data) raise SendError if len != data.bytesize Hexdump.dump(data) if @debug return len end
sendline(msg)
click to toggle source
# File lib/xploit/sock.rb, line 44 def sendline(msg) send(msg + "\n") end
shell()
click to toggle source
# File lib/xploit/sock.rb, line 80 def shell STDOUT.sync = true while s = STDIN.gets self.send(s) puts self.recv(n = nil, delim = nil) end end