Мониторинг сетевой активности в телефонах Android

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

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

Ответ 1

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

Это приложения, о которых я говорил:

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

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

Удачи;)

Ответ 2

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

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

Существует аналогичная запись, которая может помочь ЗДЕСЬ

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

Ответ 10

Предварительные условия: на вашем компьютере установлены 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 в ~/Downloads и поместите в /data/local же, как вы делали это для tcpdump выше.
  4. cd/data/local
  5. ./strace -p 1234 -f -e trace=network -o/sdcard/strace.txt

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