Diskuze k úloze číslo 11

Toto fórum slouží výhradně k diskuzím o úloze číslo 11. Během hry je zakázáno diskutovat o zadání i řešení této úlohy kdekoliv jinde, než zde. K diskuzi o ostatních úlohách prosíme využijte jim příslušná fóra. Prosíme, nekažte hru ostatním!
Re: Diskuze k úloze číslo 11 petr.skovron (14. 11. 2009 - 15:54) Sbalit(13)
Imho letos jedna ze dvou nejluxusnejsich uloh.

Akorat me trochu zklamalo, ze kdyz bych chtel podvadet a napadlo by me to, tak ze by se heslo dalo uvidet po grafickem zobrazeni zakryptene varianty (ktera je v tom skriptu zjevne najitelna).

Ale trasovani vimoveho skriptu jsem si vylozene uzival! :-)
Re: Diskuze k úloze číslo 11 milan (14. 11. 2009 - 17:20) Sbalit(11)
Myslis prevest to zakodovane heslo na binarni soustavu a prohlednout si ho?
To by urcite slo. Ona ta uloha byla vubec jednodussi nez to vypadalo. Ale to bylo zaroven i ucelem - mela to byt uloha s 'Aha' efektem - silenost neni az tak silena, jak to na zacatku vypada :-)

Mimochodem, uplne jednoduche by to nebylo. Jsou tam dve (i kdyz primitivni) ochrany - schvalne si to zkus.
Re: Diskuze k úloze číslo 11 Martin "Marble" Beránek (14. 11. 2009 - 17:55) Sbalit(10)
Pěkná šílenost. :) Jak dlouho jste to vymýšleli a psali?

No já jsem nejprv začal trasovat zdroják, aby se u mě vůbec konalo video (pořád mi není úplně jasné, kam se mělo správně psát heslo, já nakonec dokonvergoval k variantě na první řádek místo(!) originálního promptu), ale poté, co se začly množit marky a registry jsem se v tom vcelku ztratil a přešel jsem na umazávání scriptu od konce.

Ale fakt, že jsme celou dobu čekal, že kontrolní fráze bude složená z "x-ek" po zarotování převedených zpátky na písmenka.
Re: Diskuze k úloze číslo 11 milan (14. 11. 2009 - 21:48) Sbalit(7)
Heslo se mělo psát samozřejmě ZA prompt na prvním řádku (čili za dvojtečku).

Jinak díky za pochvalu úlohy, jsem rád, že cca dva týdny ladění nesou ovoce.

Nejsi první, kdo by rád měl "mazanější" i kontrolu hesla (první jsem byl totiž já :-) ), ale bohužel jsem to musel zavrhnout. Už takhle ta srandička s animací natáhla kód do délky a šokovatelnosti, že testeři měli tendenci utíkat :-) Proto jako nápověda byl přichystaný původní, kratší a výrazně přehlednější kód bez animací.
Re: Diskuze k úloze číslo 11 Michal Kubeček (14. 11. 2009 - 21:53) Sbalit(5)
Já to vyřešil takovým polopodvodem - při zkoumání maker jsem přišel na
to, že když se po vykonání testu spustí ještě @f, tak se vypíše řetězec,
podle kterého se to kontroluje. Takže pak stačilo postupně zkoušet AAAA,
BBBB, ... a porovnávat s obsahem pomocných řetěců v prostřední části a
kontrolním výsledkem.

Re: Diskuze k úloze číslo 11 milan (14. 11. 2009 - 22:10) Sbalit(3)
Však to je také v principu správný přístup: poté, co člověk zjistí, proč úloha funguje (vim čte ze souboru jako by to bylo z klávesnice), tak se vyplatí jít "od zadu", když (ten důležitý) konec je tak zřejmý. Pak také úloha není tak těžká, jak se tváří.

