Как устанавливаются и работают сниферы?
Что проверяют
Различаете ли вы два класса инструментов: пакетные анализаторы вроде Wireshark и HTTP-прокси вроде Charles, Fiddler или mitmproxy. Следом почти всегда спрашивают, как увидеть содержимое HTTPS и что делать, если мобильное приложение не идёт через прокси.
Как отвечать
Разведите два подхода:
- пакетный снифер (Wireshark, tcpdump): через libpcap, на Windows через Npcap, копирует кадры с сетевого интерфейса. Для этого нужны права администратора или группа с доступом к захвату. В коммутируемой сети вы видите только свой трафик и широковещательный; чужой доступен через зеркалирование порта на коммутаторе, а в Wi-Fi через режим мониторинга;
- фильтры: у Wireshark два синтаксиса. Фильтр захвата в нотации BPF (
tcp port 443) решает, что вообще попадёт в файл; фильтр отображения (http.request.method == "POST") только прячет лишнее в уже записанном; - HTTPS в Wireshark: без ключей видны лишь рукопожатие и имя хоста из SNI. Chrome и Firefox умеют писать сессионные ключи в файл из переменной окружения
SSLKEYLOGFILE, а Wireshark расшифровывает трафик по этому файлу; - HTTP-прокси: устройство или браузер ходит через прокси (у Charles и Fiddler по умолчанию порт 8888, у mitmproxy 8080), и тот подменяет сертификат сервера своим. Корневой сертификат прокси нужно установить на устройство, на iOS ещё отдельно включить полное доверие к нему.
Для тестировщика ценность прокси в том, что трафик можно не только смотреть, но и менять: точки останова, подмена ответа (Map Local, Rewrite), эмуляция медленной сети. Так проверяют обработку ошибок сервера и таймаутов без участия бэкенда.
Где спотыкаются
Ждут, что Android-приложение сразу покажет HTTPS в прокси. С Android 7 приложения не доверяют пользовательским сертификатам, для отладочной сборки разработчики добавляют разрешение в network_security_config. При certificate pinning не поможет и это.
Путают фильтр захвата с фильтром отображения и потом не находят нужные пакеты: их просто не записали.
Забывают о правовой стороне. Перехват чужого трафика без разрешения незаконен; в работе вы снимаете только свой стенд и своё устройство.