Мониторинг сетевой активности в телефонах Android - PullRequest
59 голосов
/ 25 февраля 2011

Я хотел бы отслеживать сетевой трафик моего телефона Android. Я думал об использовании tcpdump для Android, но я не уверен, придется ли мне кросс-компилировать для телефона.

Другой вопрос заключается в следующем: если я хочу отслеживать данные трафика для определенного приложения, есть какая-нибудь команда для этого?

Ответы [ 11 ]

25 голосов
/ 28 февраля 2011

TCPDUMP - это один из моих любимых инструментов для анализа сети, но если вам трудно перекрестно скомпилировать tcpdump для Android, я рекомендую вам использовать некоторые приложения из маркета.Я говорил о:

  • Акула: это небольшая версия wireshark для телефонов Android).Эта программа создаст * .pcap, и вы сможете читать файл на ПК с помощью wireshark.
  • Shark Reader: эта программа позволяет вам читать * .pcap прямо в вашем телефоне Android.

    Приложение Shark работает с рутированными устройствами, поэтому, если вы хотите установить его, убедитесь, что у вас уже есть рутированное устройство.

    Удачи;)

16 голосов
/ 25 февраля 2011

Если вы делаете это из эмулятора, вы можете сделать это так:

Запустите emulator -tcpdump emulator.cap -avd my_avd, чтобы записать весь трафик эмулятора в локальный файл на вашем ПК, а затем открыть его в wireshark

Есть похожий пост, который может помочь ЗДЕСЬ

7 голосов
/ 28 февраля 2011

Примечание. Для tcpdump требуются права суперпользователя, поэтому вам придется рутировать свой телефон, если это еще не сделано.Вот ARM двоичный файл tcpdump (это работает для моего Samsung Captivate).Если вы предпочитаете создавать свой собственный бинарный файл, инструкции: здесь (да, вам, вероятно, потребуется перекрестная компиляция).

Кроме того, проверьте Shark For Root (инструмент захвата пакетов Android, основанный на tcpdump).

Я не верю, что tcpdump может отслеживать трафик по определенному идентификатору процесса.Strace метод , на который ссылается Крис Страттон, кажется больше усилий, чем стоит.Было бы проще отслеживать конкретные IP-адреса и порты, используемые целевым процессом.Если эта информация неизвестна, перехватите весь трафик в течение периода активности процесса, а затем просмотрите полученный пакет с помощью Wireshark.

3 голосов
/ 04 июля 2013

Инструмент DDMS, включенный в Android SDK, включает в себя инструмент для мониторинга сетевого трафика.Он не предоставляет подробности, которые вы получаете от tcpdump и подобных низкоуровневых инструментов, но все же очень полезен.

Официальная документация: http://developer.android.com/tools/debugging/ddms.html#network

2 голосов
/ 10 ноября 2015

Без рута вы можете использовать отладочные прокси, такие как Charlesproxy & Co.

2 голосов
/ 24 апреля 2015

Для телефонов Android (без рута): - вы можете использовать это приложение tPacketCapture , которое позволит захватывать трафик сети для вашего устройства при включении захвата.См. этот URL для получения дополнительной информации о перехвате сети без рутирования вашего устройства.

Получив файл в формате .pcap, вы можете использовать этот файл и анализировать трафик, используя любой трафик.анализатор, как Wireshark.

Также смотрите этот пост для дальнейших идей о Захват трафика мобильного телефона на Wireshark

2 голосов
/ 25 февраля 2011

Вам потребуется получить root права на телефон и выполнить кросс-компиляцию tcpdump или использовать чужую уже скомпилированную версию.

Возможно, вам будет проще проводить эти эксперименты с эмулятором, в этом случае вы можете осуществлять мониторинг изхостинг ПК.Если вам нужно использовать реальное устройство, другим вариантом будет поставить его в сеть Wi-Fi, висящую на дополнительном интерфейсе на linux-боксе с запущенным tcpdump.

Не знаю, как мне это нравитсявы бы пошли на фильтрацию по конкретному процессу.Одно из предложений, которое я нашел в некоторых быстрых поисках, - это использовать strace в предметном процессе вместо tcpdump в системе.

1 голос
/ 18 января 2019

Предварительные условия: adb и wireshark установлены на вашем компьютере, и у вас есть рутированное устройство Android.

  1. Загрузка tcpdump в ~ / Загрузки
  2. adb push ~/Downloads/tcpdump /sdcard/
  3. adb shell
  4. su root
  5. mv /sdcard/tcpdump /data/local/
  6. cd /data/local/
  7. chmod +x tcpdump
  8. ./tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap
  9. exit
  10. exit
  11. adb pull /sdcard/dump.pcap ~/Downloads/

Теперь вы можете открыть файл pcap с помощью Wireshark.

Что касается вашего вопроса о мониторинге конкретных процессов, найдите идентификатор пакета вашего приложения, назовем его com.android.myapp

  1. ps | grep com.android.myapp
  2. скопировать первое число, которое вы видите из вывода. Давайте назовем это 1234. Если вы не видите вывод, вам нужно запустить приложение.
  3. Загрузите strace в ~ / Загрузки и поместите в /data/local, используя то же самое, что вы сделали для tcpdump выше.
  4. cd /data/local
  5. ./strace -p 1234 -f -e trace=network -o /sdcard/strace.txt

Теперь вы можете посмотреть на strace.txt для IP-адресов и отфильтровать ваш журнал wireshark для этих IP-адресов.

1 голос
/ 08 апреля 2017

Попробуйте это приложение https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture

Мы можем просматривать все сетевые коммуникации ... даже сообщения с шифрованием SSL.

1 голос
/ 10 февраля 2016

Packet Capture - лучший инструмент для отслеживания сетевых данных на андроиде.Не нужно никакого корневого доступа, легко читать и сохранять звонки в зависимости от приложения.Проверьте это из

...