Сетевой трафик — это язык взаимодействия сервисов. Когда нужно разбираться в проблемах подключения, проверять корректность протоколов, анализировать 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. Типовой сценарий «как сделать результат для команды»
- Снимаете PCAP в пределах своей локальной сети.
- С помощью tshark строите краткие отчеты (CSV/JSON): DNS, TLS handshake, HTTP (если прозрачно).
- Если нужна углубленная логика — используете Scapy для извлечения специфических полей и создания сводок.
- Для визуальной проверки загружаете PCAP в Wireshark на ПК и подтверждаете гипотезы.
Так вы получаете воспроизводимый процесс и предсказуемое качество результата.
Заключение
Интеграция tshark и Scapy в Termux позволяет построить практичный конвейер анализа и декодирования сетевого трафика: от захвата PCAP до структурированного извлечения данных и подготовки отчетов. Wireshark лучше использовать как визуальный этап проверки — для интерпретации сложных протокольных сценариев и экспертной навигации по пакетам.
Если вам нужно организовать безопасный стенд диагностики, подготовить методику анализа трафика под ваши сервисы или настроить обучаемый процесс для команды, специалисты РыбинскЛАБ помогут: консультации, аудит практик сетевой диагностики и внедрение рабочих пайплайнов под ваши требования.