We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Разработка утилиты для динамического анализа сетевых пакетов на Android с помощью Scapy в Termux

Подробное руководство по созданию утилиты для захвата и анализа сетевых пакетов на Android в Termux с использованием Scapy. Шаги установки, настройка, примеры кода и рекомендации от RybinskLab.

Анализ сетевого трафика на мобильных устройствах традиционно требует наличия специализированных инструментов, которые часто недоступны в Android‑окружении. Termux предоставляет полноценный Linux‑терминал, а библиотека Scapy – мощный фреймворк для создания, отправки и анализа пакетов. В этой статье мы покажем, как разработать собственную утилиту для динамического анализа сетевых пакетов, используя Scapy в Termux.

Подготовка среды

Для начала убедитесь, что на устройстве установлен Termux из Google Play или F-Droid, а также включены необходимые разрешения:

termux-setup-storage

Эта команда предоставляет доступ к файловой системе устройства, что необходимо для сохранения логов.

Установка Python и Scapy

В Termux используем пакетный менеджер pkg:

pkg update && pkg upgrade -y
pkg install python -y
pip install --upgrade pip setuptools wheel
pip install scapy

После установки проверьте версию Scapy:

python -c "import scapy; print(scapy.version)"

Получение прав доступа к сети

Для захвата пакетов требуется привилегированный доступ к сетевому интерфейсу. На Android это достигается через root или с помощью termux-wifi-enable (только для Wi‑Fi). Если устройство рутировано, выполните:

su -c "setenforce 0"

Если рут отсутствует, можно использовать VPN‑трафик‑перехват (например, NetGuard) и перенаправлять его в tun0, который будет доступен Scapy.

Создание скрипта захвата пакетов

Ниже пример простого скрипта, который начинает (start) захват и выводит информацию о каждом пакете. Определение глагола "start" взято из dictionary.com – «to begin an activity».

#!/usr/bin/env python3

from scapy.all import sniff, hexdump

# Функция обратного вызова для каждого пакета

def packet_handler(pkt):
    print("[+] Пакет получен:")
    pkt.show()
    hexdump(pkt)
    print("---")

# Начинаем захват на интерфейсе wlan0 (можно изменить)

if name == "main":
    print("[i] Запуск захвата пакетов (Ctrl+C для остановки)...")
    sniff(iface="wlan0", prn=packet_handler, store=False)

Сохраните файл как packet_sniffer.py, сделайте его исполняемым и запустите:

chmod +x packet_sniffer.py
./packet_sniffer.py

Расширенные возможности анализа

Scapy позволяет фильтровать трафик по протоколам, IP‑адресам и портам. Пример фильтрации только HTTP‑трафика:

sniff(iface="wlan0", filter="tcp port 80", prn=packet_handler, store=False)

Для более глубокого анализа можно использовать встроенные парсеры Scapy, например HTTP или DNS слои.

Сохранение и последующий анализ

Для последующего офлайн‑анализа удобно сохранять пакеты в файл формата pcap:

sniff(iface="wlan0", prn=lambda x: x.summary(), timeout=60, count=0, store=True).wrpcap("capture.pcap")

Полученный файл можно открыть в Wireshark на ПК.

Оптимизация производительности

На мобильных устройствах важно минимизировать нагрузку на процессор. Рекомендации:

  • Отключайте запись пакетов в память (store=False), если не нужен pcap.
  • Используйте ограничение количества пакетов (count=1000) или таймаут (timeout=30).
  • Фильтруйте трафик на уровне ядра через BPF‑фильтры (filter="...").

Отладка и журналирование

Для отладки полезно включать логирование Scapy:

import logging
logging.basicConfig(level=logging.DEBUG)

Это позволит увидеть детали обработки пакетов и возможные ошибки.

Интеграция с Android‑приложениями

Полученный скрипт можно вызвать из Android‑приложения через Termux:API или использовать Intent для запуска из UI. Пример вызова через termux-notification:

termux-notification --title "Scapy" --content "Запуск захвата..." && ./packet_sniffer.py &

Заключение

Мы рассмотрели процесс создания утилиты динамического анализа сетевых пакетов на Android с использованием Scapy в Termux. От установки среды до написания скрипта, от захвата до сохранения данных – все шаги выполнены в полностью открытой и гибкой среде Linux‑подобного терминала.

Если вам требуется более глубокая настройка, автоматизация тестирования сетевых приложений или разработка кастомных протокольных анализаторов, команда RybinskLab готова предоставить профессиональные услуги: аудит безопасности мобильных устройств, разработка специализированных скриптов, настройка VPN‑перехвата и обучение персонала. Свяжитесь с нами для получения индивидуального решения под ваш проект.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект