From cbd815c519f10058fa7481cd4baba4daa2216eec Mon Sep 17 00:00:00 2001 From: soh_cah_toa Date: Sun, 5 May 2013 22:19:54 -0400 Subject: [PATCH] Changed output format for RubyDNS to be "BeEF-compliant". RubyDNS's logger now uses BeEF's print-related functions. Debug messages regarding queries can be enabled using --verbose. --- extensions/dns/extension.rb | 1 + extensions/dns/ruby.rb | 7 +++++++ extensions/dns/ruby/logger.rb | 23 +++++++++++++++++++++++ extensions/dns/ruby/rubydns.rb | 31 +++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 extensions/dns/ruby.rb create mode 100644 extensions/dns/ruby/logger.rb create mode 100644 extensions/dns/ruby/rubydns.rb diff --git a/extensions/dns/extension.rb b/extensions/dns/extension.rb index 04a655c4a..6b1375d2f 100644 --- a/extensions/dns/extension.rb +++ b/extensions/dns/extension.rb @@ -20,3 +20,4 @@ end require 'extensions/dns/api' require 'extensions/dns/dns' +require 'extensions/dns/ruby' diff --git a/extensions/dns/ruby.rb b/extensions/dns/ruby.rb new file mode 100644 index 000000000..99cf46225 --- /dev/null +++ b/extensions/dns/ruby.rb @@ -0,0 +1,7 @@ +# +# Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net +# Browser Exploitation Framework (BeEF) - http://beefproject.com +# See the file 'doc/COPYING' for copying permission +# +require 'extensions/dns/ruby/logger' +require 'extensions/dns/ruby/rubydns' diff --git a/extensions/dns/ruby/logger.rb b/extensions/dns/ruby/logger.rb new file mode 100644 index 000000000..46573c1af --- /dev/null +++ b/extensions/dns/ruby/logger.rb @@ -0,0 +1,23 @@ +# +# Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net +# Browser Exploitation Framework (BeEF) - http://beefproject.com +# See the file 'doc/COPYING' for copying permission +# + +# Overrives the logger used by RubyDNS to use BeEF's print_info() and friends +class Logger + + def debug(msg) + print_debug "DNS Server: #{msg}" + end + + def info(msg) + print_info "DNS Server: #{msg}" + end + + def error(msg) + print_error "DNS Server: #{msg}" + end + +end + diff --git a/extensions/dns/ruby/rubydns.rb b/extensions/dns/ruby/rubydns.rb new file mode 100644 index 000000000..f407b6f7e --- /dev/null +++ b/extensions/dns/ruby/rubydns.rb @@ -0,0 +1,31 @@ +# +# Copyright (c) 2006-2013 Wade Alcorn - wade@bindshell.net +# Browser Exploitation Framework (BeEF) - http://beefproject.com +# See the file 'doc/COPYING' for copying permission +# +module RubyDNS + + # Overrides RubyDNS::run_server() to behave exactly the same, minus the output + def self.run_server(options = {}, &block) + server = RubyDNS::Server.new(&block) + + options[:listen] ||= [[:udp, "0.0.0.0", 53], [:tcp, "0.0.0.0", 53]] + + EventMachine.run do + server.fire(:setup) + + options[:listen].each do |spec| + if spec[0] == :udp + EventMachine.open_datagram_socket(spec[1], spec[2], UDPHandler, server) + elsif spec[0] == :tcp + EventMachine.start_server(spec[1], spec[2], TCPHandler, server) + end + end + + server.fire(:start) + end + + server.fire(:stop) + end + +end