Ban HWID RedM : ce qui tient, ce qui échoue, et comment bannir un joueur pour de bon
Un ban HWID RedM augmente le coût du retour, rien de plus. Identifiants, bans txAdmin, contournement de ban et comptes alternatifs : ce qui tient vraiment.
Vous avez banni un tricheur lundi. Mercredi, un joueur avec un autre pseudo, les mêmes habitudes et le même mod menu est de retour sur votre serveur. Un ban HWID RedM était censé empêcher exactement cela. Cet article explique pourquoi ce n’est souvent pas le cas, ce que chaque type de ban enregistre réellement, et ce que vous pouvez faire pour que le retour coûte quelque chose au joueur.
Nous éditons un anticheat, donc nous le disons d’emblée : aucun ban n’est définitif face à quelqu’un prêt à acheter un nouveau compte et un nouveau matériel. Le but est que cet achat vaille moins que votre serveur à ses yeux.
Les identifiants qu’un serveur RedM voit réellement
Quand un joueur se connecte, le serveur reçoit une liste d’identifiants, chacun préfixé par son type. La documentation Cfx.re de GetPlayerIdentifiers les liste :
licenseetlicense2: le hash de la licence Rockstar. Sur RedM, c’est celui sur lequel vous pouvez compter, car il est toujours présent.steam: présent seulement quand le joueur utilise Steam. Optionnel, donc vous ne pouvez pas le supposer.discord: l’identifiant d’utilisateur Discord. Sa présence n’est pas garantie, donc ne dépendez jamais de lui seul.fivem: l’identifiant de compte Cfx.re.ip: l’adresse d’où vient la connexion.
En plus des identifiants, FXServer expose des jetons matériels via GetNumPlayerTokens et GetPlayerToken. La référence des natives les décrit en une ligne : les jetons peuvent servir à renforcer la logique de bannissement, mais ils sont propres à un serveur. Cette seconde moitié compte, et nous y revenons plus bas.
AddEventHandler('playerConnecting', function(name)
local src = source
local ids = GetPlayerIdentifiers(src)
local tokens = {}
for i = 0, GetNumPlayerTokens(src) - 1 do
tokens[#tokens + 1] = GetPlayerToken(src, i)
end
print(('%s: %d identifiers, %d tokens'):format(name, #ids, #tokens))
end)Pourquoi un ban sur un seul identifiant échoue
Chaque identifiant a un prix différent pour le joueur :
L’IP se change gratuitement : un redémarrage de box sur certaines connexions, un VPN sur toutes. Elle est aussi réutilisée par des innocents, donc un ban par IP est celui qui risque le plus de toucher le mauvais joueur.
Discord se change gratuitement : créez un autre compte.
Steam coûte un peu : un autre compte.
La licence coûte un compte Rockstar et une copie du jeu.
Les jetons matériels coûtent une autre machine, ou un outil qui ment sur celle qu’on a.
Un ban écrit sur la seule licence est battu par le joueur qui achète une autre licence. Un ban écrit sur la seule IP est battu par un partage de connexion du téléphone. Les bans qui tiennent sont ceux écrits sur plusieurs identifiants à la fois, car le joueur doit tous les remplacer le même jour, et une seule erreur suffit pour la correspondance.
Ce qu’un ban txAdmin enregistre sur RedM
Un ban txAdmin vaut déjà mieux qu’un script qui bannit une seule licence. Dans le code source de txAdmin, un ban est stocké avec la liste des identifiants que le joueur avait et une liste séparée de jetons matériels. Quand quelqu’un se connecte, txAdmin cherche une correspondance sur les identifiants, et aussi sur les jetons quand ses réglages de ban le demandent. La documentation des événements txAdmin montre les deux listes dans l’événement de ban (targetIds et targetHwids).
Trois choses à savoir à ce sujet :
La correspondance des jetons exige un nombre minimal de jetons identiques, et ce minimum est un réglage. Trop strict, et un disque ou une carte réseau changés laissent passer le joueur. Trop souple, et vous bannissez un inconnu qui partage un composant.
Un ban ne retient que ce que le joueur portait au moment où vous l’avez banni. Un joueur banni alors que Steam était fermé n’a aucun identifiant Steam sur le ban, et un ban posé sur les seuls identifiants (un ancien ban hérité, par exemple) n’a aucun jeton.
Les données vivent dans le txAdmin de ce seul serveur. Le deuxième serveur de votre communauté ne les connaît pas, sauf si vous les copiez.
Rien de tout cela n’est une critique. txAdmin fait ce que doit faire une liste de bans. C’est aussi tout ce qu’une liste de bans peut faire : elle recoupe, elle ne relie pas.
Les limites qu’aucune ingénierie ne supprime
Un ban HWID RedM suppose que les jetons soient bien ceux du joueur. Trois situations cassent cela, et vous devez les prévoir toutes.
- 1
Un nouveau compte Rockstar. Une nouvelle licence sur la même machine est un nouveau joueur pour le jeu. Si les jetons ne correspondaient pas, rien ne relie les deux.
- 2
Un VPN. Il sort l’IP de l’équation. Il ne change rien pour la licence, mais il rend l’IP, le signal le plus souvent partagé, sans valeur comme preuve.
- 3
Un matériel usurpé. Des outils existent pour changer ce qu’une machine déclare au jeu, et un jeton ne vaut que ce que la machine déclare. Nous ne décrirons pas comment.
Contournement de ban sur RedM et problème des comptes alternatifs
Le contournement de ban est rarement une attaque astucieuse. C’est un joueur banni qui crée un compte alternatif RedM, oublie un détail (la même connexion domestique, le même Discord, la même machine) et joue de la même façon. Votre travail est d’attraper ce détail.
Cela veut dire garder des liens, pas seulement des bans : quels comptes ont partagé une adresse, lesquels ont partagé un jeton matériel, lesquels ont partagé une identité Discord. Quand un nouveau compte correspond à un compte banni sur l’un d’eux, vous voulez une notification, pas une surprise trois jours plus tard. Pour la même raison, les signaux partagés demandent du jugement. Une famille derrière une seule box, ou un opérateur mobile qui place des milliers d’abonnés derrière une seule adresse, ressemblera à un contournement alors que non. L’outil que vous utilisez doit permettre de dire « celui-ci est bon ».
Bonnes pratiques pour un ban qui tient
Bannissez sur tout ce que vous avez. Licence, Steam, Discord, jetons et IP ensemble, jamais un seul.
Gardez les preuves. Le champ de motif ne suffit pas. Un clip, une capture d’écran ou un rejeu permet à un second admin de confirmer le ban un mois plus tard.
Offrez une voie de recours. Un formulaire public ou un salon Discord suffit. Cela vous évite l’unique mauvais ban que vous ferez. Voir notre note sur les faux positifs.
Utilisez les durées à dessein. Un ban permanent pour un tricheur, un ban temporaire pour une infraction au règlement, et une révocation pour une erreur, le tout écrit.
Ce que Baobab AC ajoute à un ban HWID RedM
Baobab AC tourne sur votre serveur, à côté de votre framework, et garde le graphe de liens qu’une simple liste de bans n’a pas. Voici ce que cela change pour les problèmes ci-dessus. C’est aussi décrit, avec l’offre qui l’inclut, sur la page des fonctionnalités.
Un réseau d’alts construit automatiquement
Le réseau d’alts relie les comptes par IP partagée, jetons matériels et identité Discord, et reconnaît un joueur banni qui revient sur l’un d’eux. Le profil du joueur montre les liens, et whois vous donne les identifiants, jetons, pseudonymes et historique de connexion de n’importe quel joueur en une seule vue. Un joueur qui revient est attrapé à la connexion et la sanction est réappliquée à la première correspondance.
La détection anti multi-compte s’appuie sur le même graphe : elle cherche les transferts d’argent et d’objets entre comptes alternatifs liés, et les retours après ban. Une adresse partagée peut être exemptée à la main, pour le cas de la famille évoqué plus haut.
Un ban pour triche qui suit les liens
Quand vous bannissez un joueur et marquez le ban comme triche, le ban s’étend aux comptes qui lui sont liés, au lieu de vous laisser chercher les alts un par un. Le marquage est un choix que vous faites en prononçant le ban, donc un ban ordinaire reste un ban ordinaire. Si vous avez marqué le mauvais joueur, une seule révocation défait toute la cascade d’un coup.
Une liste de surveillance pour ceux dont vous n’êtes pas sûr
Parfois vous n’avez pas assez pour bannir. La liste de surveillance signale un joueur et prévient votre staff dès qu’il se connecte. Réglée sur l’expulsion, elle applique dès l’entrée. C’est ainsi que vous traitez le compte qui ressemble au joueur banni de la semaine dernière mais n’a encore rien fait.
Vos bans txAdmin, repris avec vous
Vous pouvez importer les bans de votre base de joueurs txAdmin (le fichier playersDB.json) dans le panel. Le fichier est lu dans votre navigateur et seules les entrées de ban sont envoyées. Un ban rattaché à un joueur connu devient une sanction. Un ban posé quand le joueur n’avait pas d’identifiant Steam reste sur ses identifiants, est vérifié à la connexion avec la licence, Discord et les identifiants matériels, et devient une sanction la première fois que ce joueur apparaît. Les bans expirés et levés sont ignorés, lancer deux fois le même fichier ne change rien, et un import s’annule en un clic. Les détails sont sur la page de la liste des bans.
Des sanctions que vous pouvez expliquer
Une sanction a une durée ou est permanente, peut être révoquée sans effacer son historique, et porte un dossier de preuves collecté au moment où elle est prononcée. Sur les offres Pro et Network, la boîte noire ajoute un rejeu de ce que le serveur a mesuré, et vous pouvez partager avec le joueur un lien qui expire, pour qu’il voie les mêmes nombres que vous. C’est la meilleure réponse à un recours, dans un sens comme dans l’autre. Vous pouvez voir un exemple sur le tableau de bord de démo et consulter les offres sur la page des tarifs.
Ce que cela ne fait pas
Un ban matériel augmente le coût du retour, il ne ferme pas la porte. Un nouveau compte avec une nouvelle licence est un nouveau joueur pour le jeu. Ce que Baobab AC garde, c’est le graphe de liens, pour que le retour ressorte comme une correspondance plutôt que comme un inconnu. Si le joueur change en même temps la licence, la machine, le Discord, la connexion et les habitudes, il n’y a aucune correspondance à trouver, et aucun outil n’en inventera une.
Cela ne remplace pas non plus le jugement. Les adresses partagées existent, et un lien est une piste pour un humain, pas un verdict. Pour le fonctionnement de la détection, voir comment fonctionne un anticheat RedM, et pour comprendre pourquoi c’est sur le serveur que cela doit vivre, anticheat côté serveur contre côté client.
Checklist du ban HWID RedM
- 1
Chaque ban que vous écrivez porte-t-il la licence, Steam s’il est présent, Discord, les jetons et l’IP, et pas un seul d’entre eux ?
- 2
Gardez-vous un lien entre les comptes, et pas seulement une liste de comptes bannis ?
- 3
Votre staff peut-il exempter une adresse partagée sans retirer le ban ?
- 4
Chaque ban a-t-il des preuves jointes, lisibles par un admin qui n’était pas là ?
- 5
Un joueur peut-il faire appel, et pouvez-vous révoquer proprement une erreur ?
- 6
Vos autres serveurs voient-ils le ban ?
Si vous avez répondu non à deux questions ou plus, le prochain joueur banni qui revient passera. Si vous voulez le recoupement des liens, les preuves et l’import txAdmin au même endroit, la page des fonctionnalités liste ce qui est inclus.