2010-05-03 17:13:09 +00:00
|
|
|
##
|
2014-10-17 16:47:33 +00:00
|
|
|
# This module requires Metasploit: http://metasploit.com/download
|
2013-10-15 18:50:46 +00:00
|
|
|
# Current source: https://github.com/rapid7/metasploit-framework
|
2010-05-03 17:13:09 +00:00
|
|
|
##
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2010-05-03 17:13:09 +00:00
|
|
|
require 'msf/core'
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2016-03-08 13:02:44 +00:00
|
|
|
class MetasploitModule < Msf::Auxiliary
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
include Msf::Exploit::DECT_COA
|
|
|
|
|
|
|
|
def initialize
|
|
|
|
super(
|
|
|
|
'Name' => 'DECT Call Scanner',
|
|
|
|
'Description' => 'This module scans for active DECT calls',
|
|
|
|
'Author' => [ 'DK <privilegedmode[at]gmail.com>' ],
|
2015-10-27 17:41:32 +00:00
|
|
|
'License' => MSF_LICENSE
|
2013-08-30 21:28:54 +00:00
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
def print_results
|
|
|
|
print_line("Time\t\t\t\tRFPI\t\tChannel")
|
|
|
|
@calls.each do |rfpi, data|
|
|
|
|
print_line("#{data['time']}\t#{data['rfpi']}\t#{data['channel']}")
|
|
|
|
end
|
|
|
|
end
|
2009-09-12 15:40:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
=begin
|
2013-08-30 21:28:54 +00:00
|
|
|
def record_call(data)
|
|
|
|
print_status("Synchronizing..")
|
|
|
|
pp_scan_mode(data['rfpi_raw'])
|
|
|
|
while(true)
|
|
|
|
data = poll_coa()
|
|
|
|
puts data
|
|
|
|
end
|
|
|
|
end
|
2009-09-12 15:40:33 +00:00
|
|
|
=end
|
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
def run
|
|
|
|
@calls = {}
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
print_status("Opening interface: #{datastore['INTERFACE']}")
|
|
|
|
print_status("Using band: #{datastore['BAND']}")
|
2010-05-03 17:13:09 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
open_coa
|
2010-05-03 17:13:09 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
begin
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
print_status("Changing to call scan mode.")
|
|
|
|
call_scan_mode
|
|
|
|
print_status("Scanning...")
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
while (true)
|
|
|
|
data = poll_coa()
|
|
|
|
if (data)
|
|
|
|
parsed_data = parse_call(data)
|
|
|
|
parsed_data['time'] = Time.now
|
|
|
|
print_status("Found active call on: #{parsed_data['rfpi']}")
|
|
|
|
@calls[parsed_data['time']] = parsed_data
|
|
|
|
end
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
next_channel
|
2009-09-12 15:40:33 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
vprint_status("Switching to channel: #{channel}")
|
|
|
|
select(nil,nil,nil,1)
|
|
|
|
end
|
|
|
|
ensure
|
|
|
|
print_status("Closing interface")
|
|
|
|
stop_coa()
|
|
|
|
close_coa()
|
|
|
|
end
|
2010-05-03 17:13:09 +00:00
|
|
|
|
2013-08-30 21:28:54 +00:00
|
|
|
print_results
|
|
|
|
end
|
2009-09-12 15:40:33 +00:00
|
|
|
end
|