Astuce : trouver le caractère UTF8 associé à un code hexa
December 29th, 2011
3 comments
Dans mes péripéties mod_security, j’ai eu l’erreur suivante :
[Thu Dec 29 08:44:22 2011] [error] [client xx.21.3.31] ModSecurity: Warning. Pattern match "\\W{4,}" at ARGS:typeLibelle. [file "/usr/local/apache2/conf/crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "507"] [id "960024"] [rev "2.2.2"] [msg "SQL Character Anomaly Detection Alert - Repetative Non-Word Characters"] [data " \\xc3\\xa0 "] [hostname "dev.xxxx.fr"] [uri "/xxxx"] [unique_id "TvwaVgpArWEAAHu7CtMAAAAG"]
Et la question qui tue : à quoi correspond \\xc3\\xa0 ? Je me doutais que c’était un caractère UTF8, j’ai donc demandé à mon expert jeu de caractères (aka Laurent Blume) qui m’a donné l’astuce suivante :
- Avant tout, avoir un système en UTF-8
- Lancer vim (pas besoin d’ouvrir un fichier)
- Taper un caractère accentué, par exemple é
- Convertir en hexadécimal à l’aide de la commande “:%!xxd”, ce qui va donner quelque chose du genre “0000000: c3a9 0a”
- Modifier le c3a9 en c3a0
- Reconvertir en texte, à l’aide de la commande “:%!xxd -r”, et miracle on obtient le caractère “à” !
Categories: Sysadmin