Supported Devices ================= Mirage allows to use multiple devices in order to interact with the supported wireless communications protocols. * Each device is identified by a short string called *interface* * Some capabilities are associated to each device, indicating what actions are available The following page describes the available devices and their capabilities. Bluetooth Low Energy Devices ----------------------------- HCI Device ########### **Class :** ``mirage.libs.ble.BLEHCIDevice`` .. image:: hci.jpg This device allows to communicate with an HCI Device in order to use Bluetooth Low Energy protocol. The corresponding interfaces are : ``hciX`` (e.g. "hciX") The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | yes | +-----------------------------------+----------------+ | ADVERTISING | yes | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | no | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | HIJACKING_MASTER | no | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | yes | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | yes | +-----------------------------------+----------------+ | HCI_MONITORING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+==================================================================================================================================+ | getConnections | `mirage.libs.bt.BtHCIDevice.getConnections `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | switchConnection | `mirage.libs.bt.BtHCIDevice.switchConnection `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnection | `mirage.libs.bt.BtHCIDevice.getCurrentConnection `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnectionMode | `mirage.libs.ble.BLEHCIDevice.getCurrentConnectionMode `_| +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getAddressByHandle | `mirage.libs.bt.BtHCIDevice.getAddressByHandle `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getCurrentHandle | `mirage.libs.bt.BtHCIDevice.getCurrentHandle `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.bt.BtHCIDevice.isConnected `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble.BLEHCIDevice.setScan `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | setAdvertising | `mirage.libs.ble.BLEHCIDevice.setAdvertising `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | setAdvertisingParameters | `mirage.libs.ble.BLEHCIDevice.setAdvertisingParameters `_| +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | setScanningParameters | `mirage.libs.ble.BLEHCIDevice.setScanningParameters `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getAddress | `mirage.libs.bt.BtHCIDevice.getAddress `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | setAddress | `mirage.libs.ble.BLEHCIDevice.setAddress `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.ble.BLEHCIDevice.getMode `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getAddressMode | `mirage.libs.ble.BLEHCIDevice.getAddressMode `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | getManufacturer | `mirage.libs.bt.BtHCIDevice.getManufacturer `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | isAddressChangeable | `mirage.libs.bt.BtHCIDevice.isAddressChangeable `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | encryptLink | `mirage.libs.ble.BLEHCIDevice.encryptLink `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . .. note:: ``BLEHCIDevice`` inherits from ``BtHCIDevice``, that's why some shared methods are provided by the ``BtHCIDevice`` API. BTLEJack Device ################ **Class :** ``mirage.libs.ble_utils.btlejack.BTLEJackDevice`` .. image:: microbit.jpg This device allows to communicate with a BTLEJack Device in order to sniff Bluetooth Low Energy protocol. The corresponding interfaces are : ``microbitX`` (e.g. "microbit0") If you want to use a custom serial port in order to communicate with a Waveshare BLE400 or an NRF51 Development Kit embedding the BTLEJack firmware, you can use the following syntax while providing the interface to use: ``microbit:/dev/ttyXXXX`` (e.g. ``microbit:/dev/ttyACM0``) The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | yes | +-----------------------------------+----------------+ | ADVERTISING | no | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | yes | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | yes | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | yes | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | yes | +-----------------------------------+----------------+ | HIJACKING_MASTER | yes | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | no | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-----------------------------------+----------------+ | HCI_MONITORING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+==================================================================================================================================================================================+ | getFirmwareVersion | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getFirmwareVersion `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getDeviceIndex `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setCRCChecking | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setCRCChecking `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setChannel | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffNewConnections | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.sniffNewConnections `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffExistingConnections | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.sniffExistingConnections `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.sniffAdvertisements `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | jamAdvertisements | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.jamAdvertisements `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setScan `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanInterval | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setScanInterval `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnection | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getCurrentConnection `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.isConnected `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isSynchronized | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.isSynchronized `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentHandle | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getCurrentHandle `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAccessAddress | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getAccessAddress `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCrcInit | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getCrcInit `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannelMap | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getChannelMap `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopInterval | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getHopInterval `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopIncrement | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.getHopIncrement `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setJamming | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setJamming `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setHijacking | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setHijacking `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setSweepingMode | `mirage.libs.ble_utils.btlejack.BTLEJackDevice.setSweepingMode `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . Ubertooth Device ################# **Class :** ``mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice`` .. image:: ubertooth.jpg This device allows to communicate with an Ubertooth Device in order to sniff Bluetooth Low Energy protocol. The corresponding interfaces are : ``ubertoothX`` (e.g. "ubertooth0") The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | yes | +-----------------------------------+----------------+ | ADVERTISING | no | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | yes | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | yes | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | yes | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | HIJACKING_MASTER | no | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | no | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-----------------------------------+----------------+ | HCI_MONITORING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | getFirmwareVersion | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getFirmwareVersion `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setCRCChecking | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.setCRCChecking `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setChannel | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffNewConnections | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.sniffNewConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffExistingConnections | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.sniffExistingConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.sniffAdvertisements `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | jamAdvertisements | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.jamAdvertisements `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.setScan `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanInterval | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.setScanInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isSynchronized | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.isSynchronized `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAccessAddress | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getAccessAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCrcInit | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getCrcInit `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannelMap | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getChannelMap `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopInterval | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getHopInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopIncrement | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getHopIncrement `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setJamming | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.setJamming `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSerial | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getSerial `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setSweepingMode | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.setSweepingMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . NRFSniffer Device ################## **Class :** ``mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice`` .. image:: nrfsniffer.jpg This device allows to communicate with a NRFSniffer Device in order to sniff Bluetooth Low Energy protocol. The corresponding interfaces are : ``nrfsnifferX`` (e.g. "nrfsniffer0") If you want to use a custom serial port in order to communicate with a Waveshare BLE400 or an NRF51 Development Kit embedding the NRFSniffer firmware, you can use the following syntax while providing the interface to use: ``nrfsniffer:/dev/ttyXXXX`` (e.g. ``nrfsniffer:/dev/ttyACM0``) The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | yes | +-----------------------------------+----------------+ | ADVERTISING | no | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | yes | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | HIJACKING_MASTER | no | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | no | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-----------------------------------+----------------+ | HCI_MONITORING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | getFirmwareVersion | `mirage.libs.ble_utils.ubertooth.BLEUbertoothDevice.getFirmwareVersion `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setCRCChecking | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.setCRCChecking `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setChannel | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffNewConnections | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.sniffNewConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.sniffAdvertisements `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.setScan `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanInterval | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.setScanInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isSynchronized | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.isSynchronized `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAccessAddress | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getAccessAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCrcInit | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getCrcInit `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannelMap | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getChannelMap `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopInterval | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getHopInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopIncrement | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.getHopIncrement `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setSweepingMode | `mirage.libs.ble_utils.nrfsniffer.NRFSnifferDevice.setSweepingMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . Sniffle Device ############### **Class :** ``mirage.libs.ble_utils.sniffle.SniffleDevice`` .. image:: sniffle.jpg This device allows to communicate with a Sniffle Device in order to interact with Bluetooth Low Energy protocol. The corresponding interfaces are : ``sniffleX`` (e.g. "sniffle0") If you want to use a custom serial port, you can use the following syntax while providing the interface to use: ``sniffle:/dev/ttyXXXX`` (e.g. ``sniffle:/dev/ttyACM0``) The following capabilities are actually supported : +-------------------------------------------+----------------+ | Capability | Available ? | +===========================================+================+ | SCANNING | yes | +-------------------------------------------+----------------+ | ADVERTISING | yes | +-------------------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-------------------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | yes | +-------------------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-------------------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-------------------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-------------------------------------------+----------------+ | INJECTING | no | +-------------------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-------------------------------------------+----------------+ | HIJACKING_MASTER | no | +-------------------------------------------+----------------+ | HIJACKING_SLAVE | no | +-------------------------------------------+----------------+ | INITIATING_CONNECTION | yes | +-------------------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-------------------------------------------+----------------+ | COMMUNICATING_AS_MASTER | yes | +-------------------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-------------------------------------------+----------------+ | HCI_MONITORING | no | +-------------------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | getFirmwareVersion | `mirage.libs.ble_utils.sniffle.SniffleDevice.getFirmwareVersion `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.sniffle.SniffleDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setCRCChecking | `mirage.libs.ble_utils.sniffle.SniffleDevice.setCRCChecking `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setChannel | `mirage.libs.ble_utils.sniffle.SniffleDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.ble_utils.sniffle.SniffleDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getConnections | `mirage.libs.ble_utils.sniffle.SniffleDevice.getConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | switchConnection | `mirage.libs.ble_utils.sniffle.SniffleDevice.switchConnection `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnection | `mirage.libs.ble_utils.sniffle.SniffleDevice.getCurrentConnection `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentHandle | `mirage.libs.ble_utils.sniffle.SniffleDevice.getCurrentHandle `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.ble_utils.sniffle.SniffleDevice.isConnected `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | updateConnectionParameters | `mirage.libs.ble_utils.sniffle.SniffleDevice.updateConnectionParameters `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAddress | `mirage.libs.ble_utils.sniffle.SniffleDevice.setAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddress | `mirage.libs.ble_utils.sniffle.SniffleDevice.getAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAdvertising | `mirage.libs.ble_utils.sniffle.SniffleDevice.setAdvertising `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAdvertisingParameters | `mirage.libs.ble_utils.sniffle.SniffleDevice.setAdvertisingParameters `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanningParameters | `mirage.libs.ble_utils.sniffle.SniffleDevice.setScanningParameters `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffNewConnections | `mirage.libs.ble_utils.sniffle.SniffleDevice.sniffNewConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.sniffle.SniffleDevice.sniffAdvertisements `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setSweepingMode | `mirage.libs.ble_utils.sniffle.SniffleDevice.setSweepingMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble_utils.sniffle.SniffleDevice.setScan `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanInterval | `mirage.libs.ble_utils.sniffle.SniffleDevice.setScanInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isSynchronized | `mirage.libs.ble_utils.sniffle.SniffleDevice.isSynchronized `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAccessAddress | `mirage.libs.ble_utils.sniffle.SniffleDevice.getAccessAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCrcInit | `mirage.libs.ble_utils.sniffle.SniffleDevice.getCrcInit `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannelMap | `mirage.libs.ble_utils.sniffle.SniffleDevice.getChannelMap `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopInterval | `mirage.libs.ble_utils.sniffle.SniffleDevice.getHopInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopIncrement | `mirage.libs.ble_utils.sniffle.SniffleDevice.getHopIncrement `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ButteRFly Device ############### **Class :** ``mirage.libs.ble_utils.butterfly.BLEButterflyDevice`` .. image:: butterfly.jpg This device allows to communicate with a ButteRFly Device in order to interact with Bluetooth Low Energy protocol. A ButteRFly Device is a nRF52840 dongle embedding ButteRFly firmware, you can find instructions to flash the corresponding firmware `here `_ . This device is needed to perform *InjectaBLE* attacks, such as packet injection into an established connection, slave or master hijacking, Man-in-the-Middle. The corresponding interfaces are : ``butterflyX`` (e.g. "butterfly0") The following capabilities are actually supported : +-------------------------------------------+----------------+ | Capability | Available ? | +===========================================+================+ | SCANNING | yes | +-------------------------------------------+----------------+ | ADVERTISING | no | +-------------------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-------------------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | yes | +-------------------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-------------------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-------------------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-------------------------------------------+----------------+ | INJECTING | yes | +-------------------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | yes | +-------------------------------------------+----------------+ | HIJACKING_MASTER | yes | +-------------------------------------------+----------------+ | HIJACKING_SLAVE | yes | +-------------------------------------------+----------------+ | INITIATING_CONNECTION | no | +-------------------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-------------------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-------------------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-------------------------------------------+----------------+ | HCI_MONITORING | no | +-------------------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+==============================================================================================================================================================================================+ | getFirmwareVersion | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getFirmwareVersion `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getDeviceIndex `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getController | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getController `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffNewConnections | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.sniffNewConnections `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isSynchronized | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.isSynchronized `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.sniffAdvertisements `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAccessAddress | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getAccessAddress `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCrcInit | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getCrcInit `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannelMap | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getChannelMap `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopInterval | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getHopInterval `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopIncrement | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getHopIncrement `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setChannel | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.setChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.setScan `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanInterval | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.setScanInterval `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | attachSubDevice | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.attachSubDevice `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | detachSubDevice | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.detachSubDevice `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setMitm | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.setMitm `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setHijacking | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.setHijacking `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSubInterfaces | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getSubInterfaces `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getConnections | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getConnections `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | switchConnection | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.switchConnection `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnection | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.getCurrentConnection `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.ble_utils.butterfly.BLEButterflyDevice.isConnected `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ HackRF Device ############## **Class :** ``mirage.libs.ble_utils.hackrf.BLEHackRFDevice`` .. image:: hackrf.jpg This device allows to communicate with a HackRF Device in order to interact with Bluetooth Low Energy protocol. HackRF support is **experimental**, the demodulator is slow and it can only deal with advertisements. The corresponding interfaces are : ``hackrfX`` (e.g. "hackrf0") The following capabilities are actually supported : +-------------------------------------------+----------------+ | Capability | Available ? | +===========================================+================+ | SCANNING | yes | +-------------------------------------------+----------------+ | ADVERTISING | yes | +-------------------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-------------------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | no | +-------------------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-------------------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-------------------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-------------------------------------------+----------------+ | INJECTING | no | +-------------------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-------------------------------------------+----------------+ | HIJACKING_MASTER | no | +-------------------------------------------+----------------+ | HIJACKING_SLAVE | no | +-------------------------------------------+----------------+ | INITIATING_CONNECTION | no | +-------------------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-------------------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-------------------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-------------------------------------------+----------------+ | HCI_MONITORING | no | +-------------------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+==============================================================================================================================================================================================+ | setChannel | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.isConnected `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAddress | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setAddress `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddress | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getAddress `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.sniffAdvertisements `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAdvertising | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setAdvertising `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanningParameters | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setScanningParameters `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAdvertisingParameters | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setAdvertisingParameters `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScan | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setScan `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setScanInterval | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.setScanInterval `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getMode `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getFirmwareVersion | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getFirmwareVersion `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getDeviceIndex `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSerial | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getSerial `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAPIVersion | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getAPIVersion `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getBoardName | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getBoardName `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getBoardID | `mirage.libs.ble_utils.hackrf.BLEHackRFDevice.getBoardID `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ADB Device ########### **Class :** ``mirage.libs.ble_utils.adb.ADBDevice`` This device allows to communicate with an Android Device using **adb** in order to monitor Bluetooth Low Energy HCI packets. The corresponding interfaces are : ``adbX`` (e.g. "adb0") The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | no | +-----------------------------------+----------------+ | ADVERTISING | no | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | no | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | HIJACKING_MASTER | no | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | no | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-----------------------------------+----------------+ | HCI_MONITORING | yes | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | getConnections | `mirage.libs.ble_utils.adb.ADBDevice.getConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | switchConnection | `mirage.libs.ble_utils.adb.ADBDevice.switchConnection `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnection | `mirage.libs.ble_utils.adb.ADBDevice.getCurrentConnection `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddressByHandle | `mirage.libs.ble_utils.adb.ADBDevice.getAddressByHandle `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentHandle | `mirage.libs.ble_utils.adb.ADBDevice.getCurrentHandle `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnectionMode | `mirage.libs.ble_utils.adb.ADBDevice.getCurrentConnectionMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.ble_utils.adb.ADBDevice.isConnected `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSnoopFileLocation | `mirage.libs.ble_utils.adb.ADBDevice.getSnoopFileLocation `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSnoopFileSize | `mirage.libs.ble_utils.adb.ADBDevice.getSnoopFileSize `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSerial | `mirage.libs.ble_utils.adb.ADBDevice.getSerial `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.adb.ADBDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. warning:: - You must install a recent version of **adb** in order to monitor a smartphone. - The full path to the binary **adb** should be present in the *PATH* environment variable. - You should enable the *Developper mode*, *USB Debugging* and *Bluetooth logging* on your smartphone. If you don't know how to configure your smartphone, please follow the instructions presented `here `_. The detailed API is available `here `_ . HCIDump ######## **Class :** ``mirage.libs.ble_utils.hcidump.BLEHcidumpDevice`` This device allows to monitor an HCI interface using **hcidump**. The corresponding interfaces are : ``hcidumpX`` (e.g. "hcidump0" for monitoring the interface "hci0"). The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | no | +-----------------------------------+----------------+ | ADVERTISING | no | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | no | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | HIJACKING_MASTER | no | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | no | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-----------------------------------+----------------+ | HCI_MONITORING | yes | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | getConnections | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | switchConnection | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.switchConnection `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnection | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getCurrentConnection `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddressByHandle | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getAddressByHandle `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentHandle | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getCurrentHandle `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCurrentConnectionMode | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getCurrentConnectionMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isConnected | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.isConnected `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHCIInterface | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getHCIInterface `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ble_utils.hcidump.BLEHcidumpDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. warning:: - You must install a recent version of **hcidump** in order to monitor an HCI device. - The full path to the binary **hcidump** should be present in the *PATH* environment variable. The detailed API is available `here `_ . BLE PCAP Files ############### **Class :** ``mirage.libs.ble_utils.pcap.BLEPCAPDevice`` This device allows to communicate with a PCAP file in order to write and read Bluetooth Low Energy packets. The corresponding interfaces are : ``.pcap`` (e.g. "out.pcap") * If the file exists, the BLEPCAPDevice is in *read* mode, and the corresponding receiver is able to use it as a classic Bluetooth Low Energy sniffer. * If the file doesn't exist, the BLEPCAPDevice is in *write* mode, and the corresponding emitter is able to write packets in the file. The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | no | +-----------------------------------+----------------+ | ADVERTISING | no | +-----------------------------------+----------------+ | SNIFFING_ADVERTISEMENTS | yes | +-----------------------------------+----------------+ | SNIFFING_NEW_CONNECTION | yes | +-----------------------------------+----------------+ | SNIFFING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | JAMMING_CONNECTIONS | no | +-----------------------------------+----------------+ | JAMMING_ADVERTISEMENTS | no | +-----------------------------------+----------------+ | HIJACKING_MASTER | no | +-----------------------------------+----------------+ | HIJACKING_SLAVE | no | +-----------------------------------+----------------+ | INJECTING | no | +-----------------------------------+----------------+ | MITMING_EXISTING_CONNECTION | no | +-----------------------------------+----------------+ | INITIATING_CONNECTION | no | +-----------------------------------+----------------+ | RECEIVING_CONNECTION | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_MASTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_SLAVE | no | +-----------------------------------+----------------+ | HCI_MONITORING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | sniffNewConnections | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.sniffNewConnections `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sniffAdvertisements | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.sniffAdvertisements `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAccessAddress | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.getAccessAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getCrcInit | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.getCrcInit `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannelMap | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.getChannelMap `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopInterval | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.getHopInterval `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getHopIncrement | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.getHopIncrement `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isSynchronized | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.isSynchronized `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.ble_utils.pcap.BLEPCAPDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. warning:: This PCAP Device uses the DLT 256, and can be used to read or write some Link Layer packets. It is not compatible with a PCAP file containing HCI frames. The detailed API is available `here `_ . Enhanced ShockBurst Devices ---------------------------- ESB RFStorm Device ################### **Class :** ``mirage.libs.esb_utils.rfstorm.ESBRFStormDevice`` .. image:: rfstorm.jpg This device allows to interact with a NRF24-based device embedding the `RFStorm firmware `_ (also called nrf-research-firmware). This firmware can be installed on a *Crazy Radio PA* or some *Logitech Unifying dongle*, please refer to the documentation provided by Bastille Research for more details. The corresponding interfaces are : ``rfstormX`` (e.g. "rfstorm0"). The following capabilities are currently supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | INJECTING | yes | +-----------------------------------+----------------+ | SNIFFING_NORMAL | yes | +-----------------------------------+----------------+ | SNIFFING_PROMISCUOUS | yes | +-----------------------------------+----------------+ | SNIFFING_GENERIC_PROMISCUOUS | yes | +-----------------------------------+----------------+ | ACTIVE_SCANNING | yes | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterPromiscuousMode | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.enterPromiscuousMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterGenericPromiscuousMode | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.enterGenericPromiscuousMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterSnifferMode | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.enterSnifferMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddress | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.getAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAddress | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.setAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | isAutoAckEnabled | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.isAutoAckEnabled `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enableAutoAck | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.enableAutoAck `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | disableAutoAck | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.disableAutoAck `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | scan | `mirage.libs.esb_utils.rfstorm.ESBRFStormDevice.scan `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . ESB PCAP Files ############### **Class :** ``mirage.libs.ble_utils.pcap.ESBPCAPDevice`` This device allows to communicate with a PCAP file in order to write and read Enhanced ShockBurst packets. The corresponding interfaces are : ``.pcap`` (e.g. "out.pcap") * If the file exists, the ESBPCAPDevice is in *read* mode, and the corresponding receiver is able to use it as a classic Enhanced ShockBurst sniffer. * If the file doesn't exist, the ESBPCAPDevice is in *write* mode, and the corresponding emitter is able to write packets in the file. The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | INJECTING | yes | +-----------------------------------+----------------+ | SNIFFING_NORMAL | yes | +-----------------------------------+----------------+ | SNIFFING_PROMISCUOUS | yes | +-----------------------------------+----------------+ | SNIFFING_GENERIC_PROMISCUOUS | no | +-----------------------------------+----------------+ | ACTIVE_SCANNING | yes | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterPromiscuousMode | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.enterPromiscuousMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterSnifferMode | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.enterSnifferMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | generateStream | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.generateStream `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | scan | `mirage.libs.esb_utils.pcap.ESBPCAPDevice.scan `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. warning:: This PCAP Device uses the DLT 148. The detailed API is available `here `_ . Mosart Devices --------------- Mosart RFStorm Device ###################### **Class :** ``mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice`` .. image:: rfstorm.jpg This device allows to interact with a NRF24-based device embedding the `RFStorm firmware `_ (also called nrf-research-firmware). This firmware can be installed on a *Crazy Radio PA* or some *Logitech Unifying dongle*, please refer to the documentation provided by Bastille Research for more details. The corresponding interfaces are : ``rfstormX`` (e.g. "rfstorm0"). The following capabilities are currently supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SNIFFING_NORMAL | yes | +-----------------------------------+----------------+ | SNIFFING_PROMISCUOUS | yes | +-----------------------------------+----------------+ | INJECTING | yes | +-----------------------------------+----------------+ | INJECTING_SYNC | yes | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterPromiscuousMode | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.enterPromiscuousMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterSnifferMode | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.enterSnifferMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddress | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.getAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setAddress | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.setAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enableDonglePackets | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.enableDonglePackets `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | disableDonglePackets | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.disableDonglePackets `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enableSync | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.enableSync `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | disableSync | `mirage.libs.mosart_utils.rfstorm.MosartRFStormDevice.disableSync `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . Mosart PCAP Files ################## **Class :** ``mirage.libs.mosart_utils.pcap.MosartPCAPDevice`` This device allows to communicate with a PCAP file in order to write and read Mosart packets. The corresponding interfaces are : ``.pcap`` (e.g. "out.pcap") * If the file exists, the MosartPCAPDevice is in *read* mode, and the corresponding receiver is able to use it as a classic Mosart sniffer. * If the file doesn't exist, the MosartPCAPDevice is in *write* mode, and the corresponding emitter is able to write packets in the file. The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SNIFFING_NORMAL | yes | +-----------------------------------+----------------+ | SNIFFING_PROMISCUOUS | yes | +-----------------------------------+----------------+ | INJECTING | yes | +-----------------------------------+----------------+ | INJECTING_SYNC | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterPromiscuousMode | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.enterPromiscuousMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enterSnifferMode | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.enterSnifferMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | generateStream | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.generateStream `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enableDonglePackets | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.enableDonglePackets `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | disableDonglePackets | `mirage.libs.mosart_utils.pcap.MosartPCAPDevice.disableDonglePackets `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. warning:: This PCAP Device uses the DLT 149. The detailed API is available `here `_ . WiFi Devices ------------- WiFi Device ############ **Class :** ``mirage.libs.wifi.WifiDevice`` .. image:: wifi.jpg This device allows to communicate with a WiFi Device. The corresponding interfaces are : ``wlanX`` (e.g. "wlanX") The following capabilities are currently supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SCANNING | yes | +-----------------------------------+----------------+ | MONITORING | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_ACCESS_POINT | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_STATION | yes | +-----------------------------------+----------------+ | JAMMING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.wifi.WifiDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.wifi.WifiDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setFrequency | `mirage.libs.wifi.WifiDevice.setFrequency `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getFrequency | `mirage.libs.wifi.WifiDevice.getFrequency `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setMonitorMode | `mirage.libs.wifi.WifiDevice.setMonitorMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAddress | `mirage.libs.wifi.WifiDevice.getAddress `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | setMode | `mirage.libs.wifi.WifiDevice.setMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.wifi.WifiDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . Zigbee Devices --------------- RZUSBStick Device ################## **Class :** ``mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice`` .. image:: rzusbstick.jpg This device allows to communicate with a Raven RZUSBStick Device. The corresponding interfaces are : ``rzusbstickX`` (e.g. "rzusbstickX") The following capabilities are currently supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SNIFFING | yes | +-----------------------------------+----------------+ | INJECTING | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_COORDINATOR | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_ROUTER | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_END_DEVICE | yes | +-----------------------------------+----------------+ | JAMMING | yes | +-----------------------------------+----------------+ .. warning:: Some features provided by this hardware seems unstable : * A small amount of time is required to switch from TX to RX, so some frames may be missing * The jamming feature seems to send a very short signal which is not strong and long enough to jam a Zigbee channel I'm not sure if the problem is linked to my hardware or if the Killerbee firmare is buggy. The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | enableJamming | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.enableJamming `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | disableJamming | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.disableJamming `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getFirmwareVersion | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.getFirmwareVersion `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSerial | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.getSerial `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.zigbee_utils.rzusbstick.RZUSBStickDevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . HackRF Device ############## **Class :** ``mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice`` .. image:: hackrf.jpg This device allows to communicate with a HackRF in order to interact with the Zigbee protocol. HackRF support is **experimental**, the demodulator is slow ! The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SNIFFING | yes | +-----------------------------------+----------------+ | INJECTING | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_COORDINATOR | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_ROUTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_END_DEVICE | no | +-----------------------------------+----------------+ | JAMMING | no | +-----------------------------------+----------------+ The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+==============================================================================================================================================================================================+ | setChannel | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.setChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getChannel `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getFirmwareVersion | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getFirmwareVersion `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getDeviceIndex `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSerial | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getSerial `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getAPIVersion | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getAPIVersion `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getBoardName | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getBoardName `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getBoardID | `mirage.libs.zigbee_utils.hackrf.ZigbeeHackRFDevice.getBoardID `_ | +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Zigbee PCAP Files ################## **Class :** ``mirage.libs.zigbee_utils.pcap.ZigbeePCAPDevice`` This device allows to communicate with a PCAP file in order to write and read Zigbee packets. The corresponding interfaces are : ``.pcap`` (e.g. "out.pcap") * If the file exists, the ZigbeePCAPDevice is in *read* mode, and the corresponding receiver is able to use it as a classic Zigbee sniffer. * If the file doesn't exist, the ZigbeePCAPDevice is in *write* mode, and the corresponding emitter is able to write packets in the file. The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SNIFFING | yes | +-----------------------------------+----------------+ | INJECTING | yes | +-----------------------------------+----------------+ | COMMUNICATING_AS_COORDINATOR | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_ROUTER | no | +-----------------------------------+----------------+ | COMMUNICATING_AS_END_DEVICE | no | +-----------------------------------+----------------+ | JAMMING | no | +-----------------------------------+----------------+ .. warning:: This PCAP Device uses the DLT 195. The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setChannel | `mirage.libs.zigbee_utils.pcap.ZigbeePCAPDevice.setChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getChannel | `mirage.libs.zigbee_utils.pcap.ZigbeePCAPDevice.getChannel `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | generateStream | `mirage.libs.zigbee_utils.pcap.ZigbeePCAPDevice.generateStream `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getMode | `mirage.libs.zigbee_utils.pcap.ZigbeePCAPDevice.getMode `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ . Infrared Radiations Devices ---------------------------- IRMA Device ################## **Class :** ``mirage.libs.ir_utils.irma.IRMADevice`` .. image:: irma_device.png This device allows to communicate with an IRMA device in order to sniff and inject IR signals. The corresponding interfaces are : ``irmaX`` (e.g. "irma0"). The following capabilities are actually supported : +-----------------------------------+----------------+ | Capability | Available ? | +===================================+================+ | SNIFFING | yes | +-----------------------------------+----------------+ | INJECTING | yes | +-----------------------------------+----------------+ | CHANGING_FREQUENCY | yes | +-----------------------------------+----------------+ .. warning:: This device has been created in order to interact with IR signals using Mirage. It requires an Arduino Uno or Mini, and the electronic schematic and firmware source code are released as open source documents. You can download the resources needed to build this device `here `_. The following methods are shared and can be used directly from the corresponding Emitter and/or Receiver : +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Shared Methods | Corresponding documentation | +===============================+=========================================================================================================================================================================================+ | setFrequency | `mirage.libs.ir_utils.irma.IRMADevice.setFrequency `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getFrequency | `mirage.libs.ir_utils.irma.IRMADevice.getFrequency `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | waitData | `mirage.libs.ir_utils.irma.IRMADevice.waitData `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | reset | `mirage.libs.ir_utils.irma.IRMADevice.reset `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getSerialPort | `mirage.libs.ir_utils.irma.IRMADevice.getSerialPort `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | getDeviceIndex | `mirage.libs.ir_utils.irma.IRMADevice.getDeviceIndex `_ | +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The detailed API is available `here `_ .