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

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

Анализ сетевого трафика в реальном времени с помощью Wireshark и Tshark в Termux: фильтрация, декодирование и автоматизация

Termux — удобная среда для работы в Linux-подобном окружении на Android. Для задач сетевой диагностики и обучения часто требуется анализировать трафик в реальном времени: видеть события на уровне пакетов, применять фильтры, декодировать протоколы и автоматизировать повторяющиеся сценарии. В этом материале разберём практический подход к захвату и анализу сетевого трафика в Termux с помощью tshark (утилита из Wireshark) и, где это возможно, подготовки данных для просмотра в Wireshark.

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

Что нужно для работы в Termux

Для анализа трафика в реальном времени в Termux обычно используют комбинацию компонентов:

  • tshark — командная строка из Wireshark для захвата, фильтрации и экспорта данных.
  • pcap-файлы — формат для последующего просмотра в Wireshark (на ПК) или для парсинга.
  • Фильтры — выражения Wireshark/BPF-типа (в зависимости от контекста), позволяющие отсеивать лишнее.
  • Скрипты — для автоматизации захвата, ротации файлов, логирования и метрик.

На Android возможности захвата трафика зависят от версии ОС, прав и способа подключения (Wi‑Fi/ethernet через адаптер, VPN с локальной сетью и т.п.). Если прямой захват невозможен, часто используют захват на хосте/маршрутизаторе или локальный перехват через точки, доступные в вашей схеме.

Подготовка окружения и установка зависимостей

Начнём с обновления пакетов и установки утилит. В зависимости от доступных репозиториев пакеты могут отличаться, но общий принцип сохранится.

pkg update
pkg upgrade -y
pkg install -y tshark tcpdump wireshark-cli

Проверим, что tshark доступен:

tshark -v

Если пакет wireshark-cli не установлен или не требуется, можно оставить только tshark. В некоторых сборках названия пакетов могут быть другими — ориентируйтесь на фактически доступные варианты через менеджер пакетов Termux.

Определение сетевых интерфейсов

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

ip link show

Для уточнения можно проверить интерфейсы, которые видит tshark/tcpdump:

tshark -D

В выводе будет список интерфейсов (например, wlan0, eth0, или другие). Выберите подходящий.

Захват пакетов в реальном времени с помощью Tshark

Базовая схема захвата:

  • выбрать интерфейс;
  • задать фильтр;
  • указать формат вывода (PCAP или текст);
  • при необходимости — ограничить длительность или размер.

Пример: захват в файл PCAP на выбранном интерфейсе. Замените <INTERFACE> на реальный интерфейс из предыдущего шага.

tshark -i <INTERFACE> -w capture.pcapng

Чтобы видеть события прямо в терминале, можно выводить краткую информацию. Например, отображать только основные поля:

tshark -i <INTERFACE> -l -n -q -Y "tcp" -T fields -e frame.time -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e tcp.flags

Ключевые параметры:

  • -l — line-buffering, удобнее для «живого» вывода;
  • -n — не выполнять DNS/имена (быстрее и стабильнее);
  • -Y — дисплейный фильтр (как в Wireshark) для «фильтрации при отображении»;
  • -T fields и -e — выбор полей в табличном/текстовом виде.

Фильтрация: что использовать и как мыслить

Wireshark/Tshark поддерживает фильтры двух типов:

  • Дисплейные фильтры (параметр -Y) — выбирают пакеты, которые попадут в вывод/обработку.
  • Фильтры захвата (например, BPF, часто задаётся через -f), которые работают на уровне захвата и могут снизить нагрузку.

Практика:

  • Если вам нужно ограничить поток «на входе» — используйте фильтр захвата.
  • Если нужно выбрать пакеты по содержимому после декодирования — используйте дисплейный фильтр.

Примеры дисплейных фильтров:

# только DNS
tshark -i <INTERFACE> -l -n -Y "udp.port == 53" -T fields -e frame.time -e ip.src -e dns.qry.name -e dns.a