Co se týče využití "slovníkového útoku", tak jsem zvažoval obranu proti němu, ale usoudili jsme v kroužku organizátorském, že to už by bylo moc :-)
Re: Diskuze k úloze číslo 11 pht (15. 11. 2009 - 15:32) Sbalit(2)
Já jsem použil taky polopodfuk. Sekvence `o5j"vPx0p těsně před porovnáním výsledku zobrazí zakódovaný vstup. U toho jsem si všiml, že se vlastně celým procesem jen "lehce promíchá" substituce písmen za pětice znaků z tabulky u "NNNNNAAAAAJJJJJDDDDDIIIIIHHHHHEEEEESSSSSLLLLLOOOOO". Tudíž jsem vzal výsledný kód (před Gratulujeme!) a našel "podobné" pětice v uvedené tabulce a bylo.
Re: Diskuze k úloze číslo 11 tomi (15. 11. 2009 - 18:22) Sbalit(1)
Anebo stačilo zakomentovat ty dva :s///, aby tam ten zakódovaný vstup zůstal.
Re: Diskuze k úloze číslo 11 shichman (16. 11. 2009 - 5:32) Sbalit(1)
Při výpisu zprávy o správném hesle se tiskne obsah registru "v (a pak se nahrazuje právě tou zprávou). To mi připadalo zajímavé, takže jsem si na vstup dal postupně abecedu, přes :reg"v zjistil co z toho vypadlo, určil délku hesla na 9 znaků a pak porovnával výstupní pětice pro abecedu s tím, co očekával ViM a orgové.
Re: Diskuze k úloze číslo 11 Martin "Marble" Beránek (15. 11. 2009 - 10:11) Sbalit(1)
Tak jsem se na to podíval vyspalý a už to taková záhada není, stačí aplikovat patch "14ggAI" a bude to odolné i proti sabotérům, kteří mají v systémovém (to aby nepomohlo -i NONE) vimrc schováno set ignorecase.
Re: Diskuze k úloze číslo 11 ruthion.bisclaveret (16. 11. 2009 - 15:27) Sbalit(2)
A já, trubka, psal zas do oblasi mezi rovnítka ... včera v noci.
Po vyspání a nápovědě jsem konečně přišel na to, kam to heslo patří.
Re: Diskuze k úloze číslo 11 mirousek (17. 11. 2009 - 15:29) Sbalit(1)
Ano, kam to napsat jsem zjistil až po půl hodině ladění.
Re: Diskuze k úloze číslo 11 gavento (15. 11. 2009 - 0:19) Sbalit(1)
Trala! Krasna.

Musim se priznat, ze jsem to prave tak "vyhaluzil" -- potom, co si to clovek zpomalil, opticky zjistil, jak se to hybe, a nechal si ukazat, co ma vyjit, (prepsanim tabulky znaku na kontrolni vysledek), uz by stacilo to "rucne" o 17 posoupnout zpet, ale protoze vetsina vrsku/spodku byla xxxx nebo slo vylozene poznat, k cemu patri, bylo to opravdu "videt po haluzi".

Jsem rad, ze me ani toto nedonutilo cist manual ;-)
Re: Diskuze k úloze číslo 11 mirousek (17. 11. 2009 - 15:27) Sbalit(1)
3 hodiny jsem se snažil ladit skript. Bezúspěšně.
Pak jsem zakomentoval přepsání porovnání pro výslednou hlášku, zůstal mi hash, který se dal rozdělit po znacích a poslední trojice odpovídala poslední trojici z porovnávacího řetězce. Udělat zpětný převod už bylo triviální … škoda, že jsem to neudělal o 3 hodiny dříve :)
Re: Diskuze k úloze číslo 11 milan (19. 11. 2009 - 10:55) Sbalit(1)
Mimochodem, překvapuje mě, že nikdo nepřišel na to nejkratší řešení...

Po zkusmém zadání libovolného vstupního slova a pohledem na řádek 'NAJDIHESLO' a dva pod ním, si uvědomíme, že skript nic nešifruje, jenom převádí každý znak hesla na vykreslené 'písmenko' z 'x' a mezer, a to zcela běžným způsobem, jakým fungují bitmapové fonty: binární reprezentace (hexa)čísel pod sebou nakreslí znak.

Nejméně pracné řešení tedy je žádný kód ve vimu vůbec neluštit, vzít tu hexa konstantu z porovnání na správné heslo, převést do dvojkové soustavy (třeba pomocí bc) a zalámat po čtveřicích bitů (šířka fontu je 4). Pak už pohodlně čteme: ZELEZNICE...