lib/ronin/network/udp.rb in ronin-support-0.4.1 vs lib/ronin/network/udp.rb in ronin-support-0.5.0.rc1

- old
+ new

@@ -15,271 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with Ronin Support. If not, see <http://www.gnu.org/licenses/>. # -require 'socket' - -module Ronin - module Network - # - # Provides helper methods for using the UDP protocol. - # - module UDP - # - # Creates a new UDPSocket object connected to a given host and port. - # - # @param [String] host - # The host to connect to. - # - # @param [Integer] port - # The port to connect to. - # - # @param [String] local_host (nil) - # The local host to bind to. - # - # @param [Integer] local_port (nil) - # The local port to bind to. - # - # @yield [socket] - # If a block is given, it will be passed the newly created socket. - # - # @yieldparam [UDPsocket] socket - # The newly created UDPSocket object. - # - # @return [UDPSocket] - # The newly created UDPSocket object. - # - # @example - # udp_connect('www.hackety.org',80) - # # => UDPSocket - # - # @example - # udp_connect('www.wired.com',80) do |socket| - # puts socket.readlines - # end - # - # @api public - # - def udp_connect(host,port,local_host=nil,local_port=0) - host = host.to_s - local_host = (local_host || '0.0.0.0').to_s - - socket = UDPSocket.new - socket.bind(local_host,local_port) if (local_host && local_port) - socket.connect(host,port) - - yield socket if block_given? - return socket - end - - # - # Creates a new UDPSocket object, connected to a given host and port. - # The given data will then be written to the newly created UDPSocket. - # - # @param [String] data - # The data to send through the connection. - # - # @param [String] host - # The host to connect to. - # - # @param [Integer] port - # The port to connect to. - # - # @param [String] local_host (nil) - # The local host to bind to. - # - # @param [Integer] local_port (nil) - # The local port to bind to. - # - # @yield [socket] - # If a block is given, it will be passed the newly created socket. - # - # @yieldparam [UDPsocket] socket - # The newly created UDPSocket object. - # - # @return [UDPSocket] - # The newly created UDPSocket object. - # - # @api public - # - def udp_connect_and_send(data,host,port,local_host=nil,local_port=0) - socket = udp_connect(host,port,local_host,local_port) - socket.write(data) - - yield socket if block_given? - return socket - end - - # - # Creates a new temporary UDPSocket object, connected to the given host - # and port. - # - # @param [String] host - # The host to connect to. - # - # @param [Integer] port - # The port to connect to. - # - # @param [String] local_host (nil) - # The local host to bind to. - # - # @param [Integer] local_port (nil) - # The local port to bind to. - # - # @yield [socket] - # If a block is given, it will be passed the newly created socket. - # After the block has returned, the socket will then be closed. - # - # @yieldparam [UDPsocket] socket - # The newly created UDPSocket object. - # - # @return [nil] - # - # @api public - # - def udp_session(host,port,local_host=nil,local_port=0) - socket = udp_connect(host,port,local_host,local_port) - - yield socket if block_given? - - socket.close - return nil - end - - # - # Connects to a specified host and port, sends the given data and then - # closes the connection. - # - # @param [String] data - # The data to send through the connection. - # - # @param [String] host - # The host to connect to. - # - # @param [Integer] port - # The port to connect to. - # - # @param [String] local_host (nil) - # The local host to bind to. - # - # @param [Integer] local_port (nil) - # The local port to bind to. - # - # @return [true] - # The data was successfully sent. - # - # @example - # buffer = "GET /" + ('A' * 4096) + "\n\r" - # udp_send(buffer,'victim.com',80) - # # => true - # - # @api public - # - # @since 0.4.0 - # - def udp_send(data,host,port,local_host=nil,local_port=0) - udp_session(host,port,local_host,local_port) do |socket| - socket.write(data) - end - - return true - end - - # - # Reads the banner from the service running on the given host and port. - # - # @param [String] host - # The host to connect to. - # - # @param [Integer] port - # The port to connect to. - # - # @param [String] local_host (nil) - # The local host to bind to. - # - # @param [Integer] local_port (nil) - # The local port to bind to. - # - # @yield [banner] - # If a block is given, it will be passed the grabbed banner. - # - # @yieldparam [String] banner - # The grabbed banner. - # - # @return [String] - # The grabbed banner. - # - # @api public - # - def udp_banner(host,port,local_host=nil,local_port=0) - banner = nil - - udp_session(host,port,local_host,local_port) do |socket| - banner = socket.readline - end - - yield banner if block_given? - return banner - end - - # - # Creates a new UDPServer listening on a given host and port. - # - # @param [Integer] port - # The local port to listen on. - # - # @param [String] host ('0.0.0.0') - # The host to bind to. - # - # @return [UDPServer] - # The new UDP server. - # - # @example - # udp_server(1337) - # - # @api public - # - def udp_server(port=0,host=nil) - host = (host || '0.0.0.0').to_s - server = UDPSocket.new - - server.bind(host,port) - - yield server if block_given? - return server - end - - # - # Creates a new temporary UDPServer listening on a given host and port. - # - # @param [Integer] port - # The local port to bind to. - # - # @param [String] host ('0.0.0.0') - # The host to bind to. - # - # @yield [server] - # The block which will be called after the server has been created. - # After the block has finished, the server will be closed. - # - # @yieldparam [UDPServer] server - # The newly created UDP server. - # - # @return [nil] - # - # @example - # udp_server_session(1337) do |server| - # data, sender = server.recvfrom(1024) - # end - # - # @api public - # - def udp_server_session(port=0,host=nil,&block) - server = udp_server(port,host,&block) - - server.close() - return nil - end - end - end -end +require 'ronin/network/udp/udp' +require 'ronin/network/udp/proxy'