Aller au contenu

Anti-nuke (rollback)

Discord ne propose pas nativement de restaurer des salons ou rôles supprimés. Octavius garde un historique de snapshots horodatés et permet de recréer en 1 commande les éléments disparus.

Plus que de la prévention — on répare aussi

Les autres bots anti-nuke du marché font de la prévention : ils alertent ou bloquent au moment de l'attaque. Octavius va plus loin avec prévention + réparation : si une vague de suppressions passe à travers les filets (compromission admin légitime, exploit zero-day, bug Discord), /antinuke restore recrée en 1 commande tout ce qui a disparu depuis le dernier snapshot. C'est ce qui sauve la mise quand le mal est déjà fait.

Commandes

Commande Description Permission
/antinuke status Liste les 10 derniers snapshots Manage Server
/antinuke diff <snapshot_id> Channels/rôles disparus depuis ce snapshot Manage Server
/antinuke restore <snapshot_id> [channels=true] [roles=true] Recrée les éléments manquants Manage Server
/antinuke capture Force un snapshot maintenant (bypass throttle) Manage Server

snapshot_id = petit nombre

Les snapshot_id sont des entiers BIGSERIAL (1, 2, 3...). Pas des IDs Discord (snowflakes 19 chiffres). Utilise /antinuke status pour voir les IDs réels.

Rétention par plan

Plan Rétention identifiante
🆓 Free 12 heures
🥉 Bronze 24 heures
🥈 Silver 48 heures
🥇 Gold 72 heures

Au-delà, les snapshots sont supprimés (économie d'espace). Toujours 24 snapshots max par serveur au global (1/heure × 24h).

Quand Octavius prend un snapshot

Événement Snapshot pris ?
Démarrage du bot (on_ready)
Ajout à un nouveau serveur ✅ (force=True, bypass throttle)
Update structurel (channel create / update, role create / update) ✅ throttlé (1/heure)
Suppression d'un channel ✅ (reason='on_destructive')
Suppression d'un rôle ✅ (reason='on_destructive')
Manuel via /antinuke capture ✅ (force=True)

Limitations de la restauration

Discord ne permet pas de "restaurer un channel exact" — l'ID est perdu définitivement. Quand on fait /antinuke restore, on recrée un nouveau channel avec :

  • ✅ Même nom
  • ✅ Même type (text/voice/category)
  • ✅ Même category parent (si elle existe encore ou a été recréée dans la même opération)
  • Pas les messages (Discord ne les expose plus après delete)
  • Pas les permissions overrides custom (complexe à serializer)

Pour les rôles :

  • ✅ Même nom + couleur + permissions standard + hoist + mentionable
  • Pas les membres assignés (à re-attribuer à la main)

Workflow recommandé après une attaque

  1. Identifier le snapshot sain : /antinuke status puis vérifier les counts (chans, roles) avant l'attaque.
  2. Comparer : /antinuke diff <id> liste ce qui manque vs le snapshot.
  3. Restaurer : /antinuke restore <id> recrée tout.
  4. Re-attribuer les rôles aux membres concernés (manuel).
  5. Re-poster les annonces importantes (règlement, panel tickets, etc.) via les commandes /post_reglement, /setup_tickets, etc.
  6. Bannir l'attaquant + révoquer ses sessions Discord.

Sécuriser après l'attaque

Une fois restauré, change tous les mots de passe des admins compromis, révoque les bots tiers suspects, et active le 2FA Discord sur tous les rôles à pouvoir.