Trình giả lập Android: Làm thế nào để giám sát lưu lượng mạng?


Câu trả lời:


104

Có hai cách để nắm bắt lưu lượng mạng trực tiếp từ trình giả lập Android:

  1. Sao chép và chạy tệp nhị phân tcpdump tương thích ARM trên trình giả lập, ghi đầu ra vào thẻ SD, có lẽ (ví dụ tcpdump -s0 -w /sdcard/emulator.cap).

  2. Chạy emulator -tcpdump emulator.cap -avd my_avdđể ghi tất cả lưu lượng của trình giả lập vào một tệp cục bộ trên PC của bạn

Trong cả hai trường hợp, sau đó bạn có thể phân tích tệp pcap với tcpdump hoặc Wireshark như bình thường.


Vì vậy, nó không phải là thời gian thực / trực tuyến? Ý tôi là, các gói chỉ có thể được phân tích ở cuối?
fikr4n

Trong trường hợp đầu tiên, bạn có thể phân tích thông qua thiết bị xuất chuẩn trên thiết bị thay vì ghi vào tệp. Trong trường hợp thứ hai, bạn có thể truyền phát / cắt đuôi tệp như được viết. Hoặc bạn có thể chụp lưu lượng mạng trên máy chủ, thay vì trên trình giả lập.
Christopher Orr

Tôi đã tìm thấy các trình giả lập mà tôi sử dụng hiện đã cài đặt tcpdump và lệnh # 1 hoạt động mà không cần cài đặt. Bạn cũng có thể chạy nó với "adb -e shell tcpdump -s0 -w /sdcard/emulator.cap".
Les

2
Nếu bạn đang sử dụng giải pháp thứ 2 và bạn đang nhận được The -tcpdump flag is not supported in QEMU2 yet and will be ignored.cảnh báo, hãy thêm -engine classic vào lệnh của bạn như thế này : emulator -tcpdump emulator.cap -avd my_avd -engine classic. Điều này sẽ buộc động cơ giả lập không dùng nữa, nhưng sẽ hoạt động cho đến khi chúng khắc phục được sự cố.
lagoman

nơi avdđược đặt ở đâu?
3806649

20

Cũng có thể sử dụng http proxy để theo dõi các yêu cầu http từ trình giả lập. Bạn có thể truyền -http-proxycờ khi bắt đầu trình giả lập mới để đặt proxy (Ví dụ ) để theo dõi lưu lượng truy cập Android. Ví dụ sử dụng ./emulator -http-proxy localhost:8080 -avd android2.2. Lưu ý rằng trong ví dụ của tôi, tôi đang sử dụng Burp và nó đang nghe cổng 8080. Thông tin thêm có thể được tìm thấy ở đây .


2
Điều gì về lưu lượng https
pee2pee

10

Đối với OS X, bạn có thể sử dụng Charles , thật đơn giản và dễ sử dụng.

Để biết thêm thông tin, vui lòng xem qua Trình giả lập Android và bài đăng trên blog Charles Proxy .


1
Tôi không biết Charlestrước đây. Nhưng theo như tôi có thể thấy, nó là dành riêng cho HTTP. Nhưng câu hỏi của OP thì không.
Siu Ching Pong -Asuka Kenji-

Charles cũng tồn tại cho Linux, tôi đã cài đặt nó trên Ubuntu 18.04
Marecky

6

Một bản phát hành hiện tại của Android Studio đã không áp dụng chính xác -tcpdumpđối số. Tôi vẫn có thể chụp một bãi chứa bằng cách chuyển tham số liên quan đến qemu như sau:

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

5

Vâng, wireshark sẽ làm việc.

Tôi không nghĩ có bất kỳ cách dễ dàng nào để lọc lưu lượng giả lập duy nhất, vì nó đến từ cùng một src IP.

Có lẽ cách tốt nhất là thiết lập một môi trường VMware rất đơn giản và chỉ chạy trình giả lập trong đó, ít nhất là theo cách đó sẽ không có quá nhiều lưu lượng nền.


Đề xuất tốt, nhưng thật khó để có một trình giả lập chạy trên máy ảo. Bạn đã nhận được điều này để làm việc?
MikeSool

Những vấn đề bạn đã chạy vào? Tôi đã không làm điều đó một mình, nhưng tôi không thể tưởng tượng sẽ có bất kỳ vấn đề.
Bitdivision

