我该如何在Ruby中使用原始套接字?

3
我试图使用Ruby创建原始套接字。
问题是,那里没有叫做“原始套接字”的东西,而且另一方面,Socket类本身的文档也不完整。
有人有这种类型的Ruby套接字的代码示例或者某种文档吗?
顺便说一句,我已经知道如何使用TCPSocket和TCPServer类,我需要的特别是一个原始套接字。
3个回答

3
谷歌搜索结果如下:http://www.ruby-forum.com/topic/90408 简短版本:
require 'socket'

rsock = Socket.open(Socket::PF_INET, Socket::SOCK_RAW, Socket::IPPROTO_RAW)

rsock.send(string, flags)

rsock.recv(1024)

更多关于各种Socket类的文档:http://www.rubycentral.com/pickaxe/lib_network.html (在Unix系统上,原始套接字的整个过程通常需要root访问权限,这有点棘手。我没有测试过这段代码。如果您不使用IPSocket,则可能需要自己构建整个数据包)。

谢谢,伙计......但我已经看过这个“http://www.ruby-forum.com/topic/90408”,它是无用的垃圾,而且充满了错误。《Ruby程序员修炼之道》第三版是最有用的东西,再次感谢。 - Raafat
它确实能工作,但有点问题。问题在于你在谷歌上找到的示例代码中有一个"./ip include"。他们没有告诉你的是,这是一个常见的模板bitstruct类。此外,如果它收到少于1024个数据,它会继续阻塞。只是说把它称为无用的垃圾可能有些过分了。 - RobotHumans
你在哪里找到了 Ruby 论坛示例中使用的 IP 类? - Joost

2

请看PacketFu。它得到很好的维护并被Metasploit项目使用。


README文件(https://github.com/todb/packetfu/blob/master/README.rdoc)中的第一件事是关于libpcap的,你真的想编写非诊断/测试应用程序来具有pcap依赖吗? - nhed

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接