Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en
devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs
Il y a 2 semaines Mojang publiait le code source de la version PreRelease 1.9.3-pre2 de Minecraft une liste de serveur interdit, afin d’empêcher le jeu de se connecter aux serveurs ne respectant pas les conditions de Mojang. Face à la grogne de la communauté Mojang semblait faire machine arrière, puisque le code de blacklistage des serveurs avait été supprimé dans la version PreRelease 1.9.3-pre3.
Mojang n'a jamais communiqué a propos de ces changements, bien au contraire même ils ont tout fait pour que personne ne s'en aperçoivent: Le code source de Minecraft est obfusqué (illisible) et le message d'erreur lors de la connexion indiqué un problème réseau, sans aucune mention de la blacklist.
Étions-nous tranquille ? Malheureusement non puisque ce retour en arrière n'était malheureusement pas un abandon des hostilités de la part de Mojang, mais plutôt une nouvelle stratégie visant à attaquer encore plus durement les serveurs visés. Ainsi un joueur a remarqué ce week end un changement dans une des bibliothèque dont dépend Minecraft.
Afin de comprendre la nouvelle stratégie de Mojang, essayons de comprendre comment fonctionne Minecraft lui même:
À ses débuts Minecraft était un jeu plutot simple, programmé en Java il était compilé dans un unique fichier (minecraft.jar) contenant tout ce dont il avait besoin pour fonctionner. Du moins presque tout, une bibliothèque externe (OpenGL) était nécessaire pour la gestion de l'affichage en 3D du jeu. Une bibliothèque c'est simplement un autre fichier jar, également programmé en java (dans le cas de Minecraft), apportant des fonctionnalités supplémentaire.
Lors de la sortie de Minecraft Release 1.7 tout cela changea: L'ancien launcher officiel de Minecraft ne permettant pas de gérer la mise à jour de cette bibliothèque, les developpeurs du jeu ont dut pendant longtemps se contenter de cette ancienne version d'OpenGL comme unique dépendance pour Minecraft. Face a ce constat un nouveau Launcher fut créé, ce nouveau launcher permettant de mettre a jour aussi bien Minecraft que ses dépendances (les fameuses bibliothèques). Depuis le nombre de bibliothèques utilisées par Minecraft a explosé (gestion du clavier, gestion des logs, gestion du réseau, twitch, etc...). Aujourd'hui, dans la dernière version 1.9 de Minecraft, 33 bibliothèques sont utilisées par le jeu !
En général ces bibliothèques sont des fichiers standard, créer par un entreprise ou une collectivité puis compilé prés a être utilisé. Mojang se contente ensuite de copier ce fichier dans Minecraft sans aucune modification. Mais il y a désormais au moins une exception: La bibliothèque de gestion du réseau (appelé Netty) contient une modification par Mojang, l'intégration de la fameuse blacklist des serveurs. Contrairement au jeu lui même cette bibliothèque n'est pas obfusquée, il est donc possible de voir
son code source.
On y trouve notamment cet extrait de code:
private ChannelFuture checkAddress(final SocketAddress remoteAddress) {
if (this.isBlockedServer((remoteAddress instanceof InetSocketAddress) ? ((InetSocketAddress)remoteAddress).getHostName() : "")) {
final Channel channel = this.channelFactory().newChannel();
channel.unsafe().closeForcibly();
final SocketException cause = new SocketException("Network is unreachable");
cause.setStackTrace(EmptyArrays.EMPTY_STACK_TRACE);
return (ChannelFuture)new DefaultChannelPromise(channel, (EventExecutor)GlobalEventExecutor.INSTANCE).setFailure((Throwable)cause);
}
return null;
}
Je vais tenter de vous expliquer ce que fait ce code:
Il s'agit de la fonction qui effectue le blocage (on trouve aussi dans le fichier le code de détection, de téléchargement de la blacklist, etc...; mais attardons nous un instant sur ces lignes).
final SocketException cause = new SocketException("Network is unreachable");
Mojang crée une fausse erreur, avec le nom "Network is unreachable" (réseau injoignable), l'erreur affiché dans le jeu n'est donc pas un effet de bord de la blacklist, c'est réellement une volonté de Mojang de cacher le fait que Minecraft bloque le serveur délibérément.
cause.setStackTrace(EmptyArrays.EMPTY_STACK_TRACE);
Cette ligne va encore plus loin, puisque Mojang efface toute trace de l'erreur des logs de Minecraft, afin qu'un joueur astucieux ne puisse pas découvrir la véritable cause du bloquage dans l'onglet "debug" du launcher officiel.
Pour mis les autres lignes de code inintéressante j'ai trouvé:
Bootstrap.BLOCKED_SERVERS.addAll(IOUtils.readLines(new URL("https://sessionserver.mojang.com/blockedservers").openConnection().getInputStream()));
L'adresse de téléchargement de la blacklist est inscrite en dur dans le code source de la bibliothèque de gestion du réseau, une pratique particulièrement mal faite, mais qui a l'avantage d'être plus discret (ce qui semble être la volonté de Mojang).
final String starredPart = isIp ? (Bootstrap.DOT_JOINER.join((Iterable)strings) + ".*") : ("*." + Bootstrap.DOT_JOINER.join((Iterable)strings));
La blacklist gère d'une manière très basic les wildcard (*), soit devant le nom de domaine (blocage de tous les sous-domaines), soit en fin d'une adresse IP (blocage d'une plage d'IP). Fait amusant: le code ne gère absolument pas le cas des adresses IP v6, donc si vous souhaitez être tranquille, hébergez votre serveur sur une IP v6 ^^
return Bootstrap.BLOCKED_SERVERS.contains(Hashing.sha1().hashBytes(server.getBytes(Charset.forName("ISO-8859-1"))).toString());
Apparemment le code pas les caractères "spéciaux", donc mettez des caractères non latin (chinois, japonais, arabe, voir pourquoi pas des
emojis) dans votre nom de domaine et vous serez tranquille ^^
Une blacklist rétroactive
Le fait d'inclure le code de blacklist dans la bibliothèque de gestion du réseau permettra à Mojang de
bloquer les serveurs sur toutes les versions de Minecraft depuis Minecraft Release 1.7. En effet, contrairement à Minecraft, le launcher de Mojang se met a jour automatiquement, et cela n'est pas désactivable. Leur launcher fera ensuite les mises à jour de la bibliothèque pour toutes les anciennes version de Minecraft, permettant d'inclure de force la blacklist sur toutes les versions. Cela sera également effectif sur les launchers alternatifs qui mettront à jour Minecraft depuis ce changement.
Bien que la blacklist ne semble plus être active depuis la sortie de la PreRelease 1.9.3-pre3, Mojang n'en a pas pour autant abandonné ses projets. Malgré la désactivation de la blacklist on constate que Mojang a mis à jour sa liste des serveurs blacklistés, voici
la nouvelle liste avec
les serveurs visés:
8bca9a9fd459096e50adac9a5c49f6b4c75078dd:*.ih-mc.com
92c96470a85bc654878de75ed88a058aa9dd4d26:*.datpixel.net
987c989fca662d36b0ab262938b4b0c044f564d5:*.mcskyblock.com
5c0f8d09542f98d7bfc165adf819aa704a571b16:*.phanaticmc.com
d0a8085ea50508f6e15d6cad3461548e1434bf5e:unblacklistphan.servebeer.com
a4041fc65567fd112128d0cb49c7021fcfac542f:*.brawl.com
492465aa3a847b23dce5b7307bff86d0ab90c568:*.kitbrawl.com
72e5e5180886a435bae029f9dc63f70f8dac7033:*.mc-hg.com
fed9abeb28570d2ff21b63d71fa7e89c16a8223f:*.mc-war.com
35ec473879985c10e6e34fe2e84d65da4514698e:*.mc-warz.com
1162820f95ca042fee285727aa26c7767d3096e8:*.mcctf.com
a7905f64f7e774579a4eaeccb99994891f6858d0:*.minecraftbuild.com
dcc8631638079ced7d3ba5db2e2bc0dbdfd244ba:*.minecraftparty.com
353e29a0a1a38ecfc96731f1d23199afd35878e3:*.mcbrawl.com
6a2617ac6da1d3c98214ee499438f72620b9cc48:*.mcpvp.com
2d4a5351d84d6d3e6af99062b9b2f7f89a9097e7:*.cancermc.com
b24b753c34fb82e04c7dc0a8db7f7a185aa6bf06:192.99.46.105
79174e1a96ebbe9528048f21e7d6b593e1783dcd:192.99.21.112
25be414e4ddc7c724945dc68d3651e4ffbb9a90b:192.99.150.141
75df09492c6c979e2db41116100093bb791b8433:*.timelesspvp.net
f05ff11b25bbdb642081950711f19cd82354a02c:*.minevast.com
e22708993e4a057e7a3e7e4e819fe62765e6b894:*.minevast.net
cc8e1ae93571d144bf4b37369cb8466093d6db5a:*.thearchon.net
2bcb0f010666b551558bdbfc71d7ce1244454e9b:162.220.33.5
d8ed12096e2621f5e787f14b0bc099c2c829fc97:162.220.33.6
dba18bf6ce4ee8cfd79e2fcb0c7400f095daff15:162.220.33.13
ceeeaf662e8988ce964f87493538a16632ad61ab:162.220.33.14
8de098aeaa6f8d7b2ab98d09f1a8429c1c77838a:162.220.33.243
053680498280f4f61f6257d43b4ae3a7b72b9b9e:162.220.33.244
5ca81746337088b7617c851a1376e4f00d921d9e:*.gotpvp.com
d0a08dff1e72e2bcd5d666b6992756ef587ad355:*.gotpvp2.com
4f3e2d06f408929a408e97e39a2a072d6d51d9b5:*.factions.xxx
9c0806e5ffaccb45121e57e4ce88c7bc76e057f1:*.goatpvp.com
078388b4ae6d7ebd55e34b2c509365089cc1d51d:*.mylifestyle.net
6f2520f8bd70a718c568ab5274c56bdbbfc14ef4:*.minetime.com
ecafe92c6d27201f0acb08b7ef963ac998378d96:*.desiredcraft.net
a414a50071fac47ec93cd43e92fd9246cb3ad0a7:*.desiredcraft.xyz
59b6691244b2be09cce3b13093cfd97de5e186d6:*.desiredcraft.online
eb4c48e0043e58b9e5c0d3d964de1ee4ea0c3acd:dcmc1.hopto.org
b3a46abe75aefc46277dd689225d1656e78fe9b0:mcdc2.ddns.net
b13009db1e2fbe05465716f67c8d58b9c0503520:*.endercraft.com
3e560742576af9413fca72e70f75d7ddc9416020:*.insanefactions.org
e3985eb936d66c9b07aa72c15358f92965b1194e:*.insanenetwork.org
b140bec2347bfbe6dcae44aa876b9ba5fe66505b:*.phoenixnexus.net
c005ad34245a8f2105658da2d6d6e8545ef0f0de:*.skygod.us
29b53a59766f0a58ad0dd33cc7d093faddf4c60c:*.paradise-mc.net
e624c487282deb006edb612fa7dbfc2d359de355:158.69.22.182
6051dd0dd4624f747d7c158b23896de12429e8ed:*.powercraft.me
c78697e385bfa58d6bd2a013f543cdfbdc297c4f:*.mineaqua.net
d312acbaedae1845cb098cd98ecd57ec426993eb:*.eldercraft.de
510be143309468d288858f7830343e8e4bf817c4:*.buildingdave.de
90633e9040d5a3315a884030ff075ef4cbda7b46:*.fadecloud.com
073ca448ef3d311218d7bd32d6307243ce22e7d0:*.diacraft.org
a5944b9707fdb2cc95ed4ef188cf5f3151ac0525:*.guildcraft.org
b6be9d7e857ea859c08a30bf03d7373f7ebcd159:*.guildcraft.nl
27edda0818df592710ec147d298a4182f70f3a80:37.187.133.106
4d303ec6c914007f3214ce9184e1891e97af71de:*.menoxia.com
266723d98e2cccb7b45c9364c7716efe4da00dfa:*.styxnetwork.net
b6a07ec397644bf275cff7e87e8352f81d5b17a6:*.block-city.de
Une blacklist non modable
Autre avantage pour Mojang: puisque le code de la blacklist n'est plus incluse dans Minecraft, il ne sera pas possible de la contourner via des mods. Cependant, cela ne signifie pas qu'il sera impossible d'y échapper: Je vous l'ai dit, le code de blacklist est dans une bibliothèque, c'est à dire dans un fichier séparé de Minecraft. Il sera donc très simple de remplacer ce fichier par une version non modifié par Mojang, en utilisant un autre launcher que le launcher de Mojang (le launcher de Mojang vérifiant que les fichiers ne sont pas modifié). Nulle doute qu'on voit rapidement arrivé des launchers alternatif pour désactiver la blacklist de Mojang.
Une blacklist active contre les serveurs crackés
Rappelons enfin que cette blacklist concerne tous les serveurs, qu'ils soient en mode online (nécessitant un compte Minecraft premium) ou offline (permettant de s'y connecter depuis une version cracké de Minecraft). Hors, bien évidement, cracké Minecraft est interdit par l'EULA, il est donc tout a fait possible que Mojang s'attaque rapidement aux serveurs acceptant les versions crackés puisque ces serveurs encourage le piratage du jeu, ce qui implique un manque a gagner important pour l'entreprise.
Encore une fois l'avenir est particulièrement flou puisque Mojang ne communique aucunement sur ses projets de blacklist, espérons tout de même que cette guerre futile ne détruise pas trop notre communauté si active.
Dommage que je n'ai plus ni le courage ni la force de remettre un serveur en ligne, car rien que pour les emmerdé je me ferait un malin plaisir un ouvrir un serveur cracké, avec plein de truc en vente (argent, grade, kit, etc... tout ce qui est interdit en gros), JUSTE pour les emmerder, et leur montrer que leur blacklist à 2 balles ne sert a rien. La censure et le secret n'a jamais était une solution contre quoi que ce soit.
Dans tous les cas si cette censure reste sous forme de bibliothèque, nulle doute que j'adapterai le launcher fr-minecraft pour vous mettre de passer outre cette censure, et pourquoi pas au passage permettre de jouer en "mode offline" ? ^^