Bagaimana cara memantau lalu lintas jaringan yang dikirim dan diterima dari emulator android saya?
Bagaimana cara memantau lalu lintas jaringan yang dikirim dan diterima dari emulator android saya?
Jawaban:
Ada dua cara untuk menangkap lalu lintas jaringan langsung dari emulator Android:
Salin dan jalankan biner tcpdump yang kompatibel dengan ARM di emulator, tulis keluaran ke kartu SD, mungkin (misalnya tcpdump -s0 -w /sdcard/emulator.cap
).
Jalankan emulator -tcpdump emulator.cap -avd my_avd
untuk menulis semua lalu lintas emulator ke file lokal di PC Anda
Dalam kedua kasus tersebut, Anda dapat menganalisis file pcap dengan tcpdump atau Wireshark seperti biasa.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
peringatan, menambahkan -Engine klasik untuk perintah Anda seperti ini: emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Tindakan ini akan memaksa mesin emulator yang tidak digunakan lagi, tetapi akan berfungsi sampai masalah diperbaiki.
avd
lokasinya?
Anda juga dapat menggunakan proxy http untuk memantau permintaan http dari emulator. Anda bisa meneruskan -http-proxy
flag saat memulai emulator baru untuk menyetel proxy (Contoh burp ) untuk memantau traffic Android. Contoh penggunaan ./emulator -http-proxy localhost:8080 -avd android2.2
. Perhatikan bahwa dalam contoh saya, saya menggunakan Burp, dan mendengarkan port 8080. Info lebih lanjut dapat ditemukan di sini .
Untuk OS X Anda dapat menggunakan Charles , itu sederhana dan mudah digunakan.
Untuk informasi selengkapnya, lihat postingan blog Android Emulator dan Charles Proxy .
Charles
sebelumnya. Tapi sejauh yang saya bisa lihat, ini khusus HTTP. Tapi pertanyaan OP bukan.
Ya, wireshark akan berfungsi.
Menurut saya tidak ada cara mudah untuk memfilter hanya lalu lintas emulator, karena ini berasal dari IP src yang sama.
Mungkin cara terbaik adalah mengatur lingkungan VMware yang sangat kosong dan hanya menjalankan emulator di sana, setidaknya dengan cara itu tidak akan ada terlalu banyak lalu lintas latar belakang.
Sekarang Wireshark dapat digunakan secara langsung untuk menangkap lalu lintas emulator Android. Ada sebuah plugin extcap bernama androiddump yang memungkinkannya. Anda harus memiliki tcpdump
file yang dapat dieksekusi di image sistem yang berjalan di emulator (gambar terbaru memilikinya, diuji dengan gambar API 24 dan API 27) dan adbd
dijalankan sebagai root pada host (jalankan saja adb root
). Dalam daftar antarmuka yang tersedia di Wireshark (hanya versi Qt, GTK + yang tidak digunakan lagi tidak memilikinya) atau daftar yang ditampilkan tshark -D
harus ada beberapa antarmuka Android yang memungkinkan untuk mengendus lalu lintas Bluetooth, Logcat, atau Wifi, misalnya:
android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)
Anda dapat memulai emulator dengan perintah -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Saya menggunakan HTTP Analyzer, tetapi seharusnya berfungsi untuk hal lain. Detail lebih lanjut dapat ditemukan di sini:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
Anda dapat menggunakan http://docs.mitmproxy.org/en/stable/install.html
Ini mudah diatur dan tidak memerlukan penyesuaian tambahan.
Saya memeriksa berbagai alat tetapi ternyata alat itu sangat bagus dan mudah.
mitmproxy
sebelumnya. Tapi sejauh yang saya bisa lihat, ini khusus HTTP. Tapi pertanyaan OP bukan.
Anda dapat memantau lalu lintas jaringan dari Android Studio. Buka Android Monitor dan buka tab Jaringan.
http://developer.android.com/tools/debugging/ddms.html
PEMBARUAN: ⚠️ Android Device Monitor tidak lagi digunakan di Android Studio 3.1. Lihat selengkapnya di https://developer.android.com/studio/profile/monitor
Saya sarankan Anda menggunakan Wireshark .
Langkah:
- Pasang Wireshark.
- Pilih koneksi jaringan yang Anda gunakan untuk panggilan (misalnya, pilih Wifi jika Anda menggunakannya)
- Akan ada banyak permintaan dan tanggapan, tutup aplikasi tambahan.
- Biasanya permintaan berwarna hijau, setelah Anda melihat permintaan Anda, salin alamat tujuan dan gunakan filter di atas dengan mengetik
ip.dst==52.187.182.185
dengan memasukkan alamat tujuan.
Anda dapat menggunakan teknik pemfilteran lain yang disebutkan di sini untuk mendapatkan lalu lintas tertentu.