Tijdens de Vietnamoorlog maakte het Amerikaanse leger gebruik van het Diana Cryptosystem. Deze methode om berichten te coderen en decoderen combineert het originele bericht met een zogenaamd one-time pad. Hierdoor kan de methode in theorie niet gekraakt worden indien ze volgens de regels van de kunst gebruikt wordt.

Een one-time pad is eigenlijk niets anders dan een willekeurige opeenvolging van letters, die slechts eenmalig gebruikt wordt om een bericht te coderen en decoderen. Daarom kregen de soldaten een boekje mee dat enkel bestond uit willekeurig gegenereerde hoofdletters. Omwille van de leesbaarheid gebeurde de weergave in groepen van vijf letters, met zes van die groepen per regel die van elkaar gescheiden werden door één enkele spatie. De weergave van het one-time pad zag er dan bijvoorbeeld als volgt uit:

      YEUDF KGCQD LFDSN VMEOT MCEYY YPXKA
      GJUDS VWUIT TUBXJ PHARC KXDJY QKQOV
      IGLEY VFLQL JNFAN OQWRI CIVNJ KKZRE
      CQMII YYCWY ZMZNK SFDXT IPJKK VVMEO
      ERIQG KMQPB DSAIC QWNXY MSBRK MFHWC
      DIUMX BYHAL ZQFZB ROCWH WYILX XXFGH
      GAEDL KLDYR JJXPB TDPSN LTZWN ZQRUI
      EEHYF PHZVV IVJPA SVAXM SKNMJ JHLGY
    

Opgave

Elke regel van het tekstbestand diana.txt1 bevat zes groepen van vijf hoofdletters, gevolgd door een woord dat enkel bestaat uit kleine letters. De zes groepen en het woord worden telkens van elkaar gescheiden door één enkele spatie. Gevraagd wordt:

  1. Bepaal reguliere expressies voor elk van onderstaande verzamelingen. Daarbij staat $$\mathcal{O}$$ voor de verzameling van alle mogelijke strings bestaande uit zes groepen van vijf hoofdletters, die telkens van elkaar gescheiden worden door één enkele spatie. Probeer de reguliere expressies bovendien zo kort mogelijk te houden.

    • $$\alpha = \{ o \in \mathcal{O}\,|\,$$ $$o$$ bevat twee groepen waarvan de letters in omgekeerde volgorde staan $$\}$$

      voorbeelden: IWUWC RCIVL VRTYO LVICR XVVRW BDGAP fragmental $$\in \alpha$$
        DKXHM LRKFR GJEDZ BZHPB TONIZ FUDEE virtual $$\not\in \alpha$$
    • $$\beta = \{ o \in \mathcal{O}\,|\,$$ elke groep van $$o$$ bestaat afwisselend uit klinkers en medeklinkers $$\}$$

      voorbeelden: QIVEB OXAGI RAPUH NORAP AYABI SISUQ omnibus $$\in \beta$$
        ZEXAT FWOWK UWAWO POTAM OMXXA XUSIW performant $$\not\in \beta$$
    • $$\gamma = \{ o \in \mathcal{O}\,|\,$$ eerste letter van elke groep in $$o$$ verschilt van eerste letter van het woord $$\}$$

      voorbeelden: RZYZF GUFKB HCVRQ LOAIN NLIKE HWQEK madronos $$\in \gamma$$
        WBTGE UWJBW KMZJZ CLMQB NPZIR RDZDC cleanness $$\not\in \gamma$$
    • $$\delta = \{ o \in \mathcal{O}\,|\,$$ van de middelste 3 letters van elke groep in $$o$$ zijn er altijd minstens 2 gelijk $$\}$$

      voorbeelden: ZXFFI RDPPQ LGWGI TZZBW DQQUC IVUUP doodle $$\in \delta$$
        ZENUG SDHVE WAPBE DFELN LNORM SVMQU hornet $$\not\in \delta$$

    Gebruik een commando uit de grep familie om enkel die regels van het bestand diana.txt2 te selecteren, waarvan de reeks letters van het one-time pad behoort tot de opgegeven verzameling.

  2. Beschouw de verzamelingen $$\alpha$$, $$\beta$$, $$\gamma$$ en $$\delta$$ zoals hierboven gedefinieerd. Gebruik nu deze verzamelingen om op de volgende manier een boodschap bestaande uit vier woorden te achterhalen:

    • Het eerste woord staat op unieke regel met het patroon uit de verzameling $$\alpha \cap \beta$$

    • Het tweede woord staat op unieke regel met het patroon uit de verzameling $$\beta \cap \gamma$$

    • Het derde woord staat op unieke regel met het patroon uit de verzameling $$\gamma \cap \delta$$

    • Het vierde woord staat op unieke regel met het patroon uit de verzameling $$\delta \cap \alpha$$

    Geef telkens een Unix commando dat elk van deze woorden opzoekt in het bestand en uitschrijft naar standaard uitvoer (zonder het patroon dat aan het woord voorafgaat). Hierbij is het dus niet toegelaten om het woord letterlijk uit te schrijven (bv. echo xxx).