2009-08-28 3 views
3

Я пытаюсь создать сырой сокет с помощью Ruby.Как использовать RAW-сокеты в Ruby?

Проблема в том, что там нет ничего, что называется «raw socket», а с другой стороны, сам класс Socket не полностью документирован.

Есть ли у кого-нибудь образцы кода для такого рода сокетов в Ruby или какая-то документация для этого?

Кстати, я уже знаю, как работать с классами TCPSocket и TCPServer, а то, что мне нужно, - это, в частности, сырой сокет.

ответ

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) 

Дополнительную документацию по различным классам Цоколь: http://www.rubycentral.com/pickaxe/lib_network.html

(Все сырые сокеты вещь довольно неприятная на UNIXах, так как для этого обычно требуется root-доступ. Я не тестировал этот код. Возможно, вам придется самому построить весь пакет, если вы не используете IPSocket)

+0

Thanx dude ..... но я уже видел это «http://www.ruby-forum.com/topic/90408», это бесполезное дерьмо, и оно полон ошибок. The Pickaxe 3-е издание было самой полезной вещью, чем снова. – Raafat

+0

Это действительно работает. Проблема заключается в том, что код примера, с которым вы столкнулись, в google содержит ./ip. то, что они не говорят вам, это то, что это обычный класс bitstruct. Кроме того, он просто сидит там и продолжает блокировать, если он получает меньше 1024 данных. просто говоря, что назвать это бесполезным дерьмом, вероятно, чрезмерным. – RobotHumans

+0

Где вы получаете ip-класс, используемый на примере рубинового форума? – Joost

1

Посмотрите на драгоценный камень ракетки (https://rubygems.org/gems/racket). Кажется, что он немного устарел, так как последняя версия была выпущена в 2009 году, но также использовалась в метапланете.

2

Посмотрите на PacketFu. Он очень хорошо поддерживается и используется проектом Metasploit.

+0

Первое, что прочитано в readme (https://github.com/todb/packetfu/blob/master/README.rdoc) о libpcap , действительно ли вы хотите писать неинновационные/тестовые приложения, чтобы иметь зависимости pcap? – nhed

Смежные вопросы