ronin-rb / ronin-support

A support library for Ronin. Like activesupport, but for hacking!
https://ronin-rb.dev
GNU Lesser General Public License v3.0
25 stars 9 forks source link

Ronin::Network::UDP::Proxy.start issue with socket.recv #38

Closed evoltech closed 12 years ago

evoltech commented 12 years ago

Consider:

require 'ronin/network/udp/proxy'
require 'hexdump'

Ronin::Network::UDP::Proxy.start(:port => 1194, :server => ['meow.com', 1194]) do |proxy|
  address = lambda { |socket|
    addrinfo = socket.peeraddr

    "#{addrinfo[3]}:#{addrinfo[1]}"
  }
  hex = Hexdump::Dumper.new

  proxy.on_client_data do |client,server,data|
    puts "#{address[client]} -> #{proxy}"
    hex.dump(data)
  end

  proxy.on_server_data do |client,server,data|
    proxy.close! if data =~ /QUIT/

    puts "#{address[client]} <- #{proxy}"
    hex.dump(data)
  end

end

results in:

$ ruby udp_proxy.rb 
<path>/gems/ruby-1.9.3-p194/gems/ronin-support-0.5.0.rc2/lib/ronin/network/udp/proxy.rb:118:in `recv': undefined method `recv' for nil:NilClass (NoMethodError)
    from <path>/.rvm/gems/ruby-1.9.3-p194/gems/ronin-support-0.5.0.rc2/lib/ronin/network/udp/proxy.rb:67:in `poll'
    from <path>/.rvm/gems/ruby-1.9.3-p194/gems/ronin-support-0.5.0.rc2/lib/ronin/network/proxy.rb:190:in `listen'
    from <path>/.rvm/gems/ruby-1.9.3-p194/gems/ronin-support-0.5.0.rc2/lib/ronin/network/proxy.rb:155:in `start'
    from <path>/.rvm/gems/ruby-1.9.3-p194/gems/ronin-support-0.5.0.rc2/lib/ronin/network/proxy.rb:142:in `start'
    from udp_proxy.rb:4:in `<main>'
postmodern commented 12 years ago

Tested the fix locally with https://gist.github.com/2919927