Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 262. feladat (2011. március)

I. 262. Szövegek titkosításának régen használt módszere a betűcsere, amelynél egy meghatározott rendszer szerint az ábécé egyes betűit egy másikra cserélik. Ezt már a számítógépek használata előtt is aránylag könnyen feltörték statisztikai módszerekkel, az egyes betűk előfordulási arányait figyelve az adott nyelvben és a kódolt szövegben.

Rendelkezésünkre áll a titkos.txt állományban egy betűcserés módszerrel titkosított szöveg. A szöveget a betűcserék előtt még át is kódolták.

Az átkódolás a következőképpen történt:

[--] Az ékezetes magánhangzók ékezet nélküli párjukkal lettek helyettesítve.

[--] A szóközöket q betűvel helyettesítették.

[--] A szövegből elhagyták az írásjeleket és minden más szövegtagolást.

[--] A teljes szövegben nagybetűs írásmódot állítottak be.

Ezek után végül minden betű helyére pontosan egy-egy másik került, végig azonos szisztéma szerint.

A szöveg kezdőrészlete:

Készítsünk programot i262 néven, amely segít megfejteni a titkosított szöveget.

A program első parancssori argumentuma legyen a megfejtendő titkos szöveget tartalmazó állomány neve, második argumentumaként pedig egy hosszú, magyar nyelvű szöveget tartalmazó állomány nevét lehessen megadni. Az állományból a magyar nyelvű szövegre jellemző betű-előfordulási arányokat határozzuk meg, ennek alapján próbálkozhatunk a titkos szöveg karakterhelyettesítésnek megfejtésével. Ilyen állományokat például a Magyar Elektronikus Könyvtárban találhatunk. A harmadik argumentum az általunk (legalábbis részben) visszakódolt szöveg kimeneti állományának neve legyen.

A program készítse el az első két állomány betűstatisztikáját és ezt jelenítse meg a képernyőn az előfordulás gyakorisága szerint csökkenően. A megfejtendő szöveg első 100-200 karakterét is jelenítse meg, és ezen lehessen karaktercserét végrehajtani. A már lecserélt karaktereket lehet kisbetűs írásmóddal megjeleníteni. Nem szükséges a programmal az összes nagybetűs karaktert egyszerre lecserélni, megengedett a szövegállomány utólagos javítása.

Beküldendő egy tömörített állományban (i262.zip, i262.rar):

[--] a megfejtett szöveg (megfejtes.txt),

[--] a program forráskódja (i262.pas, i262.cpp, ...),

[--] a program rövid dokumentációja (i262.txt, i262.pdf, ...), amely tartalmazza a program használatának bemutatását, a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.

(10 pont)

A beküldési határidő 2011. április 11-én LEJÁRT.


Mintamegoldásként Szabó Attila (Pécs, Leőwey Klára Gimnázium, 10. osztály) tanuló munkáját közöljük: i262.pas

Megfejtés

karinthy frigyes zold barackok egy nagy barackfan tavasszal mikor melegen es baratsagosan kezdett sutni a nap kinyitottak szemuket a picike zold barackok es...

Forrás: http://www.mek.iif.hu/porta/szint/human/szepirod/magyar/karinthy/barack.hun

Ékezetekkel és írásjelekkel és tagolva:

Karinthy Frigyes:

ZÖLD BARACKOK

Egy nagy barackfán tavasszal, mikor melegen és barátságosan kezdett sütni a nap, kinyitották szemüket a picike, zöld barackok, és kiváncsian körülnéztek.

- De jó meleg van - mondta az egyik barack, akit Gábor baracknak hívtak. - Mitől van olyan jó meleg? ...

A program leírásának részlete:

Magyar nyelvű mintaszövegnek Jókai: Az arany ember című regényének szövegét használtam.

A statisztika elkészítésében a titkos szövegben az 'U' betű, a mintában a szóköz volt messze a leggyakoribb, ebből következően az 'U' betű a szóközt helyettesíti.

A titkos szövegben több 'B' betű jelent meg: a magyarban a leggyakoribb egybetűs szó az 'a' névelő, így a 'B' betű megfelelője az 'a'.

Több helyen látható 'aY' szó, aminek megfelelő magyar szavak közül a leggyakoribb az 'az', tehát az 'Y' megfelelője a 'z'.

A gyakorisági elemzés szerint a titkos szövegben 'J' és a mintaszövegben 'e' gyakorisága közel azonos, így azokat megfeleltethetjük egymásnak.

Több helyen látható az 'eF' szó, aminek leggyakoribb megfelelője a magyar nyelvben az 'es' ('és') szó, tehát 'F' megfelelője az 's'.

A szövegben gyakran látható a 'PS' együttes, ami valamely kettős betű megfelelője lehet. Az 'ePS' szó gyakori előfordulásából sejthető, hogy 'PS' a 'gy' megfelelője, azaz 'P'='g' és 'S'='y'.

A 7. sorban látható a 'NVyaO' szó, amiből látható, hogy 'Vy' is egy kettős betű, azaz 'V' 'l', 'n' vagy 't' megfelelője.

Látható, hogy 'V' gyakorisága legközelebb 'l'-éhez áll, ezért 'V'='l'-et feltételezzük. Az 1. sor végénél látható a 'EaZaAsagNsaO' szó, amelynek végén a '-sag' feltehetően főnévképző, amihez toldalékként az '-os' és '-an' képzők illenek: ebből sejthető, hogy 'N'='o' és 'O'='n'; ezt a gyakorisági elemzés is alátámasztja.

A 7. sorban látható a 'Molenyesen' szó, amely minden bizonnyal a 'folenyesen' szónak felel meg: 'M'='f'.

Az 5. sorban látható 'aAAol a nagy saZgaAol' kifejezésben meglátható a '-tol' rag, amiből 'A'='t'.

A 7. sorban látható 'az Qs egy' kifejezésben a második szó sejthetően 'is', tehát 'Q'='i'.

A szöveg második szava 'fZigyes', aminek egyedüli értelmezése 'frigyes': 'Z'='r'. Ebből a névből sejthető, hogy a szöveg első szava 'karinthy', amit a szöveg meglevő karakterei megerősítenek: ebből 'T'='k' és 'H'='h'. A szöveg 7. szava 'EaraCkfan', amiből sejthető, hogy 'EaraCk' valamilyen gyümölcs neve: ez a 'barack', tehát 'E'='b' és 'C'='c'. A szöveg első sora ezután könnyen elolvasható, a hiányzó karakterek: 'I'='d', 'L'='v', 'G'='m'. A szövegből hiányzó maradék karakterek: 'X'='u', 'R'='p', 'W'='j'. Eddig a 'D' és 'I' karakterek megfejtését nem találtuk meg, ezeknek a magyar 'w' és 'x' betűk felelhetnek meg. Ezek a karakterek nincsenek a szöveg kiírt részében.

A megfejtés kimentése után a szöveg közepe táján a 'Dilde oszkar' szöveg található, ami nyilván 'wilde oszkar'-nak olvasható, tehát 'D'='w', és így 'I'='x'. A teljes szöveget megfejtettük. A gyakoriságok is közelítőleg megfelelnek a magyar mintaszöveg eloszlásának.

Ha a megfejtés során egy karakter megfeleltetését eltévesztjük, azt könnyen javítani lehet.


Statisztika:

7 dolgozat érkezett.
10 pontot kapott:Barta 111 János, Leitereg András, Szabó 928 Attila.
5 pontot kapott:1 versenyző.
4 pontot kapott:1 versenyző.
3 pontot kapott:2 versenyző.

A KöMaL 2011. márciusi informatika feladatai