64 lines
1.9 KiB
Ruby
64 lines
1.9 KiB
Ruby
##
|
|
# This module requires Metasploit: https://metasploit.com/download
|
|
# Current source: https://github.com/rapid7/metasploit-framework
|
|
##
|
|
|
|
class MetasploitModule < Msf::Post
|
|
include Msf::Post::Hardware::RFTransceiver::RFTransceiver
|
|
|
|
def initialize(info = {})
|
|
super(
|
|
update_info(
|
|
info,
|
|
'Name' => 'RF Transceiver Transmitter',
|
|
'Description' => %q{
|
|
This module powers an HWBridge-connected radio transceiver,
|
|
effectively transmitting on the frequency set by the FREQ option.
|
|
|
|
NOTE: Users of this module should be aware of their local laws,
|
|
regulations, and licensing requirements for transmitting on any
|
|
given radio frequency.
|
|
},
|
|
'References' => [
|
|
['URL', 'https://github.com/AndrewMohawk/RfCatHelpers']
|
|
],
|
|
'License' => MSF_LICENSE,
|
|
'Author' => ['Craig Smith'],
|
|
'Platform' => ['hardware'],
|
|
'SessionTypes' => ['hwbridge']
|
|
)
|
|
)
|
|
register_options([
|
|
OptInt.new('FREQ', [true, 'Frequency to transmit on']),
|
|
OptInt.new('SECONDS', [false, 'Seconds to transmit', 4]),
|
|
OptInt.new('BAUD', [false, 'Baud rate to use', 4800]),
|
|
OptInt.new('POWER', [false, 'Power level', 100]),
|
|
OptInt.new('INDEX', [false, 'USB Index to use', 0])
|
|
])
|
|
end
|
|
|
|
def run
|
|
unless is_rf?
|
|
print_error('Not an RF Transceiver')
|
|
return
|
|
end
|
|
unless set_index(datastore['INDEX'])
|
|
print_error("Couldn't set usb index to #{datastore['INDEX']}")
|
|
return
|
|
end
|
|
set_modulation('ASK/OOK')
|
|
set_freq(datastore['FREQ'])
|
|
set_sync_mode(0)
|
|
set_baud(datastore['BAUD'])
|
|
set_channel_spc(24000)
|
|
set_mode('idle')
|
|
set_power(datastore['POWER'])
|
|
|
|
print_status("Transmitting on #{datastore['FREQ']} for #{datastore['SECONDS']} seconds...")
|
|
set_mode('tx')
|
|
sleep(datastore['SECONDS'])
|
|
print_status('Finished transmitting')
|
|
set_mode('idle')
|
|
end
|
|
end
|