Comment interdir l'ajout d'autres mods dans le dossier
-
Merci à tous je vais voir mais ce n’est pas très clair pour moi le truc du md5 je ne vois pas comment faire sa ni mettre la “check-list”.
-
le MD5 va servir a faire une whitelist et non une blacklist.
En gros, pour faire simple, tout les fichiers sont une suite de 0 et de 1.
Il existe des méthode de cryptologie qui permettent de trouver une clé “unique” pour chacun des fichiers via cette suite de 0 et de 1.Si tu change quoique se soit dans le fichier, le MD5 est radicalement différent.
Donc tu peux faire une whitelist pour t’assurer que les fichiers dans le dossier mods sont les même que ceux que tu exiges.
Par contre, ça ne sert a rien d’interdire un fichier via son MD5.Si c’est un jar, il suffit que l’utilisateur ajoute un fichier dans le jar, même un fichier texte vide, ça ne changera pas le comportement du jar, mais le MD5 sera différent.
Par contre, petite correction : un fichier ne possède pas un identifiant MD5 en attribut contrairement au nom, la date de création etc…
Le MD5 se calcule. Tu n’as pas a écrire la formule, il existe dans l’API Java standard une méthode qui te renvoie la clé MD5 directement. -
Bonjour j’ai vraiment besoin d’aide au niveau du MD5 pourrais-tu m’expliquer plus en détail l’opération a effectuée svp ?
-
Deja il te faut un launcher custom, si tu en as un alors je peux essayer de t’expliquer ce que j’ai compris…
-
Non, surtout pas de launcher custom, mais tu peux utiliser l’installateur que robin4002 a fait.
-
C’est ce que je voulais dire ^^ Je me suis tromper
-
Non pas obliger de faire des actions avant le lancement du jeu. Donc pas obligé d utiliser le launcher.
Tu demandes au joueur qui veut se connecter le MD5 de son dossier mods
Le serveur check ensuite si c est le bon.
Si c est pas le cas, le serv kick le joueur. -
La fonction que Gugu à parlé plus haut est
if (Loader.isModLoaded("ID_DU_MOD")) //Vous aurez l'ID du mod dans le mcmod.info qui ce trouve dans l'archive du mod elle contient l'ID du mod, généralement en minuscule, à la ligne "modid" { System.out.println("Vous avez ajouter un mod, il est interdit de faire ca ! bla, bla…");//Affiche un message dans la console du jeu FMLClientHandler.instance().getClient().shutdown(); //Fait crash le jeu }A mettre dans la fonction postInit de la classe principale
-
Ok, mais on peut faire ca, pour checker si il y a plusieurs mods ? :
::: **if** !(Loader.isModLoaded("ID_DU_MOD") | Loader.isModLoaded("ID_DU_MOD") ) //Vous aurez l'ID du mod dans le mcmod.info qui ce trouve dans l'archive du mod elle contient l'ID du mod, généralement en minuscule, à la ligne "modid" { System.**out**.println("Vous avez ajouter un mod, il est interdit de faire ca ! bla, bla…");//Affiche un message dans la console du jeu FMLClientHandler.instance().getClient().shutdown(); //Fait crash le jeu }:::
-
Normalement c’est bon, metbien deux ||
Envoyé depuis mon Android edition by sfr STARADDICT avec Tapatalk
-
Ok merci
-
Sinon, un coremod qui check tous les MD5 ou les noms de fichiers dès l’instanciation du coremod.
package ton.package; // Ctrl+Maj+O public class ModChecker implements IFMLLoadingPlugin { private static Map <string, string="">validMD5sMap = new HashMap<string, string="">(); private static List <string>validMD5sList = new ArrayList<string>(); public ModChecker() { buildMap(); checkMods(); } public static void buildMap() { // Entre ici tous tes noms de fichiers à whitelist // Ex : Whitelist de NEI version 1.0.3.67 validMD5sMap.put("NotEnoughItems-1.7.10-1.0.3.67-universal.jar", "B0431D2D45BFBAD636F5C7C9357A3660"); validMD5sList.add("B0431D2D45BFBAD636F5C7C9357A3660"); } public static void checkMods() { for (File f : new File("mods")) { if (!isValidMD5(f)) { f.delete(); } } for (File f : new File("mods/1.7.10") { if (!isValidMD5(f)) { f.delete(); } } } public static boolean isValidMD5(File f) { String MD5 = DigestUtils.md5Hex(new BufferedInputStream(new FileInputStream(f))); return (validMD5sMap.hasKey(f.getName()) && validMD5sMap.get(f.getName()).equalsIgnoreCase(MD5)) || validMD5sList.contains(MD5); } }Je te conseille le site http://onlinemd5.com pour trouver les MD5.</string></string></string,></string,>
-
@‘galaxyoyo’:
Sinon, un coremod qui check tous les MD5 ou les noms de fichiers dès l’instanciation du coremod.
package ton.package; // Ctrl+Maj+O public class ModChecker implements IFMLLoadingPlugin { private static Map <string, string="">validMD5sMap = new HashMap<string, string="">(); private static List <string>validMD5sList = new ArrayList<string>(); public ModChecker() { buildMap(); checkMods(); } public static void buildMap() { // Entre ici tous tes noms de fichiers à whitelist // Ex : Whitelist de NEI version 1.0.3.67 validMD5sMap.put("NotEnoughItems-1.7.10-1.0.3.67-universal.jar", "B0431D2D45BFBAD636F5C7C9357A3660"); validMD5sList.add("B0431D2D45BFBAD636F5C7C9357A3660"); } public static void checkMods() { for (File f : new File("mods")) { if (!isValidMD5(f)) { f.delete(); } } for (File f : new File("mods/1.7.10") { if (!isValidMD5(f)) { f.delete(); } } } public static boolean isValidMD5(File f) { String MD5 = DigestUtils.md5Hex(new BufferedInputStream(new FileInputStream(f))); return (validMD5sMap.hasKey(f.getName()) && validMD5sMap.get(f.getName()).equalsIgnoreCase(MD5)) || validMD5sList.contains(MD5); } }Je te conseille le site http://onlinemd5.com pour trouver les MD5.</string></string></string,></string,>
En utilisant cela comment faire pour que ça retélécharge les mod où alors que ça fasse crasher le jeu ?
-
FMLCommonHandler.instance().handleExit(0);
-
Merci à tous,
mais je n’ai pas compris une chose comment créer votre ''white-list ‘’.
Faire un nouveau mod? Si oui pourriez vous m’expliquer comment faire car je débute.
Merci vraiment pour vos réponses. -
Tu mets ça, dans la fonction post-init dans ta classe principale:
if (!Loader.isModLoaded("modid")) //Vous aurez l'ID du mod dans le mcmod.info qui ce trouve dans l'archive du mod elle contient l'ID du mod, généralement en minuscule, à la ligne "modid" { System.out.println("Vous avez ajouter un mod, il est interdit de faire ça ! Tant qu'un mod extérieur a ceux du serveur sera présent, le jeu ne se lancera pas.");//Affiche un message dans la console du jeu FMLClientHandler.instance().getClient().shutdown(); //Fait crash le jeu }Donc si le jeu charge un mod avec un modid different de ce que tu as mis dans
Loader.isModLoaded(“modid”)
Alors il met un message dans la console puis fait crash ton jeu.
Tu peux faire qu’il crash que si il charge un mod que tu veux pas genre, un mod qui permet d’exploiter un bug sur ton mod/serveur moddé, pour cela il faut enlever le “!” devant Loader.isModLoaded dans la condition.
J’espère avoir était claire, si ce n’est pas le cas, n’hésites pas à me demander des précisions…
-
Merci je vais essayer demain ou mercredi je vous tient au courant
