我如何在Ruby中使用RAW套接字?

时间:2009-08-28 01:09:06

标签: ruby raw-sockets

我正在尝试使用Ruby创建一个原始套接字。

问题是,那里没有任何称为“原始套接字”的东西,另一方面,Socket类本身并没有完全记录。

是否有人在Ruby中为这种套接字提供了一些代码示例,或者可能是某种类型的文档?

顺便说一句,我已经知道如何使用TCPSocket和TCPServer类了,我需要的是一个原始套接字。

3 个答案:

答案 0 :(得分:2)

Google带来了以下结果: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

(整个原始套接字在unices上相当讨厌,因为它通常需要root访问权限。我没有测试这段代码。如果你不使用IPSocket,你可能需要自己构建整个数据包)

答案 1 :(得分:2)

看看PacketFu。它由Metasploit项目维护和使用得很好。

答案 2 :(得分:1)

看看球拍宝石(https://rubygems.org/gems/racket)。自上一版本于2009年发布以来,它似乎有点过时,但它也用于metasploit框架。