mitmproxy - это interactive HTTPS proxy, который позволяет просто анализировать или захватывать и модифицировать POST (GET) запросы направленные через него по HTTP или HTTPS протоколу (поддерживает HTTP/2.0).
- О mitmproxy
- Установка mitmproxy в Debian 10
- Первый запуск и создание CA сертификата
- Удаление CA сертификата
- Установка mitmproxy CA сертификата в Chrome
- GUI подсказки по установке CA сертификата
- Установка CA сертификата в ОС Debian
- Проверка установки CA сертификата
- Консольный режим mitmproxy
- Альтернативное FOSS для захвата трафика
О mitmproxy
Сайт программы - mitmproxy.org
Доступен в репозиториях Debian по-умолчанию.
$ apt-cache search mitmproxy mitmproxy - SSL-capable man-in-the-middle HTTP proxy $ apt-cache show mitmproxy Package: mitmproxy Version: 4.0.4-5 ... Description-en: SSL-capable man-in-the-middle HTTP proxy mitmproxy is an SSL-capable man-in-the-middle HTTP proxy. It provides a console interface that allows traffic flows to be inspected and edited on the fly. . Also shipped is mitmdump, the command-line version of mitmproxy, with the same functionality but without the frills. Think tcpdump for HTTP. . Features: - intercept and modify HTTP traffic on the fly - save HTTP conversations for later replay and analysis - replay both HTTP clients and servers - make scripted changes to HTTP traffic using Python - SSL interception certs generated on the fly
Справку по установке и использованию можно черпануть на сайте docs.mitmproxy.org
mitmproxy - штука мега-полезная. Что, к чему, почему, для чего, а главное зачем использовать mitmproxy, - пояснять не будем, кому нужно, тот знает зачем.
Сразу перейдём, как говорят криминалисты, ближе к телу
.
Установка mitmproxy в Debian 10
mitmproxy устанавливать будем на х32-битной платформе из офф. репозитория Debian или с помощью pip3.
$ apt-get install mitmproxy
У кого х64 платформа, те могут скачать самую последнюю версию по ссылке: https://mitmproxy.org/downloads/
Для х32-битных платформ компиляций там не лежало и для какой именно платформы компиляция - не указано, определено методом научного «тыка».
$ ./mitmweb --version bash: ./mitmweb: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла $ file ./mitmweb ./mitmweb: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=9aa10fdfbf5d72b09b2d97792cbec044e608aabd, for GNU/Linux 2.6.32, stripped
Самая последняя версия в Debian 10 репозитории - mitmproxy 4.0.4
$ mitmweb --version Mitmproxy: 4.0.4 Python: 3.7.3 OpenSSL: OpenSSL 1.1.1n 15 Mar 2022 Platform: Linux-4.19.0-23-686-i686-with-debian-10.13
При установке из pip3 install mitmproxy в Debian 10 получим:
$ mitmweb --version Mitmproxy: 5.3.0 Python: 3.7.3 OpenSSL: OpenSSL 1.1.1n 15 Mar 2022 Platform: Linux-4.19.0-23-686-i686-with-debian-10.13
ModuleNotFoundError: No module named mitmproxy.tools
После установки из pip3 install mitmproxy возможны проблемы с запуском под уч.записью простого пользователя:
$ mitmweb --version Traceback (most recent call last): File "/usr/local/bin/mitmweb", line 6, in <module> from mitmproxy.tools.main import mitmweb ModuleNotFoundError: No module named 'mitmproxy.tools'
При том, с root правами запуск проблем не вызывает:
$ sudo mitmweb --version Mitmproxy: 5.3.0 Python: 3.7.3 OpenSSL: OpenSSL 1.1.1n 15 Mar 2022 Platform: Linux-4.19.0-23-686-i686-with-debian-10.13
Проверка прав на каталоги показала, что для обычного пользователя нет доступа к библиотекам:
$ ls -la /usr/local/lib/python3.7/dist-packages/mitmproxy ls: невозможно открыть каталог '/usr/local/lib/python3.7/dist-packages/mitmproxy': Отказано в доступе $ ls -la /usr/local/lib/python3.7/dist-packages/ итого 9128 drwxrwsr-x 53 root staff 4096 апр 21 14:27 . drwxrwsr-x 3 root staff 4096 дек 24 2019 .. ... drwxr-s--- 3 root staff 4096 апр 21 14:10 mitmproxy
Так случилось потому, что однажды давным давно в приступе паранои в /root/.bashrc был установлен umask 027.
Потому, при установке некоторых быблиотек обычные пользователи лишились доступа к ним - меняем взад на umask 022:
$ sudo vi /root/.bashrc # http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html # umask value Security level Effective permission (directory) # 022 Permissive 755 # 026 Moderate 751 # 027 Moderate 750 # 077 Severe 700 # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 027 umask 022
Даём всем и каждому, налево и направо, права на чтение:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Потом на всяк . /root/.bashrc и проверяем арбайтен ли для юзверей:
$ mitmweb --version Mitmproxy: 5.3.0 Python: 3.7.3 OpenSSL: OpenSSL 1.1.1n 15 Mar 2022 Platform: Linux-4.19.0-23-686-i686-with-debian-10.13
Если после всего выше описанного после установки вновь нет прав на запуск mitmweb, значит обслуживающий пакета решил не давать прав на запуск обычным пользователям, хотя и странное поведение.., ведь:
- установка из apt позволяет обычным юзверям запускать mitmweb, а из pip тебе проблемы с правами на либы;
- обычно при запуске запрещённого для смертных проверяется и uid/gid.
Был у Дебиана один глюк рогатый, из пакетов апача
Когда после обновления автоматом, постустановочным скриптом, отключался некий модуль и настойчиво подключался иной потому, что так решил обслуживающий пакета...А многим сисьадминам такое поведение мягко говоря не нравилось. Долго то неподобство продолжалось, пока однажды кого-то в усмерть оно не zАеb@ло, и не разгорелся ХолиВар, после которого (Хэроям Слива!) модули перестали отваливаться.., и настала Благодать Божия (ака Пэрэмога Пэрэможная)!
Как ещё вариант юзверь может попробовать сам себе поставить pip3 install mitmproxy, тогда либы встанут в ls ~/.local/lib (python2.7 python3.7) с правами юзверя.., но, потом может ~/.local/bin не оказаться в $PATH, да может и ещё чего-то там ещё...
ModuleNotFoundError: No module named pyasn1.type
Ещё один проблем, но уже с версиями:
mitmproxy 5.3.0 requires blinker<1.5,>=1.4, which is not installed. mitmproxy 5.3.0 requires Brotli<1.1,>=1.0, which is not installed. mitmproxy 5.3.0 requires click<8,>=7.0, which is not installed. mitmproxy 5.3.0 requires kaitaistruct<0.10,>=0.7, which is not installed. mitmproxy 5.3.0 requires passlib<1.8,>=1.6.5, which is not installed. mitmproxy 5.3.0 requires pyperclip<1.9,>=1.6.0, which is not installed. mitmproxy 5.3.0 requires tornado<7,>=4.3, which is not installed. mitmproxy 5.3.0 has requirement pyasn1<0.5,>=0.3.1, but you'll have pyasn1 0.5.0 which is incompatible. ... # pip3 install blinker Brotli click kaitaistruct passlib pyperclip tornado # pip3 uninstall mitmproxy Uninstalling mitmproxy-5.3.0: Would remove: /usr/local/bin/mitmdump /usr/local/bin/mitmproxy /usr/local/bin/mitmweb /usr/local/bin/pathoc /usr/local/bin/pathod /usr/local/lib/python3.7/dist-packages/mitmproxy-5.3.0.dist-info/* /usr/local/lib/python3.7/dist-packages/mitmproxy/* /usr/local/lib/python3.7/dist-packages/pathod/* Proceed (y/n)? y Successfully uninstalled mitmproxy-5.3.0 # pip3 install mitmproxy ... Successfully built blinker pyperclip kaitaistruct Installing collected packages: click, pyasn1, Brotli, tornado, blinker, passlib, pyperclip, kaitaistruct, mitmproxy, h11 Found existing installation: pyasn1 0.5.0 Uninstalling pyasn1-0.5.0: Successfully uninstalled pyasn1-0.5.0 Successfully installed Brotli-1.0.9 blinker-1.4 click-7.1.2 h11-0.14.0 kaitaistruct-0.9 mitmproxy-5.3.0 passlib-1.7.4 pyasn1-0.4.8 pyperclip-1.8.2 tornado-6.2 #
Первый запуск и создание CA сертификата
Как гласит документация:
Quick Setup - mitmproxy
https://docs.mitmproxy.org/stable/concepts-certificates/#quick-setup# Quick Setup
By far the easiest way to install the mitmproxy CA certificate is to use the built-in certificate installation app. To do this, start mitmproxy and configure your target device with the correct proxy settings. Now start a browser on the device, and visit the magic domain mitm.it. You should see something like this:
Click on the relevant icon, follow the setup instructions for the platform you’re on and you are good to go.
The mitmproxy certificate authority
The first time mitmproxy is run, it creates the keys for a certificate authority (CA) in the config directory (~/.mitmproxy by default). This CA is used for on-the-fly generation of dummy certificates for each visited website. Since your browser won’t trust the mitmproxy CA out of the box, you will either need to click through a TLS certificate warning on every domain, or install the CA certificate once so that it is trusted.
The following files are created:
Filename Contents
mitmproxy-ca.pem The certificate and the private key in PEM format.
mitmproxy-ca-cert.pem The certificate in PEM format. Use this to distribute on most non-Windows platforms.
mitmproxy-ca-cert.p12 The certificate in PKCS12 format. For use on Windows.
mitmproxy-ca-cert.cer Same file as .pem, but with an extension expected by some Android devices.For security reasons, the mitmproxy CA is generated uniquely on the first start and is not shared between mitmproxy installations on different devices. This makes sure that other mitmproxy users cannot intercept your traffic.
Getting Started - mitmproxy
https://docs.mitmproxy.org/stable/overview-getting-started/Getting Started
We assume you have already installed mitmproxy on your machine.
# Launch the tool you need
You can start any of our three tools from the command line / terminal.
mitmproxy gives you an interactive command-line interface
mitmweb gives you a browser-based GUI
mitmdump gives you non-interactive terminal outputIf you use the command-line interface, we highly recommend you to take the tutorial to get started.
# Configure your browser or device
Mitmproxy starts as a regular HTTP proxy by default and listens on http://localhost:8080.
You need to configure your browser or device to route all traffic through mitmproxy. Browser versions and configurations options frequently change, so we recommend to simply search the web on how to configure an HTTP proxy for your system. Some operating system have a global settings, some browser have their own, other applications use environment variables, etc.
You can check that your web traffic is going through mitmproxy by browsing to http://mitm.it - it should present you with a simple page to install the mitmproxy Certificate Authority - which is also the next step. Follow the instructions for your OS / system and install the CA.
# Verifying everything works
At this point your running mitmproxy instance should already show the first HTTP flows from your client. You can test that all TLS-encrypted web traffic is working as expected by browsing to https://mitmproxy.org - it should show up as new flow and you can inspect it.
При первом запуске программы mitmproxy или mitmweb:
$ mitmweb Web server listening at http://127.0.0.1:8081/ Proxy server listening at http://*:8080 ...откроется окно браузера по-умолчанию...
Будут созданы сертификаты в директории ~/.mitmproxy/
$ ls -la ~/.mitmproxy/ итого 40 drwxr-x--- 2 yuzver yuzver 4096 апр 21 15:59 . drwxr-xr-x 101 yuzver yuzver 12288 апр 21 15:59 .. -rw-r----- 1 yuzver yuzver 1318 апр 21 15:59 mitmproxy-ca-cert.cer -rw-r----- 1 yuzver yuzver 1140 апр 21 15:59 mitmproxy-ca-cert.p12 -rw-r----- 1 yuzver yuzver 1318 апр 21 15:59 mitmproxy-ca-cert.pem -rw------- 1 yuzver yuzver 2529 апр 21 15:59 mitmproxy-ca.p12 -rw------- 1 yuzver yuzver 3022 апр 21 15:59 mitmproxy-ca.pem -rw-r----- 1 yuzver yuzver 770 апр 21 15:59 mitmproxy-dhparam.pem
Если по каким-то причинам после первого запуска mitmproxy или mitmweb сертификатов не появилось,
Sometimes using the quick install app is not an option and you need to install the CA manually. Below is a list of pointers to manual certificate installation documentation for some common platforms. The mitmproxy CA cert is located in ~/.mitmproxy after it has been generated at the first start of mitmproxy.
тогда можно попробовать запросить его ручками.
Ручное создание CA сертификата
Ручное создание CA сертификата выполняется с помощью wget, после успешного запуска mitmproxy или mitmweb разумеется:
$ wget -e https_proxy=127.0.0.1:8080 --ca-certificate ~/.mitmproxy/mitmproxy-ca-cert.pem https://example.com/ --2023-04-21 02:58:57-- https://example.com/ Загружен сертификат CA «/home/yuzver/.mitmproxy/mitmproxy-ca-cert.pem» Подключение к 127.0.0.1:8080... соединение установлено. Proxy-запрос отправлен. Ожидание ответа… 200 OK Длина: 1256 (1,2K) [text/html] Сохранение в: «index.html» index.html 100%[===================>] 1,23K --.-KB/s за 0s 2023-04-21 02:58:58 (11,4 MB/s) - «index.html» сохранён [1256/1256] $ rm -rf index.html && ls ~/.mitmproxy mitmproxy-ca-cert.cer mitmproxy-ca-cert.pem mitmproxy-ca.pem mitmproxy-ca-cert.p12 mitmproxy-ca.p12 mitmproxy-dhparam.pem
Удаление CA сертификата
После удаления mitmproxy папка ~/.mitmproxy вместе с сертификатами сохраняется!
При необходимости удаления сертификатов потребуется пошарудить ручками.
Установка mitmproxy CA сертификата в Chrome
Chrome, точнее Chromium, мы запускаем с ограничением на использование CPU и файловой системы, в «обезьяннике» firejail:
$ cgexec -g blkio,cpu:limit1 firejail --name=chromium /usr/bin/chromium --disable-dev-shm-usage --disk-cache-dir=/tmp/chromium --proxy-server="http://127.0.0.1:8080" --password-store=basic %U
После запуска браузера открываем Центры сертификации - Импорт и импортируем mitmproxy-ca-cert.pem
.
Настройки - Безопасность
chrome://settings
Настройки - Безопасность - Настроить сертификаты
Управление настройками и сертификатами HTTPS/SSL
chrome://settings/security
Настройки - Безопасность - Настроить сертификаты - Центры сертификации - Импорт
chrome://settings/certificates
Центр сертификации
Сертификат "mitmproxy" представляет центр сертификации
Настройки доверия
- Доверять этому сертификату при идентификации сайтов
- Доверять этому сертификату при идентификации адресов электронной почты
- Доверять этому сертификату при идентификации производителей ПО
Неизвестная ошибка импорта CA сертификата
«обезьянник» firejail
дальше не пускает туда, where chrome store import certificates
- где chrome хранит импортируемые сертификаты:
$ cgexec -g blkio,cpu:limit1 firejail --name=chromium /usr/bin/chromium --disable-dev-shm-usage --disk-cache-dir=/tmp/chromium --password-store=basic %U Reading profile /home/yuzver/.config/firejail/chromium.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-programs.inc Warning: networking feature is disabled in Firejail configuration file Reading profile /etc/firejail/whitelist-common.inc Reading profile /home/yuzver/.config/firejail/my-blacklist.inc Warning: cgroup feature is disabled in Firejail configuration file Parent pid 26207, child pid 26208 Child process initialized in 663.29 ms ... [8:44:0421/161923.785501:ERROR:nss_util.cc(55)] Failed to create /home/yuzver/.pki/nssdb directory.
Изменяем firejail профиль chromium.profile
:
$ vi /home/yuzver/.config/firejail/chromium.profile # Chromium browser profile noblacklist ~/.config/chromium noblacklist ~/.cache/chromium noblacklist ~/.pki #noblacklist /usr/lib/ #noblacklist /usr/local/lib/ ... netfilter whitelist ${DOWNLOADS} mkdir ~/.config/chromium whitelist ~/.config/chromium mkdir ~/.cache/chromium whitelist ~/.cache/chromium mkdir ~/.pki mkdir ~/.pki/nssdb whitelist ~/.pki ...
Перезапускаем браузер, повторяем попытку установки mitmproxy CA сертификата в Chrome.
GUI подсказки по установке CA сертификата
mitmweb
на локальном адресе 127.0.0.1 запустит два сервиса на портах:
- 127.0.0.1:8080 - сам прокси, на использование которого должен быть настроен браузер;
- 127.0.0.1:8081 - веб сервер обслуживающий команды управления запросами и самим mitmproxy.
Вкладка mitmproxy, пункт Install Certificates...
http://mitm.it/#Linux
Linux
Ubuntu/Debian
mv mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy.crt
sudo update-ca-certificates
http://mitm.it/#Android
Android
Android 10+
Open the downloaded CER file.
Enter mitmproxy (or anything else) as the certificate name.
For credential use, select VPN and apps.
Click OK.
Some Android distributions require you to install the certificate via Settings -> Security -> Advanced -> Encryption and credentials -> Install from storage instead.Warning: Apps that target Android API Level 24 (introduced in 2016) and above only accept certificates from the system trust store (#2054). User-added CAs are not accepted unless the application manually opts in. Except for browsers, you need to patch most apps manually.
http://mitm.it/#Firefox
Firefox (does not use the OS root certificates)
Firefox
Open Options -> Privacy & Security and click View Certificates... at the bottom of the page.
Click Import... and select the downloaded certificate.
Enable Trust this CA to identify websites and click OK.
Установка CA сертификата в ОС Debian
Установка CA сертификата глобально в саму операционную систему Debian (Installing The mitmproxy Cert on Debian Based Linux Distributions):
$ mkdir /usr/local/share/ca-certificates/extra $ cp /home/yuzver/.mitmproxy/mitmproxy-ca-cert.cer \ /usr/local/share/ca-certificates/extra/mitmproxy-ca-cert.crt $ sudo update-ca-certificates Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... Adding debian:mitmproxy-ca-cert.pem done. Updating Mono key store Mono Certificate Store Sync - version 5.18.0.240 Populate Mono certificate store from a concatenated list of certificates. Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed. Importing into legacy system store: I already trust 141, your new list has 138 Certificate added: CN=mitmproxy, O=mitmproxy 1 new root certificates were added to your trust store. Import process completed. Importing into BTLS system store: I already trust 137, your new list has 138 Certificate added: CN=mitmproxy, O=mitmproxy 1 new root certificates were added to your trust store. Import process completed. Done done.
Данный способ установки подразумевает, что все браузеры должны будут автоматически доверять mitmproxy сертификату без необходимости ручного импорта в каждый браузер отдельно.
Но, при использовании «обезьянников» и/или «песочниц» типа firejail, могут возникнуть подобные уже упоминавшимся выше проблемы.
Удаление CA сертификата из операционной системы Debian:
$ rm -rf /usr/local/share/ca-certificates/extra $ sudo update-ca-certificates Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Updating Mono key store Mono Certificate Store Sync - version 5.18.0.240 Populate Mono certificate store from a concatenated list of certificates. Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed. Importing into legacy system store: I already trust 142, your new list has 137 1 previously trusted certificates were removed. Certificate removed: CN=mitmproxy, O=mitmproxy Import process completed. Importing into BTLS system store: I already trust 138, your new list has 137 1 previously trusted certificates were removed. Certificate removed: CN=mitmproxy, O=mitmproxy Import process completed. Done done. $
Проверка установки CA сертификата
Проверка установки CA сертификата выполняется путём направления SSL/TLS/HTTPS трафика через mitmproxy, запущенного по-умолчанию на порту 8080.
Открыв в браузере https://www.google.com/ тыкаем на значек замка в адресной строке Сведения о сайте - Сертификат (действительный)
Общее имя (CN) mitmproxy
Организация (O) mitmproxy
Подразделение (OU) <Не является частью сертификата>
Дата выдачи среда, 19 апреля 2023 г., 07:19:16
Срок действия воскресенье, 20 апреля 2025 г., 07:19:16
Консольный режим mitmproxy
Помним, что у нас есть три варианта:
You can start any of our three tools from the command line / terminal.
mitmproxy
gives you an interactive command-line interfacemitmweb
gives you a browser-based GUImitmdump
gives you non-interactive terminal output
mitmweb
- это браузерная версия.
mitmproxy
- это консольная (текстовая) версия, которая будет особо полезной при удалённом использовании, на слабых 32х-битных платформах или сильно нагруженных ПК, для «Велыкых и Лютых Пэрэмог».
Правда нужно будет вместо тупого передвигания мыши по экрану поработать ручками и запомнить с десяток комбинаций клавиш из Keybindings list используемых для управления, захвата и манипулирования GET/POST запросами.
Keybindings list
Для разного контекста просмотра трафика в консольном режиме mitmproxy, существует отдельный набор клавиш управления и делятся на категории:
- Common Keybindings - общие сочетания клавиш;
- Global Keybindings - глобальные сочетания клавиш;
- Keybindings for this view - сочетания клавиш текущего контеста, например листинг списка всех соединений или отдельно выбранного.
Первые две категории содержат общий для всех контекстов набор клавиш управления, например: влево, вправо, вверх, вниз и т.д.
Keybindings for this view содержит список клавиш управления, одни и теже комбинации которых в разных контекстах отображения могут иметь различное назначение.
Справка в консольном режиме mitmproxy в любом контексте вызывается комбинацией Shift+?.
Global Keybindings
Глобальные комбинации клавиш управления консольным режимом mitmproxy:
Global Keybindings - Cycle to next layout : Command prompt ? View help B Start an attached browser C View commands E View event log G Go to end I Toggle whether the filtering via the intercept option is enabled K View key bindings O View options P View flow details Q Exit immediately W Stream to file enter Select g Go to start h Left i Set intercept j Down k Up l Right q Exit the current view space Page down tab Next ctrl b Page up ctrl f Page down ctrl right Focus next layout pane shift tab Focus next layout pane
Common Keybindings
Общие комбинации клавиш управления консольным режимом mitmproxy:
Common Keybindings : Command prompt E View event log O View options enter Select q Exit the current view tab Next
Клавиши контекста списка соединений
Этот справка по клавишам управления списком захваченных соединений:
Keybindings for this view A Resume all intercepted flows D Duplicate flow F Set focus follow L Load flows from file M Toggle viewing marked flows S Start server replay U Un-set all marks V Revert changes to this flow X Kill this flow Z Purge all flows not showing a Resume this intercepted flow b Save response body to file d Delete flow from view e Export this flow to file f Set view filter m Toggle mark on this flow n Create a new flow o Set flow list order r Replay this flow v Reverse flow list order w Save listed flows to file z Clear flow list | Run a script on this flow ctrl l Send cuts to clipboard
Клавиши контекста отдельного соединения
Этот справка по клавишам управления отдельно выбранного (клавишей Enter) соединения.
Keybindings for this view A Resume all intercepted flows D Duplicate flow V Revert changes to this flow a Resume this intercepted flow b Save response body to file d Delete flow from view e Edit a flow component f Toggle viewing full contents on this flow m Set flow view mode p Go to previous flow r Replay this flow space Go to next flow v View flow body in an external viewer w Save flow to file z Encode/decode flow body | Run a script on this flow ctrl l Send cuts to clipboard
Выражения фильтрации трафика
Например: ~m POST ~d example.com
- для захвата (клавиша i) и/или фильтрации (клавиша f) соединений методом POST с домена example.com
Этот справка по выражениям для фильтрации перехваченных соединений. Остаются неизменными в любых контекстах просмотра трафика в консоли mitmproxy.
Filter Expressions ~a Match asset in response: CSS, Javascript, Flash, images. ~b regex Body ~bq regex Request body ~bs regex Response body ~c int HTTP response code ~d regex Domain ~dst regex Match destination address ~e Match error ~h regex Header ~hq regex Request header ~hs regex Response header ~http Match HTTP flows ~m regex Method ~marked Match marked flows ~q Match request with no response ~s Match response ~src regex Match source address ~t regex Content-type header ~tcp Match TCP flows ~tq regex Request Content-Type header ~ts regex Response Content-Type header ~u regex URL ~websocket Match WebSocket flows (and HTTP-WebSocket handshake flows) ! unary not & and | or (...) grouping Regexes are Python-style. Regexes can be specified as quoted strings. Header matching (~h, ~hq, ~hs) is against a string of the form "name: value". Expressions with no operators are regex matches against URL. Default binary operator is &. Examples: google\.com Url containing \"google.com ~q ~b test Requests where body contains \"test\" !(~q & ~t \"text/html\") Anything but requests with a text/html content type.
Подробнее в документации:
Альтернативное FOSS для захвата трафика
Wireshark
Wireshark — это приложение, которое «знает» структуру самых различных сетевых протоколов, и поэтому позволяет разобрать сетевой пакет, отображая значение каждого поля протокола любого уровня. Поскольку для захвата пакетов используется pcap, существует возможность захвата данных только из тех сетей, которые поддерживаются этой библиотекой. Тем не менее, Wireshark умеет работать с множеством форматов входных данных, соответственно, можно открывать файлы данных, захваченных другими программами, что расширяет возможности захвата. Для расширения возможностей программы возможно использование скриптового языка Lua[9].
$ sudo apt-get install wireshark wireshark-common wireshark-doc wireshark-qt
Tcpdump
tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.
Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству (так, например, запуск из Jail во FreeBSD невозможен).
$ sudo tcpdump
PCAPdroid
PCAPdroid is a privacy-friendly open source app which lets you track, analyze and block the connections made by the other apps in your device. It also allows you to export a PCAP dump of the traffic, inspect HTTP, decrypt TLS traffic and much more!
PCAPdroid simulates a VPN in order to capture the network traffic without root. It does not use a remote VPN server, instead data is processed locally on the device.
- GitHub - emanuele-f/PCAPdroid: No-root network monitor, firewall and PCAP dumper for Android
- PCAPdroid | F-Droid - Free and Open Source Android App Repository