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.