#!/bin/bash

# Script : remove_perfctl.sh
# Description : Supprime toutes les traces du malware Perfctl, liste les fichiers binaires corrompus et affiche les processus réseau actifs.
# Auteur : Votre assistant convivial

echo "--------------------------------------------"
echo "🚀 Début du nettoyage du malware Perfctl 🚀"
echo "--------------------------------------------"
echo

# Fonction pour afficher un message amusant
fun_message() {
    echo "✨ $1 ✨"
}

# Fonction pour arrêter les processus malveillants
kill_malicious_processes() {
    fun_message "1. Arrêt des processus suspects..."
    processes=$(ps aux | grep -E 'perfcc|perfclean|perfctl|\.atmp' | grep -v grep)
    if [ -n "$processes" ]; then
        echo "$processes" | while read -r line; do
            pid=$(echo "$line" | awk '{print $2}')
            sudo kill -9 "$pid"
            echo "   [🛑] Processus PID $pid arrêté."
        done
    else
        echo "   Aucun processus suspect détecté."
    fi
    echo
}

# Fonction pour supprimer les fichiers et répertoires malveillants
remove_malicious_files() {
    fun_message "2. Suppression des fichiers et répertoires malveillants..."
    files=(
        "/root/.config/cron/perfcc"
        "/etc/cron.d/perfclean"
        "/etc/cron.daily/perfclean"
        "/etc/cron.hourly/perfclean"
        "/etc/cron.weekly/perfclean"
        "/etc/cron.monthly/perfclean"
        "/usr/bin/.atmp"
    )
    for file in "${files[@]}"; do
        if [ -e "$file" ]; then
            sudo rm -rf "$file"
            echo "   [🧹] Supprimé : $file"
        else
            echo "   [✔️] Non trouvé (déjà supprimé) : $file"
        fi
    done
    echo
}

# Fonction pour nettoyer le crontab de l'utilisateur root
clean_root_crontab() {
    fun_message "3. Nettoyage des tâches cron malveillantes..."
    cron_backup="/tmp/root_cron_backup_$(date +%s)"
    sudo crontab -l -u root > "$cron_backup"
    sudo crontab -l -u root | grep -v 'perfcc' | sudo crontab -u root -
    echo "   [💾] Sauvegarde du crontab original : $cron_backup"
    echo "   [🗑️] Tâches cron malveillantes supprimées du crontab de root."
    echo
}

# Fonction pour lister les fichiers binaires corrompus
list_corrupted_binaries() {
    fun_message "4. Recherche de fichiers binaires corrompus..."
    if ! command -v debsums >/dev/null 2>&1; then
        echo "   [🔍] Installation de 'debsums' pour vérifier l'intégrité des paquets..."
        sudo apt-get update && sudo apt-get install -y debsums
    fi
    echo "   [⏳] Analyse en cours, cela peut prendre un moment..."
    corrupted_files=$(sudo debsums -c)
    if [ -n "$corrupted_files" ]; then
        echo "   [❗] Fichiers binaires corrompus détectés :"
        echo "$corrupted_files"
    else
        echo "   [✔️] Aucun fichier binaire corrompu détecté."
    fi
    echo
}

# Fonction pour afficher les processus réseau actifs
list_network_processes() {
    fun_message "5. Liste des processus réseau actifs (lsof -i)..."
    sudo lsof -i
    echo
}

# Fonction finale avec un message amusant
final_message() {
    echo "--------------------------------------------"
    echo "🎉 Le nettoyage est terminé ! Votre système est plus propre qu'un sou neuf. 🎉"
    echo "N'oubliez pas de rester vigilant et de garder votre système à jour !"
    echo "--------------------------------------------"
}

# Exécution des fonctions
kill_malicious_processes
remove_malicious_files
clean_root_crontab
list_corrupted_binaries
list_network_processes
final_message
