diff options
Diffstat (limited to 'bin/net-dhcp')
-rw-r--r-- | bin/net-dhcp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/bin/net-dhcp b/bin/net-dhcp new file mode 100644 index 0000000..9eaa3c5 --- /dev/null +++ b/bin/net-dhcp @@ -0,0 +1,37 @@ +# main.rb +# 4 de octubre de 2007 +# + +require 'dhcp' +require 'socket' +require 'pcaplet' + +server_thread = Thread.new do + s = "Packets received by the filter:\n" + s << '-'*s.size + "\n" + + dhcpdump = Pcaplet.new('-s 4096') + + DHCP_PACKET = Pcap::Filter.new('port 67 or port 68', dhcpdump.capture) + + dhcpdump.add_filter(DHCP_PACKET) + dhcpdump.each_packet {|pkt| + msg = DHCP::Message.from_udp_payload(pkt.udp_data) + + s << "#{pkt.src}:#{pkt.sport} > #{pkt.dst}:#{pkt.dport}\n" + s << msg.to_s + puts s if s + } +end + +discover = DHCP::Discover.new +payload = discover.pack + + +sckt = UDPSocket.new +sckt.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST,true) +sckt.bind('', 68) +sckt.send(payload, 0, "<broadcast>", 67) + +trap('INT') {server_thread.kill} +server_thread.join
\ No newline at end of file |