Log the name correctly and fix the whitespace issues

git-svn-id: file:///home/svn/framework3/trunk@5582 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
HD Moore 2008-07-23 21:59:57 +00:00
parent b9fc41cf9c
commit 4f67ae9186
1 changed files with 36 additions and 40 deletions

View File

@ -22,7 +22,7 @@ class Auxiliary::Server::Dns::SpoofHelper < Msf::Auxiliary
def initialize
super(
'Name' => 'DNS Sppofing Helper Service',
'Name' => 'DNS Spoofing Helper Service',
'Version' => '$Revision$',
'Description' => %q{
This module provides a DNS service that returns TXT
@ -51,61 +51,57 @@ class Auxiliary::Server::Dns::SpoofHelper < Msf::Auxiliary
end
def run
def run
@targ = datastore['TARGETHOST']
if(@targ and @targ.strip.length == 0)
@targ = nil
end
@port = datastore['SRVPORT'].to_i
# MacOS X workaround
::Socket.do_not_reverse_lookup = true
@sock = ::UDPSocket.new()
@sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, 1)
@sock.bind(datastore['SRVHOST'], @port)
@run = true
Thread.new {
# MacOS X workaround
::Socket.do_not_reverse_lookup = true
@sock = ::UDPSocket.new()
@sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, 1)
@sock.bind(datastore['SRVHOST'], @port)
@run = true
# Wrap in exception handler
begin
while @run
packet, addr = @sock.recvfrom(65535)
if (packet.length == 0)
break
end
request = Resolv::DNS::Message.decode(packet)
request.each_question {|name, typeclass|
tc_s = typeclass.to_s().gsub(/^Resolv::DNS::Resource::/, "")
request.qr = 1
request.ra = 1
case tc_s
when 'IN::TXT'
answer = Resolv::DNS::Resource::IN::TXT.new("#{addr[3]}:#{addr[1]} #{name}")
request.add_answer(name, 1, answer)
name = ''
while @run
packet, addr = @sock.recvfrom(65535)
if (packet.length == 0)
break
end
}
print_status("DNS #{addr[3]}:#{addr[1]} XID #{request.id}")
@sock.send(request.encode(), 0, addr[3], addr[1])
end
request = Resolv::DNS::Message.decode(packet)
request.each_question {|name, typeclass|
tc_s = typeclass.to_s().gsub(/^Resolv::DNS::Resource::/, "")
request.qr = 1
request.ra = 1
case tc_s
when 'IN::TXT'
print_status("DNS #{addr[3]}:#{addr[1]} XID #{request.id} #{name}")
answer = Resolv::DNS::Resource::IN::TXT.new("#{addr[3]}:#{addr[1]} #{name}")
request.add_answer(name, 1, answer)
end
}
@sock.send(request.encode(), 0, addr[3], addr[1])
end
# Make sure the socket gets closed on exit
rescue ::Exception => e
print_error("spoofhelper: #{e.class} #{e} #{e.backtrace}")
ensure
@sock.close
end
}
end
end