220 lines
7.7 KiB
Bash
Executable File
220 lines
7.7 KiB
Bash
Executable File
#!/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
|