Cours PLURITAL 2012-2013

Jean-François Perrot & Marie-Anne Moreaux

Examen écrit du mardi 8 janvier 2013               Durée 3h, tous documents autorisés

Corrigé
Lien vers l'énoncé en pdf

Les trois questions que voici sont sans rapport entre elles. Traitez-les dans l'ordre de votre choix.

Veillez à toujours motiver vos décisions...


  1. Cryptographie

    Lorsqu'un éditeur de textes ouvre un fichier en se trompant d'encodage, le résultat peut être surprenant.

    1. Quand vous lisez (attention ! les 'Ã' sont des LATIN CAPITAL LETTER A WITH TILDE) :

      Ça, c'était mon frère René (à gauche, près de la fenêtre) et ça c'était ma sœur Iñès.

      que concluez-vous sur
      • le codage original du fichier
      • le réglage de l'éditeur
      ?

      L'allure générale du texte montre que de lettres accentuées du français sont remplacées par des digrammes bizarres. Cette situation est caractéristique d'un texte codé en utf-8 et lu avec un codage des caractères sur un seul octet. Nous faisons donc l'hypothèse codage original en utf-8, cette hypothèse devant être validée par la découverte du codage sur 8 bits employé par l'éditeur et par la vérification de la correspondance octet par octet.
      1. Selon notre hypothèse, le 'e accent aigu' était représenté dans le fichier par les octets C3A9 (utf-8)
      2. Dans le codage de l'éditeur, l'octet C3 code le caractère LATIN CAPITAL LETTER A WITH TILDE ;
        parmi les deux systèmes sur 8 bits en usage courant (Windows1252/Latin-1 et MacRoman), c'est le premier qui a cette propriété.
      3. Pour confirmer notre trouvaille, voyons le second octet : A9 doit donner le caractère "copyright", c'est bien le cas.
      4. Voyons les autres digrammes :
        • 'e accent grave' = C3A8 en utf-8, devient "A tilde + tréma" en Windows1252/Latin-1
        • 'e accent circonflexe' = C3AA en utf-8, devient "A tilde + FEMININE ORDINAL INDICATOR"
        • 'a accent grave' = C3A0 en utf-8, devient "A tilde + espace insécable" ce qui explique l'espacement dans "(à gauche,"
        • 'c cédille' minuscule = C3A7, majuscule = C387, deviennent respectivement "A tilde + paragraphe" "A tilde + DOUBLE DAGGER", mais ce dernier n'existe qu'en Windows1252, il est exclu de la normalisation en Latin-1 : le codage d'origine était donc Windows1252.
        • 'n tilde' = C3B1 devient "A tilde + plus-ou-moins" en Windows1252/Latin1
        • enfin 'o-e mêlés' = C593 devient "angström + LEFT DOUBLE QUOTATION MARK", en Windows1252 seulement.

      5. Notre théorie utf-8/Windows1252 explique ainsi de manière satisfaisante tous les phénomènes observés,
        nous la tenons donc pour validée par l'expérience.




  2. Et si vous lisez ceci (avec un autre éditeur) :

    Ça, c'était mon frère René (à gauche, près de la fenêtre) et ça c'était ma sœur Iñès.

    que concluez-vous ?

    Il s'agit probablement du même fichier, lu avec un autre codage sur 8 bits. Nous suivons la même démarche qu'à la question précédente : avec quel système l'octet C3 correspond-il au signe "racine carrée" ? Dans la table MacRoman ! Il ne nous reste plus qu'à vérifier les correspondances dans cette table :
    • A9 -> 'copyright',
    • A8 -> 'marque enregistrée', 
    • AA -> 'marque déposée',
    • A0 -> 'DAGGER',
    • A7 -> 'eszett' allemand (ß, pas un β bêta grec),
    • 87 -> 'a accent aigu',
    • B1 -> 'plus-ou-moins', comme précédemment !
    • et enfin C593 -> "ALMOST EQUAL TO + i accent grave".
    Notre théorie utf-8/MacRoman explique ainsi de manière satisfaisante tous les phénomènes observés, nous la tenons donc pour validée par l'expérience.


  3. Comment expliquez-vous la différence entre la situation 1 ci-dessus et celle-ci :

    Ça, c'était mon frère René (à gauche, près de la fenêtre) et ça c'était ma sœur Iñès.

    et avec cette autre ?

    Ça, c'était mon frÚre René (à gauche, prÚs de la fenêtre) et ça c'était ma sœur IñÚs.


    N.B. Les caractères de contrôle ne sont pas traités de la même manière par OpenOffice et par les navigateurs : l'un  en marque la place par un symbole spécial, les autres n'écrivent rien du tout. Reportez-vous donc à l'énoncé en pdf pour bien comprendre cette question !

    On voit que les caractères propres à Windows1252 (le DOUBLE DAGGER et le LEFT DOUBLE QUOTATION MARK) sont remplacés ici par des caractères de contrôle.
    Dans le premier cas, cette disparition est la seule différence avec la situation de la question 1. Nous avons donc affaire à un éditeur qui lit en Latin-1.
    Dans le second cas, il y a en plus le tréma remplacé par LATIN SMALL LETTER S WITH CARON. Il s'agit très probablement d'un de codes ISO-8859, mais lequel ? D'après les exemples donnés dans le cours n°3, ce pourrait être ISO-8859-2, mais dans cette table la lettre en question est codée par l'octet B8 et non par A8. Il s'agit en fait du code ISO-8859-15, alias Latin-9, le seul avec lequel on peut écrire le français correctement...


  4. Dans tous ces exemples, la persistance des caractères ASCII à travers les différents codages rend le texte déchiffrable (pour un francophone). Un texte qui ne contient point d'ASCII devient très mystérieux, on envisage donc d'exploiter ce phénomène pour crypter des messages écrits en UTF-8 avec des systèmes non-latins.
    L'idée est de sauvegarder le texte avec un codage sur 8 bits qui utilise tous les octets au-delà de 128, de transmettre le message ainsi codé dans son codage 8 bits, puis d'ouvrir le fichier transmis en UTF-8.
  • Tentatives d'hameçonnage

    J'ai soigneusement découpé des exemples de messages bizarres en vue de composer un sujet d'examen, mais un coup de vent a dispersé mes papiers. Je me retrouve avec 6 fiches (en-têtes, déclarations MIME, corps du message) extraites de deux messages différents.
    Pouvez-vous reconstituer ces deux messages ?

    1. From: Mohammad Ahmed <mahmad@squ.edu.om>
      Date: Fri, 11 Jan 2013 13:30:23 +0400
      Subject: =?iso-8859-1?Q?administrateur_du_syst=E8me?=


    2. Date: Wed, 9 Jan 2013 20:21:13 +0100 (CET)
      From: "serveurs-mail@libero.it" <serveurs-mail@libero.it>
      Reply-To: "serveurs-mail@libero.it" <serveurs-mail@libero.it>
      Subject: =?UTF-8?Q?SERVEUR*/-_(G00GLE!!-_:AVIS_DE?=
       =?UTF-8?Q?_DESACTIVATION_DE_COMPTE--MAIL=E2=80=8F?=


    3. MIME-Version: 1.0
      Content-Type: text/plain;charset="UTF-8"
      Content-Transfer-Encoding: quoted-printable


    4. MIME-Version: 1.0
      Content-Type: text/plain; charset="iso-8859-1"
      Content-Transfer-Encoding: quoted-printable


    5. Les abonn=C3=A9s aux services *Google* (Compte Gmail! ) sont tenus
      de se faire identifier par l'=C3=A9quipe de notification afin d'=C3=A9viter la
      mise en r=C3=A9ception de votre compte et de toujours b=C3=A9n=C3=A9ficier =
      de nos services. En passant imp=C3=A9rativement le texte ci-dessous.


    6. Am=E9liorez votre QUOTA BO=CETE AUX LETTRES
      Votre bo=EEte de r=E9ception a presque d=E9pass=E9 sa limite de stockage.
      Il ne sera pas en mesure d'envoyer et de recevoir des e-mails en cas de d=
      =E9passement de la limiter
      Et votre compte e-mail sera supprim=E9 de nos serveurs.

    Ces deux messages sont ici donnés en "texte-source", avant interprétation par le client-courrier. L'un et l'autre ont été transmis en quoted-printable (valeur du champ Content-Transfer-Encoding:, n°s 3 & 4), mais ils diffèrent par le codage d'origine de leurs caractères, qui est utf-8 pour l'un et Latin-1 pour l'autre (valeur du champ charset). La déclaration MIME n°3 (utf-8) correspond donc au texte n°5, où le 'e accent aigu' est rendu par 2 octets C3A9, et celle du n°4 au texte n°6, où il apparaît sous la forme E9.
    L'en-tête n°1 est transmis en quoted-printable codant  du  Latin-1 ( Subject: =?iso-8859-1?Q?...), il accompagne donc 4 et 6, tandis que l'en-tête n°2, transmis en quoted-printable codant  de l'utf-8 (Subject: =?UTF-8?Q?...) correspond à 3 et 5.
    Nos deux tentatives de phishing (grossières) se reconstituent donc comme 1-4-6 et 2-3-5.

    Remarques additionnelles :

  • Disparition

    En travaillant sur un texte de journal...

    instant

    on demande toutes les occurrences du mot instantanée, par l'option find all du logiciel de recherche "plein texte" :

    find

    avec un résultat inattendu :

    res

    Avez-vous une interprétation de ce résultat ?

    On soupçonne que les occurrences du mot instantanée qui n'ont pas été attrapées contiennent en fait des 'e accent aigu' décomposés, c'est-à-dire écrits avec deux caractères : e (U+0065) + COMBINING ACUTE ACCENT (U+0301 = CC81 en utf-8).
    On s'attend donc à trouver dans le dump des séquences de 3 octets : 65 CC 81.

    Les explications fournies par hexdump vous satisfont-elles ?

    jfp% hexdump -C instant.txt
    00000000  46 61 63 65 62 6f 6f 6b  20 63 68 65 72 63 68 65  |Facebook cherche|
    00000010  20 73 61 20 76 6f 69 78  20 28 73 69 63 29 20 64  | sa voix (sic) d|
    00000020  61 6e 73 20 6c 61 20 6d  65 73 73 61 67 65 72 69  |ans la messageri|
    00000030  65 20 69 6e 73 74 61 6e  74 61 6e 65 cc 81 65 0a  |e instantane..e.|
    00000040  0a 4c 65 20 72 c3 a9 73  65 61 75 20 73 6f 63 69  |.Le r..seau soci|
    00000050  61 6c 20 46 61 63 65 62  6f 6f 6b 20 61 20 6d 69  |al Facebook a mi|
    00000060  73 20 c3 a0 20 6a 6f 75  72 2c 20 6a 65 75 64 69  |s .. jour, jeudi|
    00000070  20 33 20 6a 61 6e 76 69  65 72 2c 20 73 6f 6e 20  | 3 janvier, son |
    00000080  61 70 70 6c 69 63 61 74  69 6f 6e 20 64 65 20 6d  |application de m|
    00000090  65 73 73 61 67 65 72 69  65 0a 69 6e 73 74 61 6e  |essagerie.instan|
    000000a0  74 61 6e 65 cc 81 65 2c  20 4d 65 73 73 65 6e 67  |tane..e, Messeng|
    000000b0  65 72 2e 20 4c 65 20 70  72 6f 67 72 61 6d 6d 65  |er. Le programme|
    000000c0  20 70 65 72 6d 65 74 20  64 c3 a9 73 6f 72 6d 61  | permet d..sorma|
    000000d0  69 73 20 64 27 65 6e 72  65 67 69 73 74 72 65 72  |is d'enregistrer|
    000000e0  20 64 65 73 20 6d 65 73  73 61 67 65 73 20 76 6f  | des messages vo|
    000000f0  63 61 75 78 20 0a 65 74  20 64 65 20 6c 65 73 20  |caux .et de les |
    00000100  69 6e 74 c3 a9 67 72 65  72 20 64 61 6e 73 20 6c  |int..grer dans l|
    00000110  65 20 66 6c 75 78 20 64  65 73 20 63 6f 6e 76 65  |e flux des conve|
    00000120  72 73 61 74 69 6f 6e 73  2e 0a 4c 65 20 73 65 63  |rsations..Le sec|
    00000130  74 65 75 72 20 64 65 73  20 73 65 72 76 69 63 65  |teur des service|
    00000140  73 20 64 65 20 74 c3 a9  6c c3 a9 70 68 6f 6e 69  |s de t..l..phoni|
    00000150  65 20 70 61 72 20 49 6e  74 65 72 6e 65 74 20 65  |e par Internet e|
    00000160  73 74 20 64 65 20 66 61  69 74 20 64 65 20 70 6c  |st de fait de pl|
    00000170  75 73 20 65 6e 20 70 6c  75 73 20 0a 63 6f 6e 63  |us en plus .conc|
    00000180  75 72 72 65 6e 74 69 65  6c 2e 20 4c 65 73 20 6d  |urrentiel. Les m|
    00000190  65 73 73 61 67 65 72 69  65 73 20 69 6e 73 74 61  |essageries insta|
    000001a0  6e 74 61 6e c3 a9 65 73  20 63 6f 6e 6e 61 69 73  |ntan..es connais|
    000001b0  73 65 6e 74 20 75 6e 20  65 6e 67 6f 75 65 6d 65  |sent un engoueme|
    000001c0  6e 74 20 73 69 6d 69 6c  61 69 72 65 2e 20        |nt similaire. |
    000001ce



    Oui, tout à fait, la séquence attendue apparaît aux lignes 030 et 0a0.
    En revanche, le 'é' de la 3ème occurrence du mot, dûment repérée par le logiciel, en ligne 1a0, est bien codé C3A9.