#!/bin/bash # GodEye Network Traffic Monitor # Скрипт для отслеживания сетевого трафика Android приложения echo "🔍 GodEye Network Traffic Monitor" echo "==================================" # Исправленная проверка подключения устройства # Проверяем все подключенные устройства echo "📱 Поиск устройств Android..." DEVICES=($(adb devices | grep -w "device" | awk '{print $1}')) if [ ${#DEVICES[@]} -eq 0 ]; then echo "❌ Устройства Android не найдены!" echo "Убедитесь что:" echo "1. Устройство подключено по USB" echo "2. Включена отладка по USB" echo "3. Разрешена отладка для этого компьютера" exit 1 elif [ ${#DEVICES[@]} -eq 1 ]; then DEVICE=${DEVICES[0]} echo "📱 Найдено устройство: $DEVICE" else echo "📱 Найдено несколько устройств:" for i in "${!DEVICES[@]}"; do echo "$((i+1))) ${DEVICES[$i]}" done # Проверяем есть ли LG G6 LG_G6="LGMG600S9b4da66b" if [[ " ${DEVICES[@]} " =~ " ${LG_G6} " ]]; then DEVICE=$LG_G6 echo "🎯 Автоматически выбран LG G6: $DEVICE" else read -p "Выберите устройство (1-${#DEVICES[@]}): " choice if [[ $choice -ge 1 && $choice -le ${#DEVICES[@]} ]]; then DEVICE=${DEVICES[$((choice-1))]} echo "✅ Выбрано устройство: $DEVICE" else echo "❌ Неверный выбор!" exit 1 fi fi fi # Функция для выполнения adb команд с указанием конкретного устройства adb_cmd() { adb -s "$DEVICE" "$@" } # Функция для отслеживания логов приложения monitor_app_logs() { echo "" echo "📋 Мониторинг логов приложения GodEye..." echo "Фильтр: WebRTC, Network, Connection" echo "Нажмите Ctrl+C для остановки" echo "----------------------------------------" adb_cmd logcat -c # Очищаем логи adb_cmd logcat | grep -E "(WEBRTC|WebRTC|GodEye|Network|Connection)" --color=always } # Функция для отслеживания сетевых соединений monitor_network_connections() { echo "" echo "🌐 Мониторинг сетевых соединений..." echo "Поиск активных UDP/TCP соединений от GodEye" echo "----------------------------------------" # Получаем PID приложения GodEye APP_PID=$(adb_cmd shell ps | grep com.example.godeye | awk '{print $2}' | head -1) if [ -z "$APP_PID" ]; then echo "❌ Приложение GodEye не запущено!" return 1 fi echo "🎯 PID приложения GodEye: $APP_PID" echo "" while true; do echo "$(date '+%H:%M:%S') - Активные соединения:" adb_cmd shell netstat | grep $APP_PID | while read line; do echo " 📡 $line" done echo "" sleep 5 done } # Функция для анализа трафика через tcpdump (требует root) monitor_packet_capture() { echo "" echo "📦 Захват пакетов (требует root)..." echo "Попытка захвата UDP трафика на порты WebRTC" echo "----------------------------------------" # Проверяем root доступ ROOT_CHECK=$(adb_cmd shell su -c "echo test" 2>/dev/null) if [ "$ROOT_CHECK" != "test" ]; then echo "❌ Root доступ недоступен. Пропускаем захват пакетов." return 1 fi echo "✅ Root доступ получен" echo "Захватываем UDP трафик (порты 1024-65535)..." # Захватываем UDP пакеты adb_cmd shell su -c "tcpdump -i any -n udp and portrange 1024-65535" | \ while read line; do # Фильтруем только интересные пакеты if echo "$line" | grep -E "(STUN|RTP|DTLS)" > /dev/null; then echo "🚀 WebRTC: $line" elif echo "$line" | grep -E "([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)" > /dev/null; then echo "📡 UDP: $line" fi done } # Функция для мониторинга использования сети приложением monitor_data_usage() { echo "" echo "📊 Мониторинг использования данных..." echo "Отслеживание трафика приложения GodEye" echo "----------------------------------------" # Получаем UID приложения (исправленная переменная) local APP_UID=$(adb_cmd shell dumpsys package com.example.godeye | grep "userId=" | head -1 | sed 's/.*userId=\([0-9]*\).*/\1/') if [ -z "$APP_UID" ]; then echo "❌ Не удалось получить UID приложения!" echo "Проверяем установленные пакеты..." adb_cmd shell pm list packages | grep godeye return 1 fi echo "🆔 UID приложения: $APP_UID" echo "" # Мониторим использование сети while true; do echo "$(date '+%H:%M:%S') - Статистика сети:" # Получаем статистику из /proc/net/xt_qtaguid/stats STATS=$(adb_cmd shell cat /proc/net/xt_qtaguid/stats 2>/dev/null | grep " $APP_UID ") if [ ! -z "$STATS" ]; then echo "$STATS" | while read line; do # Парсим статистику RX_BYTES=$(echo $line | awk '{print $6}') TX_BYTES=$(echo $line | awk '{print $8}') if [ "$RX_BYTES" -gt 0 ] || [ "$TX_BYTES" -gt 0 ]; then echo " 📥 Получено: $(format_bytes $RX_BYTES)" echo " 📤 Отправлено: $(format_bytes $TX_BYTES)" fi done else echo " ℹ️ Сетевая активность не обнаружена" fi echo "" sleep 3 done } # Функция форматирования байтов format_bytes() { local bytes=$1 if [ $bytes -lt 1024 ]; then echo "${bytes} B" elif [ $bytes -lt $((1024*1024)) ]; then echo "$((bytes/1024)) KB" elif [ $bytes -lt $((1024*1024*1024)) ]; then echo "$((bytes/1024/1024)) MB" else echo "$((bytes/1024/1024/1024)) GB" fi } # Главное меню echo "" echo "Выберите режим мониторинга:" echo "1) 📋 Логи приложения (WebRTC/Network)" echo "2) 🌐 Сетевые соединения" echo "3) 📦 Захват пакетов (root)" echo "4) 📊 Использование данных" echo "5) 🔄 Все режимы одновременно" echo "" read -p "Введите номер (1-5): " choice case $choice in 1) monitor_app_logs ;; 2) monitor_network_connections ;; 3) monitor_packet_capture ;; 4) monitor_data_usage ;; 5) echo "🚀 Запуск всех мониторов..." echo "Откройте дополнительные терминалы для других режимов" monitor_app_logs & monitor_network_connections & monitor_data_usage & wait ;; *) echo "❌ Неверный выбор!" exit 1 ;; esac