Files
god_eye_android/monitor_network.sh
2025-10-06 09:40:51 +09:00

220 lines
7.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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