Android 에뮬레이터 : 네트워크 트래픽을 모니터링하는 방법은 무엇입니까?


답변:


104

Android 에뮬레이터에서 직접 네트워크 트래픽을 캡처하는 방법에는 두 가지가 있습니다 .

  1. 에뮬레이터에서 ARM 호환 tcpdump 바이너리 를 복사하고 실행하여 출력을 SD 카드에 기록합니다 (예 :) tcpdump -s0 -w /sdcard/emulator.cap.

  2. 실행 emulator -tcpdump emulator.cap -avd my_avd하여 모든 에뮬레이터의 트래픽을 PC의 로컬 파일에 씁니다.

두 경우 모두 tcpdump 또는 Wireshark를 사용하여 pcap 파일을 정상적으로 분석 할 수 있습니다.


그렇다면 실시간 / 온라인이 아닌가? 내 말은, 패킷은 마지막에만 분석 할 수 있다는 것입니까?
fikr4n

첫 번째 경우에는 파일에 쓰는 대신 장치에서 stdout을 통해 분석 할 수 있습니다. 두 번째 경우에는 작성된 파일을 스트리밍 / 테일 할 수 있습니다. 또는 에뮬레이터가 아닌 호스트 시스템에서 네트워크 트래픽을 캡처 할 수 있습니다.
Christopher Orr

이미 사용하는 에뮬레이터에 tcpdump가 설치되어 있으며 명령 # 1은 설치하지 않고도 작동합니다. "adb -e shell tcpdump -s0 -w /sdcard/emulator.cap"을 사용하여 실행할 수도 있습니다.
Les

2
두 번째 솔루션을 사용 중이고The -tcpdump flag is not supported in QEMU2 yet and will be ignored. 경고 가 표시되면 다음과 같이 명령에 -engine classic 을 추가 하십시오 emulator -tcpdump emulator.cap -avd my_avd -engine classic. 이렇게하면 더 이상 사용되지 않는 에뮬레이터 엔진이 강제 실행되지만 문제가 해결 될 때까지 작동합니다.
lagoman

어디에 avd있습니까?
user3806649

20

http 프록시를 사용하여 에뮬레이터의 http 요청을 모니터링 할 수도 있습니다. -http-proxy새 에뮬레이터를 시작할 때 플래그 를 전달 하여 Android 트래픽을 모니터링하도록 프록시 (예 : burp )를 설정할 수 있습니다 . 사용 예 ./emulator -http-proxy localhost:8080 -avd android2.2. 내 예에서는 Burp를 사용하고 있으며 수신 포트 8080입니다. 자세한 정보는 여기 에서 찾을 수 있습니다 .


2
https 트래픽은
어떻습니까


6

Android Studio의 현재 릴리스는 -tcpdump인수를 올바르게 적용하지 않았습니다 . 다음과 같이 관련 매개 변수를 qemu에 전달하여 덤프를 캡처 할 수있었습니다.

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd

5

예, wireshark가 작동합니다.

동일한 src IP에서 오는 것이므로 에뮬레이터 트래픽 만 필터링하는 쉬운 방법은 없다고 생각합니다.

아마도 가장 좋은 방법은 VMware 환경을 설정하고 거기에서 에뮬레이터 만 실행하는 것입니다. 적어도 백그라운드 트래픽이 너무 많지 않을 것입니다.


좋은 제안이지만 VM 위에서 에뮬레이터를 실행하는 것은 어렵습니다. 작동하도록 하셨나요?
MikeSchem dec.

어떤 문제에 직면 했습니까? 직접 해본 적은 없지만 문제가있을 거라고는 상상할 수 없습니다.
Bitdivision dec

제 경우에는 전송 된 요청이 녹색으로 표시되었고 다른 브라우저를 종료 한 다음 달콤한 녹색 행을 발견 할 수있었습니다. 요청을 찾으면 대상 주소를 복사하고 u는 ip.dst == "복사 한 IP 주소"를 입력하고 관련 요청 만 확인하여 필터에서 사용할 수 있습니다.
Ritveak