# только HTTP (часто зависит от разметки; для TLS не сработает как ожидание)
tshark -i <INTERFACE> -l -n -Y "http" -T fields -e frame.time -e ip.src -e ip.dst -e http.host -e http.request.uri

# только TLS ClientHello (обычно для анализа рукопожатия)
tshark -i <INTERFACE> -l -n -Y "tls.handshake.type == 1" -T fields -e frame.time -e ip.src -e ip.dst -e tls.handshake.extensions_server_name

Пример ограничения на уровне отображения/вывода для TCP-соединений к конкретному адресу:

tshark -i <INTERFACE> -l -n -Y "ip.dst == 192.168.1.10 and tcp" -T fields -e frame.time -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e tcp.flags

Если в вашей задаче критична производительность, рассмотрите фильтр захвата (BPF). Синтаксис может отличаться, но принцип такой:

# Пример: ограничить захват трафиком TCP (переменная часть зависит от интерфейса/прав)
tshark -i <INTERFACE> -f "tcp" -w capture_tcp.pcapng

Декодирование протоколов: что реально можно увидеть

tshark декодирует протоколы так же, как Wireshark. Это означает, что вы можете получить осмысленные поля — от DNS-запросов до TLS-метаданных (в пределах того, что доступно без расшифровки содержимого).

DNS: быстрый контроль доменов

Для анализа DNS удобно выводить запросы и ответы:

tshark -i <INTERFACE> -l -n -Y "udp.port == 53 or tcp.port == 53" -T fields -e frame.time -e ip.src -e dns.qry.name -e dns.flags.response

А для анализа конкретного домена:

tshark -i <INTERFACE> -l -n -Y "dns.qry.name contains "example.com"" -T fields -e frame.time -e ip.src -e dns.qry.name -e dns.a -e dns.cname

HTTP/HTTPS: различайте «видимое» и «скрытое»

Для HTTP (незашифрованного) поля обычно доступны. Для HTTPS (TLS) содержимое HTTP обычно зашифровано, поэтому вы увидите минимум: SNI, версии TLS, сертификаты/рукопожатие — но не URL/тело запроса, если нет ключей для расшифровки.

Проверка TLS-рукопожатия и SNI:

tshark -i <INTERFACE> -l -n -Y "tls.handshake.type == 1" -T fields -e frame.time -e ip.src -e tls.handshake.extensions_server_name -e tls.handshake.version -e tls.handshake.extensions_alpn

Если ваша цель — анализ конкретного хоста, фильтруйте по SNI (если он присутствует):

tshark -i <INTERFACE> -l -n -Y "tls.handshake.extensions_server_name == "www.example.com"" -w tls_example.pcapng

Экспорт и последующий разбор в Wireshark

Для глубокого анализа (графики, деревья протоколов, следование TCP-потокам) удобнее сохранять захват в PCAPNG и открывать в Wireshark на ПК.

Сохранение:

tshark -i <INTERFACE> -f "tcp or udp" -w session.pcapng

Далее передайте session.pcapng на компьютер и откройте в Wireshark.

Если хотите «сразу» ограничить объем, комбинируйте захват и фильтры:

tshark -i <INTERFACE> -Y "dns or tls.handshake.type == 1" -w meta_traffic.pcapng

Автоматизация: ротирование файлов, тайминг и логирование

Когда требуется анализ «часами», полезна автоматизация: делить захват на сегменты (например, каждые 10 минут), сохранять по времени, вести лог и включать понятные именования файлов.

Пример скрипта для сегментированного захвата (10 минут на файл). Сохраните как, например, capture_loop.sh.

#!/data/data/com.termux/files/usr/bin/bash
INTERFACE="<INTERFACE>"
OUTDIR="$HOME/pcap"
mkdir -p "$OUTDIR"

DURATION_SEC=600

