#!/bin/bash
# Extrait les IPs qui ont fait des requêtes sur /statistics avec le total cumulé

LOG_FILE="${1:-xbt_abuse.log}"
OUTPUT_FILE="stats_attackers.txt"

echo "=== Extraction des IPs attaquant /statistics ===" 
echo "Source: $LOG_FILE"
echo ""

# Compter le nombre TOTAL d'entrées de log par IP (cumulé depuis le début)
grep -E "(statistics|GET /stats)" "$LOG_FILE" | \
    grep -oP 'IP: \K[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | \
    sort | uniq -c | sort -rn | \
    awk '{print $1, $2}' > "$OUTPUT_FILE"

echo "IP avec nombre total de requêtes loggées :"
echo "==========================================="
printf "%-12s %s\n" "TOTAL_REQ" "IP"
echo "-------------------------------------------"
while read -r count ip; do
    printf "%-12s %s\n" "$count" "$ip"
done < "$OUTPUT_FILE"

echo ""
echo "Total: $(wc -l < "$OUTPUT_FILE") IPs"
echo "Sauvegardé dans: $OUTPUT_FILE"
echo ""

# Générer les commandes iptables pour les pires attaquants (>100 entrées)
echo "=== Commandes iptables (IPs > 100 entrées) ===" 
while read -r count ip; do
    if [ "$count" -gt 100 ]; then
        echo "iptables -A INPUT -s $ip -j DROP  # $count entrées log"
    fi
done < "$OUTPUT_FILE"

echo ""
echo "=== Commande pour bannir toutes les IPs ===" 
echo "awk '{print \$2}' $OUTPUT_FILE | while read ip; do iptables -A INPUT -s \$ip -j DROP; done"