4

이제 Wireshark를 직접 사용하여 Android 에뮬레이터 트래픽을 캡처 할 수 있습니다. 있습니다 extcap 라는 플러그인 androiddump 가능하게한다. tcpdump에뮬레이터에서 실행되는 시스템 이미지에 실행 파일 이 있어야하며 (최신 이미지에는 API 24 및 API 27 이미지로 테스트 됨) adbd호스트에서 루트로 실행 (을 실행하면됩니다 adb root). Wireshark에서 사용 가능한 인터페이스 목록 (Qt 버전 만 해당, 더 이상 사용되지 않는 GTK +에는 없음) 또는 함께 표시된 목록에 tshark -DBluetooth, Logcat 또는 Wifi 트래픽을 스니핑 할 수있는 여러 Android 인터페이스가 있어야합니다. 예 :

android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)



2

http://docs.mitmproxy.org/en/stable/install.html 을 사용할 수 있습니다.

설정이 쉽고 추가 조정이 필요하지 않습니다.

나는 다양한 도구를 살펴 보았지만 그것이 정말 좋고 쉽다는 것을 알았습니다.


나는 mitmproxy전에 모른다 . 그러나 내가 볼 수있는 한, 그것은 HTTP에 특정한 것입니다. 그러나 OP의 질문은 아닙니다.
Siu Ching Pong -Asuka Kenji- 2017

1
새로운 Android Studio 3.0은 프로파일 러를 제공하므로 사용할 수 있습니다. 그리고 mitm의 경우 모든 종류의 프로토콜, http, https 등을 제공합니다. 프록시를 올바르게 구성하기 만하면됩니다.
Dhiraj Himani

내가 개발하지 않은 앱에서 패킷을 캡처 할 수 있습니까? 그리고 Nox App Player와 같은 타사 에뮬레이터에서? 감사!
Siu Ching Pong -Asuka Kenji- 2017

1
예, mitm 자체에서 제공하는 에뮬레이터 / 장치에 mitm 인증서가 설치되어 있어야하며이를 사용하여 진행중인 요청과 해당 응답을 볼 수 있습니다.
Dhiraj Himani 2011

2

Android Studio에서 네트워크 트래픽을 모니터링 할 수 있습니다. Android Monitor로 이동하여 네트워크 탭을 엽니 다.

http://developer.android.com/tools/debugging/ddms.html

업데이트 : ⚠️ Android Device Monitor는 Android Studio 3.1에서 더 이상 사용되지 않습니다. https://developer.android.com/studio/profile/monitor 에서 자세히보기


5
링크의 이미지와 같이 android studio 1.5 (windows)에서 세부 네트워크 사용 탭을 열 위치에서 알 수 있습니까? 그래프 만 표시되지만 세부 정보는 표시되지 않습니까?
Shreyans jain

이 옵션은 제한된 통찰력을 제공합니다. Android가이 요청에 대해 아무 말도하지 않았기 때문에 요청이 거부 된 이유를 알고 싶은 문제를 해결할 수 없었습니다. Fiddler가 여기에 더 적합합니다.
Highriser

2

Wireshark 를 사용하는 것이 좋습니다 .

단계 :

  1. Wireshark를 설치합니다.
  2. 통화에 사용중인 네트워크 연결을 선택합니다 (예 : 사용중인 경우 Wi-Fi 선택).
  3. 많은 요청과 응답이있을 것이며 추가 응용 프로그램을 닫으십시오.
  4. 일반적으로 요청은 녹색으로 표시됩니다. 요청을 찾으면 대상 주소를 복사하고 대상 주소를 입력하여 맨 위에 필터를 사용합니다 ip.dst==52.187.182.185.

여기 에 언급 된 다른 필터링 기술을 사용 하여 특정 트래픽을 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.