Как отслеживать сетевой трафик, отправляемый и получаемый от моего эмулятора Android?
Как отслеживать сетевой трафик, отправляемый и получаемый от моего эмулятора Android?
Ответы:
Есть два способа захвата сетевого трафика непосредственно из эмулятора Android:
Скопируйте и запустите ARM-совместимый двоичный файл tcpdump на эмуляторе, возможно, записав вывод на SD-карту (например tcpdump -s0 -w /sdcard/emulator.cap
).
Запустите, emulator -tcpdump emulator.cap -avd my_avd
чтобы записать весь трафик эмулятора в локальный файл на вашем ПК
В обоих случаях вы можете проанализировать файл pcap с помощью tcpdump или Wireshark как обычно.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
предупреждение, добавьте - движок классический для вашей команды , как это: emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Это приведет к принудительному использованию устаревшего движка эмулятора, но он должен работать, пока проблема не будет устранена.
avd
находится?
Также можно использовать http-прокси для отслеживания http-запросов от эмулятора. Вы можете передать -http-proxy
флаг при запуске нового эмулятора, чтобы установить прокси (пример burp ) для мониторинга трафика Android. Пример использования ./emulator -http-proxy localhost:8080 -avd android2.2
. Обратите внимание, что в моем примере я использую Burp, и он прослушивает порт 8080. Более подробную информацию можно найти здесь .
Для OS X вы можете использовать Charles , это просто и удобно.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с публикацией в блоге Android Emulator и Charles Proxy .
Charles
раньше. Но, насколько я понимаю, он специфичен для HTTP. Но вопрос ОП - нет.
Да, wirehark будет работать.
Я не думаю, что есть простой способ отфильтровать только трафик эмулятора, поскольку он исходит с того же IP-адреса src.
Возможно, лучшим способом было бы создать очень простую среду VMware и запускать только там эмулятор, по крайней мере, так не было бы слишком большого фонового трафика.
Теперь можно использовать Wireshark напрямую для захвата трафика эмулятора Android. Есть плагин extcap под названием androiddump, который делает это возможным. У вас должен быть tcpdump
исполняемый файл в образе системы, работающий на эмуляторе (он есть в большинстве последних образов, протестирован с образами API 24 и API 27) и adbd
работающий от имени пользователя root на хосте (просто запустите adb root
). В списке доступных интерфейсов в Wireshark (только версия Qt, устаревший GTK + его нет) или в списке, показанном с помощью, tshark -D
должно быть несколько интерфейсов Android, позволяющих прослушивать трафик Bluetooth, Logcat или Wifi, например:
android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)
Эмулятор можно запустить командой -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Я использовал HTTP Analyzer, но он должен работать для всего остального. Более подробную информацию можно найти здесь:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
Вы можете использовать http://docs.mitmproxy.org/en/stable/install.html
Его легко настроить и не потребуется никаких дополнительных настроек.
Я пробовал разные инструменты, но оказалось, что это действительно хорошо и легко.
mitmproxy
раньше. Но, насколько я понимаю, он специфичен для HTTP. Но вопрос ОП - нет.
Вы можете отслеживать сетевой трафик из Android Studio. Перейдите в Android Monitor и откройте вкладку Network.
http://developer.android.com/tools/debugging/ddms.html
ОБНОВЛЕНИЕ: ⚠️ Android Device Monitor устарел в Android Studio 3.1. Подробнее см. Https://developer.android.com/studio/profile/monitor.
Я бы посоветовал вам использовать Wireshark .
шаги:
- Установите Wireshark.
- Выберите сетевое соединение, которое вы используете для звонков (например, выберите Wi-Fi, если вы его используете)
- Будет много запросов и ответов, закройте лишние заявки.
- Обычно запросы окрашены в зеленый цвет, как только вы заметили свой запрос, скопируйте адрес назначения и используйте фильтр сверху, введя
ip.dst==52.187.182.185
адрес назначения.
Вы можете использовать другие упомянутые здесь методы фильтрации, чтобы получить определенный трафик.