Làm cách nào để theo dõi lưu lượng truy cập mạng được gửi và nhận từ trình giả lập Android của tôi?
Làm cách nào để theo dõi lưu lượng truy cập mạng được gửi và nhận từ trình giả lập Android của tôi?
Câu trả lời:
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:
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
).
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.
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ố.
avd
được đặt ở đâu?
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-proxy
cờ 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 .
Đố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 .
Charles
trướ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.
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.
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 tcpdump
tệ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à adbd
chạ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 -D
có 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)
Bạn có thể bắt đầu trình giả lập bằng lệnh -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Tôi đã sử dụng Trình phân tích HTTP, nhưng nó sẽ hoạt động cho mọi thứ khác. Thông tin chi tiết có thể được tìm thấy ở đây:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
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.
mitmproxy
trướ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.
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
Tôi sẽ đề nghị bạn sử dụng Wireshark .
Các bước:
- Cài đặt Wireshark.
- 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ó)
- Sẽ có nhiều yêu cầu và phản hồi, đóng các ứng dụng bổ sung.
- 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.185
bằ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ể.