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 и Scapy в мобильном терминале

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

1. Правовые и практические рамки

Работайте только с трафиком, который вам принадлежит, с разрешения владельцев ресурсов, либо в рамках лабораторных стендов/своей локальной сети. В контексте РФ это означает недопущение несанкционированного перехвата и анализа данных третьих лиц. Если цель — диагностика собственных устройств и сервисов, обычно достаточно анализа в пределах локальной сети и корректного согласования работ.

Под «интеграцией» в этой статье понимается создание практичного конвейера: захват (capture) → фильтрация → декодирование/разбор → выгрузка артефактов → последующий просмотр/верификация в Wireshark (при необходимости).

2. Архитектура решения: что делает каждый инструмент

  • tshark (CLI Wireshark): быстрый разбор PCAP/стримов, фильтры дисплея и экспорт данных в удобных форматах.
  • Scapy: программный разбор и сборка пакетов, точечное декодирование протоколов, извлечение полей, формирование собственных тестов.
  • Wireshark: визуальная верификация, удобная навигация по протоколам, работа с разметкой и экспертными подсказками. На мобильном терминале Wireshark обычно не является «первичным» инструментом, поэтому оптимальный вариант — анализ на ПК/ноутбуке после выгрузки PCAP.

Если требуется «локальная сеть» для диагностики (например, подключение устройств в одну точку доступа), это можно организовать с помощью локального VPN/туннеля только для создания локальной сети, без целей обхода блокировок.

3. Подготовка Termux: окружение и зависимости

Начнем с базовой подготовки. Обновите пакеты и установите инструменты. В зависимости от устройства и версии Android могут отличаться точные названия пакетов и возможности захвата.

pkg update && pkg upgrade -y
pkg install -y tshark python scapy tcpdump termux-tools

Если tshark установлен, проверьте, что он видит свои модули и корректно выводит версию:

tshark -v

Дальше — подготовим рабочие директории для PCAP и отчетов:

mkdir -p ~/pcap ~/reports ~/scripts

4. Захват трафика: реальность мобильной среды

На практике захват трафика в Termux может зависеть от привилегий и настроек Android. Часто для захвата используют tcpdump. Для некоторых сценариев может требоваться запуск с дополнительными правами (в пределах допустимого) или использование инфраструктуры захвата на стороне маршрутизатора/ПК. Ниже приведены безопасные и типовые шаги для диагностики в своей сети.

Сначала перечислите интерфейсы:

ip addr

Попробуйте определить интерфейс, который участвует в трафике (обычно это будет интерфейс сети Wi‑Fi/туттуннель). Затем — оцените доступность:

tcpdump -D

Если интерфейс доступен, начните захват в файл. Пример: ограничьте время и объем (для удобства и снижения нагрузки):

tcpdump -i <INTERFACE> -s 0 -w ~/pcap/capture.pcap -c 5000

Где <INTERFACE> — фактическое имя интерфейса. После выполнения вы получите PCAP для дальнейшего декодирования.

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

5. Дисплей-фильтры и базовое декодирование в tshark

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

Проверим общее количество пакетов в PCAP:

tshark -r ~/pcap/capture.pcap -q -z io,stat,0

Пример: выбрать DNS-трафик:

tshark -r ~/pcap/capture.pcap -Y "dns" -T fields -E separator=, -e frame.time -e ip.src -e ip.dst -e dns.qry.name

Пример: извлечь HTTP-хосты (если трафик не зашифрован):

tshark -r ~/pcap/capture.pcap -Y "http.host" -T fields -E separator=, -e frame.time -e ip.src -e http.host

Пример: TLS ClientHello/ServerHello метаданные:

tshark -r ~/pcap/capture.pcap -Y "tls.handshake.type" -T fields -E separator=, -e frame.time -e ip.src -e tls.handshake.type -e tls.handshake.extensions_server_name

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

6. Экспорт в JSON/CSV для дальнейшей аналитики

Для отчетов и дальнейшей обработки полезно экспортировать структуру. CSV удобен для табличных исследований, а JSON — для программной обработки.

Экспорт DNS-запросов в CSV:

tshark -r ~/pcap/capture.pcap -Y "dns" -T fields -E header=y -E separator=, \
  -e frame.time -e ip.src -e ip.dst -e dns.qry.name -e dns.id \
  > ~/reports/dns.csv

