[Перевод] Как сделать сканер Bluetooth-устройств на Python

Освойте сканирование Bluetooth-устройств с помощью Python: Краткое руководство по использованию PyBluez для обнаружения и анализа близлежащих Bluetooth-устройств, необходимое для кибербезопасности и этичного взлома.

915157bc591f12caf37d26c977318e7e.png

В этом уроке мы познакомимся с увлекательным миром обнаружения Bluetooth-устройств с помощью Python. Мы сосредоточимся на написании скрипта, который сканирует близлежащие Bluetooth-устройства и извлекает ценную информацию о них. Этот навык не только полезен для понимания технологии Bluetooth, но и имеет практическое применение в кибербезопасности и этическом взломе.

Bluetooth, будучи широко используемым протоколом беспроводной связи, представляет как возможности, так и проблемы для энтузиастов безопасности. Научившись программно сканировать и собирать информацию о близлежащих устройствах, вы получите фундаментальный набор навыков, который можно применять в различных сценариях, от выявления потенциальных рисков безопасности до проведения этических хакерских экспертиз.

Значение для кибербезопасности и этического взлома

Понимание обнаружения устройств Bluetooth — важнейший аспект сетевого взаимодействия, этического взлома и кибербезопасности в целом. Этот сценарий служит основой для изучения последствий технологии Bluetooth для безопасности.

Этичные хакеры часто используют подобные методы для выявления уязвимых устройств, оценки уровня безопасности и проведения тестирования на проникновение. Сканируя активные Bluetooth-устройства и получая такие сведения, как имена устройств, классы и даже MAC-адреса (Media Access Control), специалисты по безопасности могут определить потенциальные цели для дальнейшего анализа.

Кроме того, эти знания необходимы для распознавания и устранения рисков безопасности, связанных с Bluetooth, таких как несанкционированные подключения устройств и уязвимости, которыми могут воспользоваться злоумышленники. 

Научившись сканировать устройства Bluetooth, хакеры могут осуществлять такие вредоносные действия, как выдача себя за другое устройство, атаки типа «человек посередине» и уязвимости профиля Bluetooth. Эти знания могут привести к несанкционированному доступу, перехвату данных или даже атакам типа «отказ в обслуживании», если не принять надлежащих мер безопасности.

Давайте посмотрим, как реализовать это на языке Python. Мы будем использовать модуль PyBluez. PyBluez — это модуль Python, который предоставляет функциональность Bluetooth, позволяя разработчикам реализовывать соединения Bluetooth и управлять устройствами с поддержкой Bluetooth. Мы также будем писать эту программу на Python 3.

Установите PyBluez, выполнив следующую команду в cmd/Terminal:

$ pip install pybluez2

Важно отметить, что успешность выполнения предложенного кода может отличаться на виртуальных машинах из-за различий в совместимости с Bluetooth. Для более надежной оценки рекомендуется протестировать код на физической машине с нативной поддержкой Bluetooth.

Теперь перейдем к коду. Создайте файл Python, назовите его осмысленно (например, bluetooth_scanner.py) и следуйте дальше:

# Import bluetooth from the PyBluez module.
import bluetooth

def scan_bluetooth_devices():
    try:
        # Discover Bluetooth devices with names and classes.
        discovered_devices = bluetooth.discover_devices(lookup_names=True, lookup_class=True)
        # Display information about the scanning process.
        print('[!] Scanning for active devices...')
        print(f"[!] Found {len(discovered_devices)} Devices\n")
        # Iterate through discovered devices and print their details.
        for addr, name, device_class in discovered_devices:
            print(f'[+] Name: {name}')
            print(f'[+] Address: {addr}')
            print(f'[+] Device Class: {device_class}\n')
    except Exception as e:
        # Handle and display any exceptions that occur during device discovery
        print(f"[ERROR] An error occurred: {e}")

# Call the Bluetooth device scanning function when the script is run
scan_bluetooth_devices()

Этот Python-скрипт использует модуль bluetooth для сканирования близлежащих Bluetooth-устройств и получения информации о них.

Функция scan_bluetooth_devices () пытается обнаружить Bluetooth-устройства, используя функцию discover_devices () из модуля bluetooth с параметрами lookup_names=True и lookup_class=True для получения имен и классов устройств.

Затем скрипт выводит сообщение о начале процесса сканирования и количестве найденных устройств. Он просматривает список найденных устройств, извлекая и отображая такие сведения, как имя устройства, адрес и класс устройства. Любые исключения, которые могут возникнуть в процессе обнаружения устройств, перехватываются и обрабатываются, а для информирования пользователя выводится сообщение об ошибке. Наконец, при запуске скрипта вызывается функция для выполнения сканирования Bluetooth-устройств.

Результат:

959a805f1832cafe0fcfd908f9b2078d.jpeg

Результат показывает доступные устройства Bluetooth вокруг нас, включая их имена, MAC-адреса и классы устройств.

Получая MAC-адреса из результатов обнаружения Bluetooth-устройств, хакеры могут манипулировать MAC-адресами своих устройств или подменять их, выдавая себя за легитимные устройства. Это может привести к несанкционированному доступу, перехвату данных и нарушению безопасности, что подчеркивает важность применения надежных мер безопасности для предотвращения подмены MAC-адресов.

Из нашего результата следует, что класс устройства Bluetooth 7995916 может быть интерпретирован следующим образом:

Теперь разделим эту бинарную последовательность на основные, второстепенные и служебные классы:

  1. Service Class (биты 0–1):  Последние два бита двоичного представления равны 00, что означает, что класс обслуживания равен 0 в десятичной системе.

  2. Minor Device Class (биты 2–7):  Следующие шесть битов — 101100, что в десятичном представлении равно 44.

  3. Major Device Class (биты 8–12):  Следующие пять битов — 10100, что в десятичном представлении равно 20.

Итак, интерпретация класса устройств 7995916 выглядит следующим образом:

  • Major Device Class: 20

  • Minor Device Class: 44

  • Service Class: 0

Эти числовые значения могут быть интерпретированы с помощью спецификаций Bluetooth. Согласно спецификации Bluetooth Core Specification:

Устройство 1 (Major Device Class: 20, Minor Device Class: 44, Service Class: 0):

  • Major Device Class (20):  Компьютер

  • Minor Device Class (44):  Рабочая станция

  • Service Class (0):  Нет определенного класса обслуживания

Таким образом, DESKTOP-VR0S64Q — это компьютер, а именно рабочая станция.

Устройство 2 (Major Device Class: 26, Minor Device Class: 4, Service Class: 0):

  • Major Device Class (26):  Телефон

  • Minor Device Class (4):  Смартфон

  • Service Class (0):  Нет определенного класса обслуживания

Таким образом, Ghost — это смартфон. 

Оба вывода на самом деле верны. Эти интерпретации основаны на документах спецификации ядра Bluetooth, предоставленных Bluetooth Special Interest Group. Не поленитесь ознакомиться с ними здесь. Даже если хакеры не до конца понимают концепцию класса, с помощью имени устройства и MAC-адреса они все равно могут нанести большой ущерб.

Мы в телеграме, подпишись.

© Habrahabr.ru