Frekvenční analýza - program

Ahoj všichni,
mám takový problém. Luštím jednu mysterku a už jsem pochopil, že po dobrým to nepůjde. Takže nastává hrubá síla a s ní související frekvenční analýza. A jelikož jsem od přírody línej a na strejdov Gůglu jsem nic nenašel, ptám se tady. Nevíte někdo o nějakém programu, který by dokázal frekvenční analýzu provést za mě (tj. vhodit text a na základě výběru jazyka vyhodit už decryptovaný)? Moc díky všem!
PS: Zdržte se prosím komentářů: tak si to najdi, napiš si ten program sám, a to je takovej problém tu analýzu udělat sám, apod. Děkuji

Drobst: z zadne frekvenci analyzy ti nevyleze desifrovany text.
Ale k veci. Ja mam oblibene tyto stranky Ciphers and Codes na nich je i frekvencni nalyza http://rumkin.com/tools/cipher/frequency.php (a fakt to neni tezke najit :))

Myslel jsem to trochu jinak. Tady ty stránky už jsem si našel taky, dokonce už i výsledek provedl, teď mi jde o to, jestli je nějaký program, který by na základě textu a např. takovéto tabulky dokázal udělat tu druhou část frekvenční analýzy za mě.

Kterou duhou cast? Frekvencni analyza ma jen jednu cast - podle ni nese sve jmeno: zjisti frekvencni vyskyt jednotlivych znaku v uvedenem textu. Ty si predstavujes neco, co by ti sestavilo text podle zjistenych cisel? To je snad nesmysl, ne? Jak dlouhy je ten text, bude to mit vubec smysl? Podle ceho se vezmou referencni tabulky - kazdy typ textu ma jine frekvence znaku (odborne - podle oboru, obecny jazyk, spisovny jazyk, novinove clanky, vpisovane vyrazy do krizovek, …) Navic je to jen pravdepodobnostni hodnota a jeste nektere znaky mohou mit stejny pocet vyskytu, … To je jen zaklad problemu.
Frekvencni analyza neni nastroj na reseni, ale pomucka pro odhaleni principu sifrovani (a zdaleka ne vzdy ucinna nebo pouzitelna - schvalne ji aplikuj na Vigenerovy sifru).

jak píše gord…to se nedá úplně zautomatizovat

Ale jo, takovej nastroj existuje - CrypTool, ale zase tak snadny to neni, musi se zadavat texty pro porovnani a taky musis vedet o jakou sifru jde. Jinak proste zkousis jednu za druhou. Zadny nastroj, ktery by automaticky dokazal rozlustit kratky text asi neexistuje a asi ani nikdy existovat nebude.

Nemohu si nerýpnout… ale Frekvenční analýza a hrubá síla jsou dvě dost odlišné věci. :smiley: … jinak jsem taky luštil jednu vypečenou mysterku… kde byla potřeba frekvenční analýza… několik stran vymyšlených znaků… a tak jsem počítal a počítal a počítal… a pak to nějak zapadlo do šuplíku a na dodělání to čeká… Kdo je z okolí Plzně asi tuší, co za vypečenou mysterkou to bylo…

Frekvenční analýza je dobrá akorát na jednodušší šifry. Plně automatický nástroj je skoro nesmysl. Hlavní písmena s významným výskytem jako je E, A a podobně se dají. Problém nastává s tím, že většina písmen se opakuje jenom jednou, dvakrát. To pak nastává ta druhá část práce, najít takovou kombinaci, aby z toho lezl smysluplný text. Zkus to v excelu, tam to celkem jde - jedno písmeno - jedna buňka. Je to ale šichta

Nahrazeni v pythonu ;):


import string
zasifrovanyText = "yxyxyx"
mapovani = string.maketrans( "xy", "ah" )
print zasifrovanyText.translate( mapovani )

Zrovna u Vigenerovy šifry je frekvenční analýza pořád velice účinný pomocník, jen je aplikace trochu složitější… teda ne zas tak, jenom potřebuješ delší text a mít představu o délce klíče (nebo dostatečně dlouho zkoušet) a analyzovat každé n-té písmeno. Několik Vigenerových šifer jsem takhle vyluštil.
Ale rozhodně souhlas, frekvenční analýza je jenom jednou ze šikovných pomůcek a u spousty šifer je úplně k ničemu (alespoň bez dalších znalostí o šifře). Nejde udělat jednoduchý kouzelný program, který by na výstupu vyplivnul z neznámého textu zašifrovaného neznámou šifrou smysluplný text.

edit:
Ještě přidám odkaz na moc pěknou automatickou internetovou aplikaci na lámání Vigenerovy šifry… PyGenere

Dobře, asi jsem jsem se blbě vyjádřil. Myslel jsem nějaký program, do kterého bych zadal, že znak X má v textu 10% zastoupení, Y = 20%, Z = 30% (zašifrovaný text), A = 10%, B = 20%, c = 30% (text, který by mi vylezl). Vždycky jsem si totiž myslel, že frekvenční analýza je i tady to, ale asi jsem se mýlil.

Já zrovna nedávno tuhle šifru řešil a náhodou jsem padl na něco zajímavého:

http://sifry.sourceforge.net/main.html

Asi je lepší pokusit se uhodnout heslo a posun, než řešit nerozluštitelnou šifru …

Uf, tak teď nechápu, co vlastně chceš, už vůbec.:slight_smile:
Frkvenční analýze je…

  1. Máš zdrojový text (je jedno jestliotevřený nebo zašifrovaný)
  2. Zpočítáš výskyty jednotlivých znaků, popřípadě ještě podělíš celkovým počtem všech znaků
  3. Vyleze ti něco jako:
    A: 0.0%; B: 2.1%; C: 6.2%; D: 1.5%…

Toť pro frekvenční analýzu vše.

Ty teda chceš něco, co ti text na základě výsledků frekvenční analýzy dešifruje?

edit: Aha, už asi vím… chybí mi tam ještě bod 4), kde se porovnají výsledky z bodu 3) s tabulkami frekvencí písmen charakteristickými pro určitý jazyk a určí se, jaké písmeno zašifrovaného textu odpovídá jakému písmenu otevřeného textu.
Já to dělám většinou podle grafů, což je dobré tak maximálně pro Caesarovu nebo Vigenerovu šifru, kde jsou všechna písmena abeced(y) posunuta vždy stejně.

Přesně takhle jsem to myslel.

To se dela ‘opticky’. Vezmou se skupiny pismen s velkym vyskytem a hledaji se podobne skupiny v zasifrovanem textu.

Zautomatizovat by to slo korelacni analyzou. Spocitat korelaci frekvencni tabulky jazyka a frekvencni tabulky zasifrovaneho textu. Pak tabulky posunout o pismeno a opet spocitat korelaci. Pak vybrat jako vhodne kandidaty pripady s nejvyssimi korelacemi. Ovsem fungovalo by to pouze za predpokladu, ze jsou abecedy oproti sobe posunute o konstantni pocet pismen. Pokud je to nejak pomichane, tak jen rucne.

Ono by se to dalo zautomatizovat, t.j. frekvencni analyzou vytipovat nektera pismena, pak zkouset ruzne varianty a pomoci slovniku to kontrolovat.

Jinak nez delat jen frekvencni analyzu jednotlivych pismen, tak je lepsi delat frekvencni analyzu paru a trojic pismen. Nektere kombinace jsou bezne, jine neobvykle nebo neexistujici.

Zrovna vcera jsem pro zabavu vylustil jednu substitucni sifru v anglictine. Vubec nebylo potreba delat frekvencni analyzu. Stacilo se zamerit na kratka slova. Nasel jsem par pravdepodobnych vyskytu slova ‘the’, to odhalilo slova ‘they’, ‘them’ a hned jsem mel 5 pismen. Jedine jednopismenove slovo je ‘a’ a za apostrofem byva ‘s’. A mel jsem jich sedm. A tak dale.

A přesně tohle umí ten CrypTool - uděláš analýzu zašifrovaného textu a na základě frekvence písmen ve srovnávacím textu se převede ten zašifrovaný text.

Ten CrypTool vypadá fakt zajímavě. Díky za tip.

Nadherny priklad lusteni jednoduche substituce je v povidce Zlaty Brouk od E.A.Poe. Kdyz jsem byl v sedme tride, tak se mi ten naznaceny princip tak libil, ze jeste nez jsem docetl povidku, rozlustil jsem cely text, co tam byl.

Neco podobneho se da i v knizkach o Artemisovi od Coifera.

A u Mlade Boleslavi je tehle povidce venovana keska [cache]GC20T98[/cache] :wink:

Ahoj, zkus se podivat na tohle, jsou to takove jednoduche programky: http://temp.kvapa.com/freq.zip.