Trong trường hợp của tôi, các yêu cầu được gửi có màu xanh lá cây, tất cả những gì tôi đã làm là tắt các trình duyệt khác và tôi có thể phát hiện ra các hàng xanh ngọt ngào. Khi bạn phát hiện ra yêu cầu, hãy sao chép địa chỉ đích và sau đó bạn có thể sử dụng nó trong bộ lọc bằng cách đặt ip.dst == "địa chỉ ip mà bạn đã sao chép" và chỉ nhìn thấy các yêu cầu có liên quan.
Ritveak


4

Bây giờ có thể sử dụng Wireshark trực tiếp để nắm bắt lưu lượng giả lập Android. Có một extcap plugin gọi là androiddump mà làm cho nó có thể. Bạn cần phải có một tcpdumptệp thực thi trong hình ảnh hệ thống đang chạy trên trình giả lập (hầu hết các hình ảnh hiện tại đều có nó, được thử nghiệm với hình ảnh API 24 và API 27) và adbdchạy bằng root trên máy chủ (chỉ cần chạy adb root). Trong danh sách các giao diện khả dụng trong Wireshark (chỉ phiên bản Qt, GTK + không dùng nữa) hoặc danh sách hiển thị tshark -Dcó một số giao diện Android cho phép đánh hơi lưu lượng Bluetooth, Logcat hoặc Wifi, ví dụ:

android-wifi-tcpdump-giả lập-5554 (Android WiFi Android_SDK_built_for_x86 trình giả lập-5554)



2

Bạn có thể sử dụng http://docs.mitmproxy.org/en/urdy/install.html

Thật dễ dàng để thiết lập và sẽ không yêu cầu bất kỳ điều chỉnh thêm.

Tôi đi qua các công cụ khác nhau nhưng thấy nó thực sự tốt và dễ dàng.


Tôi không biết mitmproxytrước đây. Nhưng theo như tôi có thể thấy, nó là dành riêng cho HTTP. Nhưng câu hỏi của OP thì không.
Siu Ching Pong -Asuka Kenji-

1
Android Studio 3.0 mới cung cấp hồ sơ, bạn có thể sử dụng nó. Và đối với mitm, nó cung cấp tất cả các loại giao thức, http, https, v.v. Bạn chỉ cần cấu hình proxy chính xác.
Dhiraj Himani

Có sẵn để chụp các gói từ các ứng dụng không do tôi phát triển không? Và trên trình giả lập bên thứ 3 như Nox App Player? Cảm ơn!
Siu Ching Pong -Asuka Kenji-

1
Có, bạn nên cài đặt chứng chỉ mitm trên trình giả lập / thiết bị của mình, được cung cấp bởi chính mitm và bạn có thể sử dụng chứng chỉ này để xem yêu cầu đang diễn ra và các phản hồi tương ứng.
Dhiraj Himani

2

Bạn có thể theo dõi lưu lượng mạng từ Android Studio. Chuyển đến Màn hình Android và mở tab Mạng.

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

CẬP NHẬT: Màn hình thiết bị Android không được dùng trong Android Studio 3.1. Xem thêm trong https://developer.android.com/studio/profile/monitor


5
Bạn có thể cho biết từ đâu để mở tab sử dụng mạng chi tiết trong android studio 1.5 (windows) như được hiển thị trong hình ảnh trong liên kết, tôi chỉ nhận được một biểu đồ chứ không phải chi tiết?
Shreyans

Hãy lưu ý rằng tùy chọn này cung cấp cái nhìn sâu sắc hạn chế. Tôi không thể giải quyết vấn đề của mình khi tôi muốn tìm hiểu lý do tại sao yêu cầu bị từ chối, vì Android không cho tôi biết bất cứ điều gì về yêu cầu này. Fiddler phù hợp hơn ở đây.
Highriser

2

Tôi sẽ đề nghị bạn sử dụng Wireshark .

Các bước:

  1. Cài đặt Wireshark.
  2. Chọn kết nối mạng mà bạn đang sử dụng cho các cuộc gọi (ví dụ: chọn Wifi nếu bạn đang sử dụng nó)
  3. Sẽ có nhiều yêu cầu và phản hồi, đóng các ứng dụng bổ sung.
  4. Thông thường các yêu cầu có màu xanh lục, khi bạn phát hiện ra yêu cầu của mình, hãy sao chép địa chỉ đích và sử dụng bộ lọc trên đầu bằng cách nhập ip.dst==52.187.182.185bằng cách đặt địa chỉ đích.

Bạn có thể sử dụng các kỹ thuật lọc khác được đề cập ở đây để có lưu lượng truy cập cụ thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.