Flux RSS - La vie du site - Nouveautés et mises à jour
Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

Coder décoder caractères d'échappement

Formulaire en ligne vous permettant d'encoder un texte en échappement% ou, inversement, de décoder un texte crypté en échappement%. Très utile avec les URL.

18.06.2013 - Révision 12.01.2022 - Révision mineure 22.08.2022. Auteur : Pierre Pinard.

Les formulaires suivants vous permettent d'encoder (brouiller - obfusquer) un texte clair en échappement% ou, inversement, de décoder un texte brouillé en échappement% vers du texte en clair (déobfusquer). Ceci est très utile pour encoder des URL devant contenir des caractères interdits, ou, à l'inverse, de décoder quelque chose encodé en échappement%.


Dans cette fenêtre, le texte en clair


Dans cette fenêtre, le texte encodé



Utilisation de l'obfuscation / déobfuscation :

  • Saisir un texte « normal » (en clair) dans la boîte de saisie du haut pour en obtenir le codage (obfuscation) en « échappement% » dans la boîte de saisie du bas.

  • Saisir un texte encodé en « échappement% » (obfusqué) dans la boîte de saisie du bas pour en obtenir la version décodée (déobfuscation) dans la boîte de saisie du haut.

Ceci est généralement utilisé pour le passage d'arguments dans les URI et est utilisé pour le cryptage des URL par les spammeurs et les sites crapuleux. Les autres raisons de son utilisation sont :

  • La protection des codes sources des pages html, qui deviennent difficilement lisibles à ceux qui cherchent à contourner vos protections d'accès à certaines zones, usurper les paiements, etc.

  • La protection contre les robots sans capacité de décodage JavaScript, écumant le Web à la recherche d'adresses e-mail ou de contenu, etc.


Autres ressources :


Vous avez déjà vu des URL avec cette tête ?

https://%61%73%73%69%73%74%65%2e%66%72%65%65%2e%66%72%2f%70%2f%63
%6f%64%65%5f%64%65%63%6f%64%65%2f%64%65%63%6f%64%65%5f%65%63%68
%61%70%70%5f%76%65%72%73%5f%75%74%66%38%2e%70%68%70
.

L'URL utilise un codage légitime, mais inhabituel, utilisant des « séquences d'escapes » et appelé « échappement% ».

Avec de tels liens, vous ne savez pas où vous allez atterrir et, comme l'usage d'un tel encodage est complètement inhabituel, on est persuadé qu'il y a quelque chose de caché, à commencer par le nom de domaine contenu dans l'URL et tout le contenu de l'URL. Cette méthode est utilisée par les sites crapuleux, les sites bénéficiaires de spam commerciaux, etc. Le formulaire suivant permet de décoder ces URL. En fait, il permet de décoder n'importe quelle chaîne de caractères codée avec des séquences d'escapes.

Le codage des URL (des liens hypertextes) répond à une syntaxe qui a été voulue, dès le départ, ouverte aux futurs protocoles possibles et imaginables et être utilisable par tous les systèmes déjà existants.

  • Une URL débute toujours par un champ qui définit le schéma de nommage dans lequel l'objet référencé se situe. Par convention, ce champ contient donc le nom du protocole, par exemple http, https, ftp, ftps, sftp, gopher, etc.

  • Un séparateur (un délimiteur), le caractère « : ».

  • La suite de l'URL, suite qui dépend directement de la valeur du premier champ.

