Создание простого пассивного сниффера на Python

python icon

Сниффер — это программный инструмент для перехвата сетевого трафика, который используется системными администраторами и хакерами. В этой статье мы напишем простой сниффер для перехвата трафика на Python.

Еще по теме: Как установить пакеты Python без интернета

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

Снифферы делятся на две основные категории:

  • Активные снифферы —  анализаторы трафика, которые взаимодействуют с устройствами.
  • Пассивные снифферы — собирают дополнительные данные.

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

Как работают анализаторы пакетов

Прежде чем мы пойдем дальше, важно понимать работу сетей. Для этого можно представить сеть, как ряд взаимосвязанных узлов. Каждый узел представляет собой одно устройство (смартфон, ноутбук, настольный ПК и т.д.) подключенное к Интернету.

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

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

Создание сниффера для анализа трафика на Python

В этом руководстве рассмотрим создание пассивного сниффера.

Итак, откройте VS Code и создайте файл main.py. Начнем с трех операций импорта, которые помогут открыть сокет для захвата сетевых данных и распаковки отформатированных данных. Этот импорт выглядит следующим образом:

Далее откроем сокет и возьмем переменные длиной до 2048 бит. В функцию сокета нужно будет передать три переменные:

  1. Первая указывает интерфейс пакета Windows (AF_INET).
  2. Вторая указывает, что мы открываем необработанный сокет.
  3. Третья указывает интересующий протокол, который в данном случае является протоколом IP.

Для получения пакетов размером 2048 в бесконечном цикле будем использовать функцию recvfrom. Код выглядит следующим образом:

Теперь, нужно вывести отформатированные данные пакета. Для этого будем использовать импорт struct и binascii. Учитывая, что в этом примере нас интересует IP-адрес источника и получателя, нам нужна только первая строка в пакете. Возьмем первые 16 байт этого заголовка и распечатаем их следующим образом:

Запуск этого кода от имени администратора (или использование sudo, если вы работаете в Linux) должен отобразить все пакеты в терминале.

Это пример простого пассивного сниффера на Python.

РЕКОМЕНДУЕМ:

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован.