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