Op 30 juni 1999 werd in een korenveld nabij West Alton, Missouri1 (VSA) het levenloze lichaam gevonden van de 41-jarige Ricky McCormick. Dat was op 24 kilometer van zijn woonplaats, wat vreemd was omdat hij geen auto had. Vijf dagen daarvoor werd hij voor het laatst in levende lijve gezien. In zijn zakken zaten deze twee handgeschreven documenten.

notitie 01
Handgeschreven document dat op 30 juni 1999 werd teruggevonden op het levenloze lichaam van Ricky McCormick.
notitie 02
Handgeschreven document dat op 30 juni 1999 werd teruggevonden op het levenloze lichaam van Ricky McCormick.

Onderzoekers denken dat de aantekeningen dateren van drie dagen voor het lichaam van McCormick werd gevonden. Zijn familie bevestigde dat hij al sinds zijn jeugd dergelijke gecodeerde notities gebruikte. Maar zowel de FBI als de American Cryptogram Association2 zijn er niet in geslaagd om de notities te ontcijferen. In 2011 deed de FBI daarom een publieke oproep om mee te helpen om de notities te ontcijferen. Dan Olson — hoofd van de Cryptanalysis and Racketeering Records Unit3 van de FBI — legde hierover volgende verklaring af:

Het breken van de code kan onthullen waar het slachtoffer voor zijn dood verbleef en kan dus leiden tot het oplossen van een moordzaak. Niet elke cijfertekst die wij ontvangen wordt onder dergelijke omstandigheden onder onze deur geschoven.

Dit is geen 1 aprilgrap — de oproep van de FBI kan je hier4 nalezen. Als je kunt helpen met ontcijferen dan vind je daar ook hoe je de FBI kunt contacteren.

Opgave

Elke regel van het tekstbestand notes.txt5 bevat een patroon $$p$$ uit de verzameling $$\mathcal{P}$$ van alle strings die uit nul of meer letters, cijfers en leestekens bestaan. Gevraagd wordt:

  1. Bepaal zo kort mogelijke reguliere expressies voor de volgende deelverzamelingen van $$\mathcal{P}$$:

    • $$\mathcal{P}_1 = \{\,p \in \mathcal{P}\,|\,$$elk karakter van $$p$$ verschilt van zijn vorige en volgende karakter$$\,\}$$

      voorbeeld: uCw)1snmT7exJ~{^Q2E^2czMS&4.|n4@nLrZpEvZL)&>U.47gOFf!J>lv%}4 $$\in \mathcal{P}_1$$
        bG?&PL#/]hJ5&$-SG+|]P`!#V.L2D6%;X}n}q@}:ToXqi,qcaaYG@+z'70g> $$\not \in \mathcal{P}_1$$
    • $$\mathcal{P}_2 = \{\,p \in \mathcal{P}\,|\,$$de hoofdletters van $$p$$ spellen het woord SECRET$$\,\}$$

      voorbeeld: k}y.5{;r5%l"*j6`St5rsE}xq|yjCmmR\a|&=b(a><+7j+m#E-T1he1*o<x. $$\in \mathcal{P}_2$$
        wKbFG3]M<=LU)HQh]G:Zo,t~[~dr3&/:BBTMYik>dH*_bt=GTe(P234S]V(, $$\not \in \mathcal{P}_2$$
    • $$\mathcal{P}_3 = \{\,p \in \mathcal{P}\,|\,p\ $$bevat een reeks van drie opeenvolgende$$\ ^{(1)}$$ cijfers$$\,\}$$

      (1) opeenvolgend heeft hier een dubbele betekenis: de drie cijfers volgen als karakters op elkaar in het patroon (er staan dus geen andere karakters tussen) en ze volgen ook op elkaar in de oplopende getallenreeks (dus wel 234 maar niet 179)

      voorbeeld: W0So{W7~Bu~<Icr-R.NZ<(0.f%_d-mt1z567QBM<F7;m)6T<>wszc2rV{uJ" $$\in \mathcal{P}_3$$
        5[pn2>-1KkPR1PaJ1!TS!E)9H(F3!}^M937_a\g/EsxTY(eLj:bD[\qnh]hm $$\not \in \mathcal{P}_3$$
    • $$\mathcal{P}_4 = \{\,p \in \mathcal{P}\,|\,p\ $$bestaat afwisselend uit drie opeenvolgende letters$$\ ^{(2)}$$ en drie opeenvolgende cijfers of leestekens$$\ ^{(3)}\,\}$$

      (2) hoofdletters of kleine letters

      (3) dit betekent meteen ook dat de lengte van $$p$$ een veelvoud van 3 moet zijn

      voorbeeld: DTw=-1Ger?5(yXE&,=Bkv-9(mnP+07CDw&7#guL}8!PVe0,*fCB/''gsG($] $$\in \mathcal{P}_4$$
        0?*mXf<3#kyj"^6qAy+!,pxF0/(pBM;99ZSu78~xdG%7;wjz0-1VZl^[9WIa $$\in \mathcal{P}_4$$
        @w8^kh&.G-WGyF\9aLcfW$/c7~p*[gn5U3H?:yP?}H18q74d"fxr^[nvL8t: $$\not \in \mathcal{P}_4$$

    Geef telkens een Unix commando waarin de reguliere expressie gebruikt wordt door een commando uit de grep familie om enkel de regels van het tekstbestand naar stdout te schrijven waarvan het patroon $$p$$ behoort tot $$\mathcal{P}_i\ (i = 1, 2, 3, 4)$$.

  2. Bepaal als volgt de woorden $$w_1\ w_2\ w_3\ w_4$$ van een geheime boodschap:

    • woord $$w_1$$ bestaat uit de kleine letters op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_1 \cap \mathcal{P}_2$$

    • woord $$w_2$$ bestaat uit de kleine letters op de unieke regel waarvan $$p$$ behoort tot $$ \mathcal{P}_2 \cap \mathcal{P}_3$$

    • woord $$w_3$$ bestaat uit de kleine letters op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_3  \cap \mathcal{P}_4$$

    • woord $$w_4$$ bestaat uit de kleine letters op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_4 \cap \mathcal{P}_1$$

    Geef telkens een Unix commando waarin de reguliere expressies voor de verzamelingen $$\mathcal{P}_i\ (i = 1, 2, 3, 4)$$ gebruikt worden door commando's uit de grep familie om woord $$w_j\ (j = 1, 2, 3, 4)$$ op te zoeken in het tekstbestand en uit te schrijven naar stdout. Hierbij is het niet toegelaten om woord $$w_j$$ letterlijk uit te schrijven (bv. echo $$w_j$$).