while true; do
  TS=$(date +"%Y%m%d_%H%M%S")
  OUTFILE="$OUTDIR/capture_$TS.pcapng"
  echo "Starting capture: $OUTFILE"
  tshark -i "$INTERFACE" -n -w "$OUTFILE" -a duration:"$DURATION_SEC"
  echo "Finished: $OUTFILE"
done

Запуск:

chmod +x capture_loop.sh
./capture_loop.sh

Если нужно фильтровать трафик перед записью, добавьте -Y к вызову tshark. Например, только TCP:

tshark -i "$INTERFACE" -n -Y "tcp" -w "$OUTFILE" -a duration:"$DURATION_SEC"

Потоковый анализ и вывод в CSV для дальнейшей обработки

Иногда удобнее сразу выгружать поля в CSV-вид (хотя это не всегда «настоящий» CSV с кавычками, но для дальнейшей обработки часто достаточно).

Пример: писать время, IP-источник, IP-назначение, порт назначения и TCP-флаги:

tshark -i <INTERFACE> -l -n -Y "tcp" -T fields -E separator=, -e frame.time -e ip.src -e ip.dst -e tcp.dstport -e tcp.flags

Для записи в файл:

tshark -i <INTERFACE> -l -n -Y "tcp" -T fields -E separator=, -e frame.time -e ip.src -e ip.dst -e tcp.dstport -e tcp.flags > tcp_log.csv

Вариант с локальной сетью через VPN (только для корректной схемы маршрутизации)

В некоторых сценариях удобнее организовать локальную сеть и маршрутизацию трафика через VPN-соединение, чтобы обеспечить доступ к нужной точке захвата или корректный путь пакетов в вашей лабораторной конфигурации. В таком случае создавайте локальную сеть (а не используйте для обхода блокировок) и используйте соответствующий интерфейс в tshark (например, интерфейс VPN-туннеля, который появится в ip link show или tshark -D).

Схема будет аналогичной: выбираете интерфейс VPN и применяете фильтры -Y / -f.

Частые проблемы и как их диагностировать

  • tshark не видит интерфейс: проверьте вывод tshark -D и права доступа. Убедитесь, что выбран корректный интерфейс.
  • Нет декодирования DNS/TLS: проверьте, что захват содержит соответствующие пакеты (например, UDP/TCP порты), и что трафик действительно проходит через выбранную точку.
  • Большая нагрузка и «фризы»: используйте фильтры -f (на захват) и уменьшайте количество полей в -T fields.
  • Сложно анализировать TLS-данные: помните, что без ключей расшифровки HTTP содержимое обычно недоступно. Фокусируйтесь на рукопожатии, SNI, ALPN, сертификатах.

Рекомендованный рабочий процесс

Для большинства задач удобно выстроить цикл:

  1. Определите интерфейс: tshark -D.
  2. Сначала проверьте малый объем с живым выводом полей (через -l -T fields и -Y).
  3. Сделайте захват в PCAPNG с нужными фильтрами.
  4. Откройте PCAPNG в Wireshark на ПК и примените дополнительные фильтры.
  5. Если задача повторяемая — автоматизируйте скриптом сегментированный захват и логирование.

Заключение

Termux в связке с tshark позволяет эффективно анализировать сетевой трафик в реальном времени: задавать фильтрацию на уровне отображения, извлекать декодированные поля DNS/TLS и других протоколов, сохранять PCAPNG для дальнейшего исследования в Wireshark и автоматизировать повторяющиеся эксперименты сценариями. Главное — правильно выбрать интерфейс, продумать фильтры и определить, какие данные реально доступны без расшифровки.

Если вам нужна помощь с настройкой лабораторной схемы, подбором оптимальных фильтров, автоматизацией захватов и подготовкой отчётных материалов — обращайтесь в РыбинскЛАБ. Мы поможем настроить процесс анализа трафика под ваши задачи.

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

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

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

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