Table of Contents
Comment obfusquer une URL ?
(texte fortement inspiré de l'article : http://www.pc-help.org/obscure.htm)
Petit rappel : obfusquer = Rendre [un texte] illisible pour éviter qu’il soit exploité de façon non autorisée, par exemple, en transformant le nom des variables pour qu'ils deviennent incompréhensibles. Obfusquer ou masquer une URL, dans le sens de cet article, c'est l'écrire de telle façon qu'elle ne soit pas humainement très lisible.
Introduction pour le néophyte
Les sites internet sont hébergés sur des machines comme votre PC (un peu plus puissantes en général), quelque part sur le web. Pour que 2 machines puissent communiquer (votre PC et un site web par exemple), chacune doit être localisée avec une adresse ; c'est le même concept qu'une adresse postale, sauf qu'en informatique il n'y a pas de nom de rue ni de ville, mais une série de nombres appelée adresse IP (v4) qui ressemble à ça : 128.35.196.22 (4 nombres codés sur 8 bits, exprimé ici en décimal). Lorsque vous voulez aller sur un site web, vous devez donc connaître l'adresse IP de ce site.
Comme il n'est pas aisé (pour un humain) de connaitre et retenir une suite de nombres, on a inventé un système d'annuaire, le DNS, qui permet d'associer le nom de domaine d'un site (pteu.fr) à son adresse IP (37.187.7.70), parce que c'est plus simple à retenir. Ainsi, lorsque vous saisissez “pteu.fr” dans votre navigateur, celui-ci va consulter l'annuaire (le DNS) pour transformer pteu.fr en son adresse IP pour pouvoir le contacter. C'est le même principe que les pages blanches : on a le nom d'une personne et on recherche son adresse postale.
Enfin, pour afficher la page que vous voulez consulter sur le site, il suffit de l'indiquer à la fin de l'URL : http://www.monsite.com/mapage.html
- http:// désigne le protocole (ici c'est le protocole http qui permet de consulter des sites web)
- www.monsite.com désigne l'adresse du site web
- /mapage.html désigne l'emplacement de la page que vous voulez lire. On notera que si on ne spécifie pas de nom de page, la page par défaut sera affichée (en général c'est “index.html”).
Pour trouver l'adresse IP d'un site dont vous avez l'URL, rien de plus simple : allez dans le menu démarrer/exécuter et tapez “cmd”. Une fois la console ouverte, tapez : nslookup google.fr
nslookup google.fr Serveur : dns1.proxad.net Address: 212.27.40.240 Réponse ne faisant pas autorité : Nom : google.fr Address: 74.125.133.94
La commande vous renvoie le nom et l'adresse IP de l'annuaire consulté (dns1.proxad.net, adresse 212.27.40.240, c'est un serveur DNS de Free) ainsi que l'adresse IP de google.fr : 74.125.133.94. Ainsi, si vous saisissez http://74.125.133.94 dans votre navigateur, il vous affichera le site google.fr.
Dans le vif du sujet
Maintenant, passons au vif du sujet : comment dissimuler une URL ?
Il faut savoir que vous pouvez utiliser une syntaxe spéciale vous permettant de vous identifier en spécifiant un login et un mot de passe dans l'URL. Dimonstration :
- “- bonjour je suis toto, mon mot de passe c'est titi et je voudrais accéder à la page mapage.html située sur le site popo.com”
- je le traduit en : “http://toto:titi@popo.com/mapage.html”. Cela permet au site de m'identifier et m'affiche la page direct.
Mais si le site ne requiert pas de login/password, alors les données spécifiées avant le “@” sont ignorées. Si je tape “http://www.moncul.com@www.microsoft.com/mapage.html”, je vais me retrouver sur le site de Microsoft. Cela peut donc prêter à confusion pour ceux qui n'ont pas connaissance de cette syntaxe.
Et si on met l'IP du site de microsoft à la place de son URL, alors là à tous les coup 99% des internautes tomberons dans l'panneau : “http://www.moncul.com@207.46.249.221/mapage.html” on se laisse tenter par ce qui à du sens, naturellement, et c'est www.moncul.com !
Encore plus intéressant, on peut coder l'IP en octal, hexadécimal ou dword ! (non pas binaire :p). Pour l'exemple on va prendre l'IP de tout à l'heure : 128.35.196.22
<note>NB : vous pouvez vous servir de la calculatrice de Windows en mode scientifique pour faire les conversions en octal (base 8)</note>
- en octal (base 8) : on décompose chaque octet de l'IP en notation décimale en puissance de 8, cela nous donne :
0200.043.0304.026
(vous noterez les “0” devant chaque nombre, ils indiquent conventionnellement que le chiffre qui suit est codé en octal ; on peut en mettre plus d'un devant chaque nombre, ça ne change rien). - en hexadécimal (base 16) : on décompose chaque champ en puissance de 16
0x80.0x23.0xC4.0x16
(vous noterez les “0x” précédant chaque nombre, spécifiant que c'est de l'hexa) ou simplement 0x8023C416 en supprimant les points - en dword (base 256) : on multiplie chaque champ par 256^sa_position :
(((128*256 + 35)*256) + 196)*256 + 22 = 2149827606
En espérant ne pas m'être trompé dans les conversions, voici donc les différentes façon d'écrire la même URL :
http://www.moncul.com@www.microsoft.com/mapage.html en.. alphabétique http://www.moncul.com@207.46.249.221/mapage.html en décimal http://www.moncul.com@0200.043.0304.026/mapage.html en octal http://www.moncul.com@0x8023C416/mapage.html en hexadécimal http://www.moncul.com@2149827606/mapage.html en dword
<note>On peut également dépasser les bornes de l'encodage. Je m'explique : normalement mon IP codée en décimal est “128.35.196.22” : chaque champ doit être compris entre 0 et 255. Mais on peut dépasser ces bornes en ajoutant des multiples de 256 à chaque champ car certains navigateurs retouchent l'IP que vous tapez. Dans le cas de ceux-ci uniquement, on peut dire que 128.35.196.22 “équivaut” à 640.291.452.22 (attention à ne pas dépasser 3 chiffres par champ)</note>
Vous avez surement remarqué, ne serait-ce qu'en affichant une page html stockée sur votre disque dur, que les caractères “espace” sont transformés en “%20”. C'est le code ASCII du caractère, et on peut également coder tous les autres caractères de l'URL en ASCII si on veut tant qu'on y est. La table ASCII peut se trouver ici par exemple : http://www.jimprice.com/jim-asc.htm (j'ai laissé l'URL en clair ;) et après un p'tit codage du chemin de l'arborescence on obtient :
%6d %61 %70 %61 %67 %65 %2e %68 %74 %6d %6c m a p a g e . h t m l
Au final, je peux accéder à mon site “http://www.microsoft.com/mapage.html” en tapant : http://www.moncul.com@2149827606/%6d%61%70%61%67%65%2e%68%74%6d%6c si vous voulez faire croire à l'internaute non initié qu'il ira sur “http://www.moncul.com”, ou tout “simplement” http://2149827606/%6d%61%70%61%67%65%2e%68%74%6d%6c qui est l'adresse “encodée”.
Chacun aura bien noté qu'il s'agit d'un encodage et non d'un chiffrement (différence entre chiffrement et encodage) : ça ne protège pas efficacement les URL contre quelqu'un s'y connaissant un peu (ou ayant lu cet article ;). Par ailleurs la plupart des navigateurs récents traduisent automatiquement les URLs pour plus de clarté, certains vont même jusqu'à colorer le nom de domaine pour qu'ils soient visibles de l'internaute.