C'est donc l'usage de la bonne vieille table de caractères normalisée, la table ASCII (American Standard Code for Information Interchange) qui a été retenu. Cette table est constituée de tous les caractères imprimables (que l'on voit et trouve donc sur un clavier), mais aussi de certains autres, non imprimables et non visibles sur un clavier. Ils sont, traditionnellement, utilisés, par exemple pour donner des ordres de format aux imprimantes « caractère » (sauts de page, sauts de ligne, tabulation, etc.). Leur utilisation est nécessaire, car certains services utilisent ces caractères spéciaux comme éléments du protocole (gopher, par exemple, utilise le caractère « Tab » (%09) comme séparateur de champ).

 0123456789ABCDEF
0NULSOHSTXETXEOTENQACKBELBSTABLFVTFFCRSOSI
1DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
2espace!"#$%&'()*+,-./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[\]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}~ 
8 ƒˆŠŒ Ž 
9 ˜šœ žŸ
A ¡¢£ ¥|§¨©ª«¬¯®¯
B°±²³´µ·¸¹º»¼½¾¿
CÀÁÂÃÄÅÆÇèéêËÌÍÎÏ
DÐÑÒÓÔÕÖ ØÙÚÛÜÝÞß
Eàáâãäåæçèéêëìíîï
Fðñòóôõö÷øùúûüýþÿ

Le même tableau pour les paresseux :

 0123456789ABCDEF
0NULSOHSTXETXEOTENQACKBELBSTABLFVTFFCRSOSI
1DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
2espace
%20
!
%21
"
%22
#
%23
$
%24
%
%25
&
%26
'
%27
(
%28
)
%29
*
%2A
+
%2B
,
%2C
-
%2D
.
%2E
/
%2F
30
%30
1
%31
2
%32
3
%33
4
%34
5
%35
6
%36
7
%37
8
%38
9
%39
:
%3A
;
%3B
<
%3C
=
%3D
>
%3E
?
%3F
4@
%40
A
%41
B
%42
C
%43
D
%44
E
%45
F
%46
G
%47
H
%48
I
%49
J
%4A
K
%4B
L
%4C
M
%4D
N
%4E
O
%4F
5P
%50
Q
%51
R
%52
S
%53
T
%54
U
%55
V
%56
W
%57
X
%58
Y
%59
Z
%5A
[
%5B
\
%5C
]
%5D
^
%5E
_
%5F
6`
%60
a
%61
b
%62
c
%63
d
%64
e
%65
f
%66
g
%67
h
%68
i
%69
j
%6A
k
%6B
l
%6C
m
%6D
n
%6E
o
%6F
7p
%70
q
%71
r
%72
s
%73
t
%74
u
%75
v
%76
w
%77
x
%78
y
%79
z
%7A
{
%7B
|
%7C
}
%7D
~
%7E
 
%7F
8
%80
 
%81

%82
ƒ
%83

%84

%85

%86

%87
ˆ
%88

%89
Š
%8A

%8B
Œ
%8C
 
%8D
Ž
%8E
 
%8F
9 
%90

%91

%92

%93

%94

%95

%96

%97
˜
%98

%99
š
%9A

%9B
œ
%9C
 
%9D
ž
%9E
Ÿ
%9F
A 
%A0
¡
%A1
¢
%A2
£
%A3
 
%A4
¥
%A5
|
%A6
§
%A7
¨
%A8
©
%A9
ª
%AA
«
%AB
¬
%AC
¯
%AD
®
%AE
¯
%AF
B°
%B0
±
%B1
²
%B2
³
%B3
´
%B4
µ
%B5

%B6
·
%B7
¸
%B8
¹
%B9
º
%BA
»
%BB
¼
%BC
½
%BD
¾
%BE
¿
%BF
CÀ
%C0
Á
%C1
Â
%C2
Ã
%C3
Ä
%C4
Å
%C5
Æ
%C6
Ç
%C7
è
%C8
é
%C9
ê
%CA
Ë
%CB
Ì
%CC
Í
%CD
Î
%CE
Ï
%CF
DÐ
%D0
Ñ
%D1
Ò
%D2
Ó
%D3
Ô
%D4
Õ
%D5
Ö
%D6
 
%D7
Ø
%D8
Ù
%D9
Ú
%DA
Û
%DB
Ü
%DC
Ý
%DD
Þ
%DE
ß
%DF
Eà
%E0
á
%E1
â
%E2
ã
%E3
ä
%E4
å
%E5
æ
%E6
ç
%E7
è
%E8
é
%E9
ê
%EA
ë
%EB
ì
%EC
í
%ED
î
%EE
ï
%EF
Fð
%F0
ñ
%F1
ò
%F2
ó
%F3
ô
%F4
õ
%F5
ö
%F6
÷
%F7
ø
%F8
ù
%F9
ú
%FA
û
%FB
ü
%FC
ý
%FD
þ
%FE
ÿ
%FF

Le caractère « TAB », par exemple, est, dans cette table, à l'intersection de la ligne 0 et de la colonne 9. Son code ASCII est donc 09.

Ceci est, bien entendu, fonctionnel sur toute la table ASCII. Par exemple, « Papa » pourrait donc s'écrire « 50 61 70 61 », mais il manque quelque chose :

Pour distinguer 50 61 70 61 d'un bête nombre, il a été convenu d'un code dit d'« échappement » qui a été choisi pour être le caractère « % » d'où le nom d'« échappement % ». Lorsque ce code est rencontré, les 2 caractères qui le suivent sont le code ASCII d'un caractère. (Conséquence syntaxique : le caractère % est « interdit » en écriture directe et ne peut s'écrire que %25).

« Papa » pourrait donc s'écrire %50 %61 %70 %61, mais il manque encore quelque chose que la règle syntaxique impose :

  • Le caractère « espace » n'est pas admis. Il doit être remplacé, lorsqu'il est requis, par %20 (le caractère « espace » dans la case ligne 2, colonne 0). S'il n'est pas requis, il ne doit pas y en avoir.

Donc, finalement, « Papa » s'écrit %50%61%70%61. Cette manière d'écrire les URL est donc parfaitement légitime bien que totalement « exotique » et consiste à remplacer chaque caractère (d'une URL, d'une chaîne de caractères quelconque...) par son équivalent dans un autre alphabet appelé « échappement % ». Les sites crapuleux et les spammeurs sont les grands utilisateurs de cette méthode de camouflage. Nous pouvons d'ailleurs leur rendre la monnaie de leur pièce et crypter nos adresses e-mail pour éviter leurs robots en utilisant les mêmes outils qu'eux !

Windows, Internet et le codage de certains caractères

Le partage d'informations, sous forme de documents numériques, pose un problème né de la mondialisation des échanges, grâce (ou à cause) de l'émergence du Web sur l'Internet. Il faut faire en sorte que le contenu d'un document numérique puisse être reconnu de manière identique par les systèmes d'exploitation et les applications utilisant des alphabets (des jeux de caractères) totalement différents (oriental, occidental, etc.).

Des codes ont été mis au point pour s'assurer qu'un symbole, dans un système, s'affiche et s'imprime identiquement dans un autre système. Ces codes se sont complexifiés et étendus avec le temps afin de reconnaître de plus en plus de caractères spéciaux propres à des langues de plus en plus nombreuses. Ces codes normalisés ont commencé avec ASCII, EBCDIC, ISO-2022... pour aboutir à Unicode. Evidemment, Microsoft a tenté d'imposer un code exotique qui est invalide et ne sera jamais normalisé.

Coder décoder caractères d'échappement - Escape Code (Échappement %) - De quoi s'agit-il ?
  • Unicode
    Norme de fait - sur-ensemble de ISO/CEI 10646 à laquelle elle correspond caractère par caractère.

    C'est le standard de codage des caractères sur lequel reposent tous les espoirs actuels. Conçu par le consortium Unicode, Unicode est une norme informatique qui vise à donner à tout caractère de n'importe quel système d'écriture de langue un nom et un identifiant numérique, et ce de manière unifiée, quelle que soit la plate-forme informatique ou le logiciel . Il fournit donc une méthode universelle de codage. La première publication sur Unicode remonte à 1991. Il est au cœur de tous les systèmes modernes (Windows, Mac OS, UNIX…), mais n'est pas forcément reconnu/utilisé par toutes les applications. De nouveaux caractères s'y ajoutent encore, par exemple avec le traitement numérique de systèmes (langues et signes) disparus.

  • UTF-8 (RFC 3629) :
    UTF-8 est un codage dérivé de Unicode (UTF = Unicode Transformation Format). Au lieu d'encoder les caractères sur 2 octets, ils le sont de manière variable sur 1 à 4 octets. C'est le codage de base de XML et c'est le plus courant aujourd'hui.

  • ISO-8859-1 (Latin-1; ISO/CEI 8859-1; ISO/IEC 8859-1) :
    Egalement connue sous le nom de Latin-1. Une page HTML déclare utiliser cet encodage avec la balise :
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    Cette norme code 191 des caractères de l'alphabet latin (plus simplement, cette norme s'est trop rapidement employée à ajouter des caractères accentués au code US-ASCII (et passe complètement à côté des caractères français œ, Œ et Ÿ (et de plusieurs autres en allemand, estonien et finois) qui n'ont pas été inclus car l'employeur de l'un des rédacteurs de la norme, un grand fabricant d'imprimantes, n'avait pas inclus ces caractères dans ses imprimantes). En réalité, ce n'est que le premier de 15 codages (de ISO-8859-1 à ISO-8859-15), chacun englobant tout (ou, parfois, partie) des caractères utilisés dans une région ou une forme de langue : Europe de l'Ouest, du Nord, du Sud, et Centrale, Arabe, Grec, Hébreu, Celte, Thaï.

    Notoirement créé rapidement, ISO-8859-1 est très diffusé mais pas idéal. Il faut cependant compter avec lui car il s'agit du codage standard d'UNIX et de nombreux logiciels (dont certains navigateurs et logiciels de courrier), et Unicode en est une extension.
    Les normes ISO-8859-xx ne sont pour autant pas complètes (notamment en ce qui concerne l'extrême-orient), et il est préférable de nos jours de se référer à Unicode ou UTF-8.

    La maintenance du code iso-8859-1 est abandonnée depuis juin 2004 au profit de Unicode (et UTF-8 / UTF-16).

Coder décoder caractères d'échappement - Principales codifications utilisées sur l'Internet

Caractères Microsoft Windows illégaux et leurs équivalents normalisés

codages
invalides
utilisés par
Windows
Entités
« caractère »
normalisées

Pas reconnues
par Netscape 4
Références
numériques normalisées
Résultat
affiché
Commentaire
&#128;&euro;&#8364;Symbole monétaire de l'Euro (1)
&#129;    
&#130;&sbquo;&#8218;Apostrophe anglaise basse (1) (2) (3)
&#131;&fnof;&#402;ƒFlorin, forte musical (1) (2)
&#132;&bdquo;&#8222;Guillemet anglais bas (1) (2)
&#133;&hellip;&#8230;Points de suspension (n'est pas une suite de 3 points mais un symbole unique) (1)
&#134;&dagger;&#8224;Obèle, dague, croix (appel de notes de bas de page) (1)
&#135;&Dagger;&#8225;Double obèle, double croix (1)
&#136;&circ;&#710;ˆAccent circonflexe (1)
&#137;&permil;&#8240;Pour mille (1)
&#138;&Scaron;&#352;ŠS majuscule avec hatchek (háček, caron, antiflexe - accent circonflexe inversé) - langue tchèque (1) (ISO-8859-2 Unicode)
&#139;&lsaquo;&#8249;Guillemet simple allemand et suisse, parenthèse angulaire ouvrante (1) (2) (3)
&#140;&OElig;&#338;ŒLigature o-e majuscule (1) (2) (ignorée des normes ISO Latin-1 (ISO 8859-1) et Unicode (ISO 10646))
&#141;    
&#142; &#381;ŽZ majuscule avec hatchek (háček, caron, antiflexe - accent circonflexe inversé) - langue tchèque (1) (ISO-8859-2 Unicode)
&#143;    
&#144;    
&#145;&lsquo;&#8216;Guillemet anglais simple ouvrant (1) (2) (3)
&#146;&rsquo;&#8217;Guillemet anglais simple fermant (1) (2) (3)
&#147;&ldquo;&#8220;Guillemets anglais doubles ouvrants (1) (2) (3)
&#148;&rdquo;&#8221;Guillemets anglais doubles fermants (1) (2) (3)
&#149;&bull;&#8226;Boulet (type "listes à puces") (1) (2)
&#150;&ndash;&#8211;Tiret demi-cadratin ou tiret moyen « – » (caractère Unicode U+2013, LaTeX --, clavier Mac : Alt + Maj + -)
(Espaces typographiques). Voir The Trouble With EM 'n EN
&#151;&mdash;&#8212;Tiret cadratin ou tiret long « — » (caractère Unicode U+2014, LaTeX ---, clavier Mac : Alt + -)
(Espaces typographiques). Voir The Trouble With EM 'n EN
&#152;&tilde;&#732;˜Tilde : signe diacritique utilisé en Castillan (ñ), en Portugais (ã, õ), en Guarani (ã, ñ, õ) et en Breton (añ). (1)
&#153;&trade;&#8482;TM - Trade Mark (Marque Dépossée)
&#154;&scaron;&#353;šs minuscule avec hatchek (háček, caron, antiflexe - accent circonflexe inversé) - langue tchèque (1) (ISO-8859-2 Unicode)
&#155;&rsaquo;&#8250;guillemet simple allemand et suisse, parenthhse angulaire fermante (1) (2) (3)
&#156;&oelig;&#339;œLigature o-e minscule (1) (2) (ignorée des normes ISO Latin-1 (ISO 8859-1) et Unicode (ISO 10646))
&#157;    
&#158; &#382;žz minuscule avec hatchek (háček, caron, antiflexe - accent circonflexe inversé) - langue tchèque (1) (ISO-8859-2 Unicode)
&#159;&Yuml;&#376;ŸY majuscule avec trema (dans quelques noms propres. (Ignorée des normes ISO Latin-1 (ISO 8859-1) et Unicode (ISO 10646))
Coder décoder caractères d'échappement - Caractères Microsoft Windows illégaux Coder décoder caractères d'échappement - Les divers tableaux et outils de conversions # # # # # # # # # # # # # # # # # # # # # # # #