首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Ruby,是否有"pwntools“等效的宝石?

对于Ruby,是否有"pwntools“等效的宝石?
EN

Stack Overflow用户
提问于 2015-07-23 00:08:52
回答 1查看 385关注 0票数 1

还是无论如何,这个函数可以在ruby套接字编程中工作:

代码语言:javascript
复制
conn = pwn.remote('localhost', 4567)
conn.recvuntil("> ")

对于原生Ruby模块,socket.read(bytes)将等待直到它接收到确切的字节数,而这一点我无法事先确定。而且,socket.recv(bytes),将在获得一些数据后立即打印,而不管消息是否完成。

因为,我知道消息格式和它的结尾,所以如果有上面提到的gem或者以任何方式获得Ruby中的功能,那就很容易了。

例如,如果我知道来自服务器的消息以冒号结尾,

代码语言:javascript
复制
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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-23 02:16:11

代码语言:javascript
复制
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}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31576070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档