Экспорт в JSON (вывод будет крупнее, но удобно для парсинга):

tshark -r ~/pcap/capture.pcap -Y "tls" -T json > ~/reports/tls.json

7. Scapy: программное декодирование и извлечение полей

Scapy — это способ «превратить трафик в данные». Вы можете прочитать PCAP, пройти по пакетам и достать нужные поля (например, домены из DNS, особенности заголовков, статистику по протоколам и т.п.).

Создадим скрипт для извлечения доменных имен из DNS. Для простоты — только базовые поля.

nano ~/scripts/extract_dns.py

Содержимое:

from scapy.all import rdpcap, DNS

pcap_path = "~/pcap/capture.pcap"

pcap = rdpcap(pcap_path)

out = []
for pkt in pcap:
    if pkt.haslayer(DNS) and pkt[DNS].qd is not None:
        qname = pkt[DNS].qd.qname.decode(errors="ignore") if hasattr(pkt[DNS].qd, "qname") else None
        if qname:
            out.append(qname)

# Уникализация с сохранением порядка (простая схема)
seen = set()
uniq = []
for name in out:
    if name not in seen:
        seen.add(name)
        uniq.append(name)

for name in uniq:
    print(name)

Запуск:

python ~/scripts/extract_dns.py > ~/reports/dns_unique.txt

Скрипт можно расширить: добавлять время кадра, IP-адреса, тип запроса, NXDOMAIN и т.д.

8. Конвейер «tshark → Scapy»: когда комбинирование дает эффект

Практически выгодно делать так:

  • tshark сначала быстро фильтрует и показывает, что именно вам нужно (например, набор IP/домены/handshake-метки).
  • Scapy затем работает точечно с найденными пакетами/признаками, чтобы извлечь конкретные поля или собрать собственную сводку.

Например, вы находите в tshark список IP-адресов, которые активно инициируют подключения, а затем в Scapy считаете статистику по этим IP в рамках PCAP.

9. Рекомендации по декодированию: TLS, сессионные ключи и ограничения

Полноценное декодирование зашифрованного трафика TLS возможно только при наличии ключевого материала (например, сессионных ключей в формате NSS для отладочных сценариев) и корректной конфигурации инструментов. Без ключей вы обычно можете извлечь метаданные: SNI (если есть в ClientHello), версии, наборы шифров, длины и структуру handshake.

На уровне организационного подхода это означает: сначала подтвердите, что TLS действительно виден как handshake (через tshark), затем определите, можно ли легально получить ключи для тестового стенда (только для своих систем/разрешенных сред).

10. Примеры рабочих команд (шпаргалка)

  • Сводка по протоколам:
tshark -r ~/pcap/capture.pcap -q -z io,phs
  • Топ-источники DNS:
tshark -r ~/pcap/capture.pcap -Y "dns" -T fields -e ip.src | sort | uniq -c | sort -nr | head
  • Список доменов в DNS:
tshark -r ~/pcap/capture.pcap -Y "dns.qry.name" -T fields -E separator=\t -e dns.qry.name | sort -u | head -n 50
  • Сохранение фрагмента пакетов по фильтру (в зависимости от режима):
tshark -r ~/pcap/capture.pcap -Y "dns" -w ~/pcap/dns_only.pcap

Если какая-то команда в вашем окружении ведет себя иначе — это чаще связано с версиями Wireshark/tshark или форматом входного PCAP.

11. Типовой сценарий «как сделать результат для команды»

  1. Снимаете PCAP в пределах своей локальной сети.
  2. С помощью tshark строите краткие отчеты (CSV/JSON): DNS, TLS handshake, HTTP (если прозрачно).
  3. Если нужна углубленная логика — используете Scapy для извлечения специфических полей и создания сводок.
  4. Для визуальной проверки загружаете PCAP в Wireshark на ПК и подтверждаете гипотезы.

Так вы получаете воспроизводимый процесс и предсказуемое качество результата.

Заключение

Интеграция tshark и Scapy в Termux позволяет построить практичный конвейер анализа и декодирования сетевого трафика: от захвата PCAP до структурированного извлечения данных и подготовки отчетов. Wireshark лучше использовать как визуальный этап проверки — для интерпретации сложных протокольных сценариев и экспертной навигации по пакетам.

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

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

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

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

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