#!/bin/bash

# Couleurs pour les messages en console
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # Pas de couleur

# Vérifie si l'outil nmap est installé
if ! command -v nmap &> /dev/null; then
    echo -e "${RED}❌ nmap n'est pas installé. Installez-le d'abord.${NC}"
    exit 1
fi

# Création d'un fichier Markdown avec la date courante
output_file="/home/tools/rapport_scan_ports_$(date +%Y-%m-%d).md"
temp_file="/tmp/nmap_scan_result.txt"

# Début du script avec message et emoji
echo -e "${YELLOW}🔍 Démarrage du scan complet des ports...${NC}"

# Ajout du titre et des en-têtes de tableau dans le fichier Markdown
echo "# Rapport de Scan Complet des Ports - $(date +%Y-%m-%d)" > "$output_file"
echo "" >> "$output_file"
echo "| Port | Service | Statut |" >> "$output_file"
echo "|------|---------|--------|" >> "$output_file"

# Affiche une barre de progression simulée
function progress_bar {
    for i in {1..10}; do
        echo -ne "${YELLOW}⏳ Progression : $((i * 10))% \r${NC}"
        sleep 0.3
    done
    echo -ne '\n'
}

progress_bar

# Exécution du scan de tous les ports avec Nmap sans détection de version, enregistrement dans un fichier temporaire
nmap -sS -p- localhost > "$temp_file"

# Vérification si le fichier temporaire a bien été créé et contient des données
if [[ ! -s "$temp_file" ]]; then
    echo -e "${RED}❌ Erreur : Aucun résultat trouvé. Le scan nmap n'a pas produit de sortie.${NC}"
    exit 1
fi

# Lecture et analyse du fichier temporaire ligne par ligne
while read -r line; do
    echo -e "${YELLOW}🔹 Ligne lue : $line${NC}"  # Message de débogage

    # Filtre des lignes correspondant aux ports ouverts et extraction des informations
    if [[ $line =~ ^[0-9]+/tcp ]]; then
        port=$(echo "$line" | awk '{print $1}')
        status=$(echo "$line" | awk '{print $2}')
        service=$(echo "$line" | awk '{print $3}')

        # Ajout des informations au fichier Markdown
        echo "| $port | $service | $status |" >> "$output_file"
    fi
done < "$temp_file"

# Suppression du fichier temporaire
rm "$temp_file"

# Confirmation de la création du fichier
if [[ -f "$output_file" ]]; then
    echo -e "${GREEN}✅ Scan terminé. Rapport sauvegardé dans :${NC} $output_file"
else
    echo -e "${RED}❌ Erreur : Impossible de créer le rapport.$NC"
fi
