Як я можу відстежувати мережевий трафік, надісланий та отриманий від емулятора Android?
Як я можу відстежувати мережевий трафік, надісланий та отриманий від емулятора Android?
Відповіді:
Є два способи захоплення мережевого трафіку безпосередньо з емулятора Android:
Скопіюйте та запустіть бінарний tcpdump, сумісний з ARM, на емуляторі, записавши висновок на 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
прапор під час запуску нового емулятора, щоб встановити проксі (Приклад відрижки ) для контролю трафіку Android. Приклад використання ./emulator -http-proxy localhost:8080 -avd android2.2
. Зауважте, що в моєму прикладі я використовую Burp, і він прослуховує порт 8080. Більше інформації можна знайти тут .
Для OS X ви можете використовувати Charles , це просто і просто у використанні.
Для отримання додаткової інформації ознайомтеся з Android Emulator та блогом Charles Proxy .
Charles
раніше. Але наскільки я бачу, це HTTP-специфічно. Але питання ОП - не.
Так, спрацює провід.
Я не думаю, що існує якийсь простий спосіб відфільтрувати виключно трафік емулятора, оскільки він надходить з тієї ж 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 та відкрийте вкладку Мережа.
http://developer.android.com/tools/debugging/ddms.html
ОНОВЛЕННЯ: Monitor Монітор пристроїв Android припинено в Android Studio 3.1. Детальніше дивіться на https://developer.android.com/studio/profile/monitor
Я б запропонував вам використовувати Wireshark .
Кроки:
- Встановіть Wireshark.
- Виберіть мережеве з'єднання, яке ви використовуєте для дзвінків (наприклад, виберіть Wi-Fi, якщо ви його використовуєте)
- Буде багато запитів і відповідей, закрийте додаткові додатки.
- Зазвичай запити мають зелений колір, як тільки ви помітите запит, скопіюйте адресу призначення та використовуйте фільтр зверху, ввівши
ip.dst==52.187.182.185
, ввівши адресу призначення.
Ви можете скористатися іншими методами фільтрації, згаданими тут, щоб отримати певний трафік.