Skip to content

Instantly share code, notes, and snippets.

@RealAlphaUA
Last active June 9, 2024 18:58
Show Gist options
  • Save RealAlphaUA/a4105fca90304a27cceb50b5a28e1527 to your computer and use it in GitHub Desktop.
Save RealAlphaUA/a4105fca90304a27cceb50b5a28e1527 to your computer and use it in GitHub Desktop.

Comment savoir si le joueur est premium ou crack et comprendre pourquoi il est impossible de le savoir avec un spigot 🔮

✨ Actuellement à l'heure d'aujourd'hui plusieurs personnes n'ont pas de compte minecraft pour diverses raisons mais souhaite jouer sur les serveurs, mais comment nous développeurs pouvons faire la différence entre un joueur crack et premium ?

On va commencer par comprendre comment fonctionne le protocol minecraft.

Un packet est struturé de la manière suivante:

Field Name Notes
lenght taille du packet id + data
packet id correspond au type du packet
data dépend de l'état de la connexion et de l'identifiant du paquet

Il a y a 4 état de connexion differente

  • HANDSHAKE
  • STATUS
  • LOGIN
  • PLAY

Et en fonction de l'etat de connexion le packet ne sera pas le même

Screen

Le packet handshake possède l'id 0.

Le packet status marche par pair(entrée/sortie) 🎓, donc les deux premiers ont le même id soit 0 et les deux suivants 1.

Lors de l'envoie du handshake voici ce qu'on peut récupérer:

Screen

C'est d'ailleurs le premier packet envoyé 🎉 et nous donnes les informations suivantes, la version du jeu, l'adresse ip qu'il a entré, le port qu'il a entré et le type du handshake(STATUS ou LOGIN). Du coup avec ces informations on peut déjà dire qu'envoyer le packet de login pour savoir si il est crack ou premium est simplement impossible car le client est en état de PLAY a l'heure de l'envoie de votre packet. Vous allez provoquer un quiproquo🎭 entre le client et le server ⚒ On ne peut pas se baser sur son pseudo car tout le monde peut l'utiliser. Le uuid est générer en fonction du pseudo:

UUID.nameUUIDFromBytes(("OfflinePlayer:" + username)

On pourrait avec bungeecord stocker le pseudo du joueur qui a essayé de se connecter pour que a la prochaine connexion on le connecte en tant que crack mais c'est bancale 🎞 comme approche.

@Pseudow
Copy link

Pseudow commented Dec 28, 2020

Interesting, thanks!

@RealAlphaUA
Copy link
Author

No worries, happy to have been able to clear you up. 🎆

@KryKox
Copy link

KryKox commented Jan 9, 2021

Thanks for this tip, i will apply it right now !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment