Ruby 是否有 "pwntools" 等效的 gem?
Is there "pwntools" equivalent gem for Ruby?
或者在ruby套接字编程中是否有任何方法可以使这个函数工作:
conn = pwn.remote('localhost', 4567)
conn.recvuntil("> ")
使用本机 Ruby 套接字模块,socket.read(字节) 将等待直到它接收到确切的字节数,我无法先验决定。而且,socket.recv(bytes),无论消息是否完整,都会在获得一些数据后立即打印。
因为,我确实知道消息格式及其结尾,如果有如上所述的 gem 或任何方式获得 Ruby 中的功能,那将很容易。
例如,如果我知道来自服务器的消息以冒号结尾,
socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
sockaddr = Socket.pack_sockaddr_in(port, hostname)
socket.connect( sockaddr )
socket.recvuntil ": "
# do something
socket.send "y"
require 'socket'
def read_until(socket, re)
accu = ''
re = Regexp.escape(re) if String === re
re = /#{re}\Z/
socket.each_char do |c|
accu << c
return accu if re === accu
end
return accu
end
socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0 )
sockaddr = Socket.pack_sockaddr_in(80, 'www.google.com')
socket.connect(sockaddr)
socket.write "GET / HTTP/1.0\n\n"
headers = read_until(socket, /\r\n\r\n/)
body = socket.read
puts "HEADERS:\n#{headers}BODY:\n#{body}"
或者在ruby套接字编程中是否有任何方法可以使这个函数工作:
conn = pwn.remote('localhost', 4567)
conn.recvuntil("> ")
使用本机 Ruby 套接字模块,socket.read(字节) 将等待直到它接收到确切的字节数,我无法先验决定。而且,socket.recv(bytes),无论消息是否完整,都会在获得一些数据后立即打印。
因为,我确实知道消息格式及其结尾,如果有如上所述的 gem 或任何方式获得 Ruby 中的功能,那将很容易。
例如,如果我知道来自服务器的消息以冒号结尾,
socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
sockaddr = Socket.pack_sockaddr_in(port, hostname)
socket.connect( sockaddr )
socket.recvuntil ": "
# do something
socket.send "y"
require 'socket'
def read_until(socket, re)
accu = ''
re = Regexp.escape(re) if String === re
re = /#{re}\Z/
socket.each_char do |c|
accu << c
return accu if re === accu
end
return accu
end
socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0 )
sockaddr = Socket.pack_sockaddr_in(80, 'www.google.com')
socket.connect(sockaddr)
socket.write "GET / HTTP/1.0\n\n"
headers = read_until(socket, /\r\n\r\n/)
body = socket.read
puts "HEADERS:\n#{headers}BODY:\n#{body}"