Path: blob/master/modules/auxiliary/scanner/mdns/query.rb
19592 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Auxiliary6include Msf::Auxiliary::Report7include Msf::Auxiliary::UDPScanner8include Msf::Auxiliary::MDNS910def initialize(info = {})11super(12update_info(13info,14'Name' => 'mDNS Query',15'Description' => %q{16This module sends mDNS queries, which are really just normal UDP DNS17queries done (usually) over multicast on a different port, 5353.18},19'Author' => [20'Jon Hart <jon_hart[at]rapid7.com>'21],22'License' => MSF_LICENSE,23'Notes' => {24'Reliability' => UNKNOWN_RELIABILITY,25'Stability' => UNKNOWN_STABILITY,26'SideEffects' => UNKNOWN_SIDE_EFFECTS27}28)29)30end3132def scanner_prescan(batch)33print_status("Sending mDNS #{query_type_name} #{query_class_name} queries for " \34"#{query_name} to #{batch[0]}->#{batch[-1]} port #{rport} (#{batch.length} hosts)")35@results = {}36end3738def scanner_postscan(_batch)39found = {}40@results.each_pair do |peer, resps|41resps.each do |resp|42found[peer] ||= {}43next if found[peer][resp]4445response_info = describe_response(resp)46print_good("#{peer} responded with #{response_info}")47report_service(host: peer, port: rport, proto: "udp", name: "mdns", info: response_info)48found[peer][resp] = true49end50end51end52end535455