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¶
- Identifier le snapshot sain :
/antinuke statuspuis vérifier les counts (chans, roles) avant l'attaque. - Comparer :
/antinuke diff <id>liste ce qui manque vs le snapshot. - Restaurer :
/antinuke restore <id>recrée tout. - Re-attribuer les rôles aux membres concernés (manuel).
- Re-poster les annonces importantes (règlement, panel tickets, etc.)
via les commandes
/post_reglement,/setup_tickets, etc. - 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.