

Programatorská hádanka: Najdi heslo
Ahoj, kdysi dávno se zde objevovali hádanky, které dělal IgorK. Byly velice zábavné. Dneska v práci jsem něco řešil a přitom mě napadla jedna hádanka, tak ji s dovolením odzkouším na vás. Následuje zadání formou fake otázky do poradny:
Mám velký problém, kdysi dávno jsme měli ve firmě cool admina a ten si šifroval svoje soubory svoji vlastní metodou, ale nikdo už neví jak to vlastně dělal a on už u nás nedělá. Jediné, co po něm zbylo je soubor secret.dat a secret_key.dat. Ten soubor secret.dat je pro mě strašně důležitý, protože obsahuje zašifrovaný .zip soubor, ve kterém je uložené důležité heslo k serveru. Pak jsem jestě našel papírek, kde bylo napsáno něco o exkluzivní disjunkci a signed bytech, ale vůbec tomu nerozumím. Zajímavé je, že soubor secret.dat a secret_key.dat mají naprosto stejnou velikost. Nevíte někdo jak soubor dešifrovat, získat tak zip se souborem s heslem?
Zde si můžete zkoušet svá hesla: hof
Přeji úspěšné řešení!
Tak jo, no. :)
edit: Sakra, koukám, že pozdě. :D
ŘEŠENÍ
Ano, opravdu stačilo udělat XOR (exkluzivní disjunkci) mezi souborem secret_key.dat a secret.dat a výsledek uložit jako .zip. Respektive načíst prvni byte ze souboru secret_key.dat a první byte ze souboru secret.dat a mezi nimi udělat XOR, tím získáme první byte výsledného zipu. Pak pokračujeme až do konce souborů. Využívá se této vlastnosti funkce XOR:
A XOR B = C
B XOR C = A
Tato vlastnost se hojně využívá v počítačové kryptografii.
Program může vypadat, třeba takto (Java):
Ovšem programovat se nemuselo, stačilo použít utilitu od NirSoftu xorfiles o jejíž existenci jsem nevěděl. Příště vymyslím, něco těžšího...