Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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í!

Předmět Autor Datum
Wikan, už to má! :-) Chvilku tu bylo i heslo, snad jste si ho nevšimli...:-)
MaSo 05.01.2015 22:01
MaSo
Pak jsem jestě našel papírek, kde bylo napsáno... To měl kliku! Jen jsem si vzpomněl na nedávný pří…
host 05.01.2015 22:03
host
Vylustil som PK, dalej uz ma to nebavi :) Sranda by ale bola, keby ten vysledny zip bol este s hesl…
Palos9 05.01.2015 22:03
Palos9
Přemýšlel jsem nad tím, ale muselo by se to zašifrovat starým pkzipem a pak použít pkcrack a plainte…
MaSo 05.01.2015 22:07
MaSo
Mezitím další úspěšný řešitel. Jan Fiala :beer:
MaSo 05.01.2015 22:09
MaSo
To si někdo hrál, já v tu dobu už skoro spal :-D Ale jako prvni bych zkusil pustit na ty 2 soubory X…
Jan Fiala 06.01.2015 07:35
Jan Fiala
Líbí se mi nápad, ale vúbec nevím jak to vyřešit, potom sem napiše prosím postup :D
sumik22 05.01.2015 22:16
sumik22
něco o exkluzivní disjunkci
Wikan 05.01.2015 22:17
Wikan
Mno, čtu si o tom na wikipedii a zatím pořád nic moc :D (vám to asi docvakne hned, já jsem jenom 13…
sumik22 05.01.2015 22:25
sumik22
Spust si kalkulacku, zvol si zobrazit-programatorska. Zvol si hex a bajt. Potom mozes sledovat co sa…
Palos9 05.01.2015 22:51
Palos9
Wikan mi to tak nějak vysvětlil princip za který jsem rád...:)
sumik22 05.01.2015 22:56
sumik22
Tohle chce mít programátorský mozek.Něco jako tohle: Ráno mi žena povídá:"Až půjdeš z práce,kup chle…
Karel04 05.01.2015 22:54
Karel04
To hloupé Lorem Ipsum fakt vleze všude..... :-) Pěkné :-) (vůbec nesouvisí přímo s řešením, ale kdo…
marekdrtic 06.01.2015 07:49
marekdrtic
hrátky s XORem, z toho jsem už vyrostl. :-) Máte málo práce, holomci?!
touchwood 06.01.2015 08:11
touchwood
Specialní prémie pro toho, kdo to vyřeší bez programování jen skriptem v bash...;-)
MaSo 06.01.2015 08:18
MaSo
bash je trapny, kto to spravi ako *.bat subor? :D
shiro 06.01.2015 08:49
shiro
Aby to neskončilo jako prémie pro toho, kdo to vyřeší na čtverečkovaném papíru :-P
Jan Fiala 06.01.2015 09:09
Jan Fiala
Může to být skript pro NodeJS?
Wikan 06.01.2015 08:50
Wikan
bash skript je taky program :-)
touchwood 06.01.2015 09:03
touchwood
Tak máme tři úspěšné řešitele, ještě někdo zkusí? ;-)
MaSo 07.01.2015 13:15
MaSo
• Co na to budu potrebovat PSPad :-) a udelat naky mensi binarni prevod, zmenit '.priponu'? .dat se…
CoCoChanel 07.01.2015 13:18
CoCoChanel
.dat příponu souborů jsem si vymyslel, nemá nic společného s hádankou. Jedíné, co potřebuješ je vědě…
MaSo 07.01.2015 13:25
MaSo
Programovat se nemusí. Stačí správný dotaz na Googlu ;)
ws79 07.01.2015 14:11
ws79
::) jaký? Když tak PM... Aha, už asi chápu (zasraný NirSoft)...:-)
MaSo 07.01.2015 14:30
MaSo
jojo.. xorfiles.html :-)
touchwood 07.01.2015 14:36
touchwood
Tak jo, no. :) edit: Sakra, koukám, že pozdě. :D
Potkan007 07.01.2015 14:40
Potkan007
ŘEŠENÍ Ano, opravdu stačilo udělat XOR (exkluzivní disjunkci) mezi souborem secret_key.dat a secret… poslední
MaSo 07.01.2015 14:49
MaSo

• Co na to budu potrebovat PSPad :-) a udelat naky mensi binarni prevod, zmenit '.priponu'? .dat se posilal i MAILem a prekladal se pomoci nakého TEXT editoru.
Rad bych, ale kvuli islamo "TERORISTICKEMU ATENTATU" :x: co se odehral zhruba pred hodinou a pul, je tu trochu veselo....

Ř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):

package testicek;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 *
 * @author MaSo
 */
public class Decrypter {
    
    public static void main(String[] args) throws Exception {
      writeBytesToFile("desecret.zip", decryptFile("secret.dat", readBytesFromFile("secret_key.dat")));
    }

    private static int[] decryptFile(String pathToFile, byte[] key) throws IOException {
        byte[] data = readBytesFromFile(pathToFile);
        int[] ret = new int[data.length];
        for (int i = 0; i < data.length; i++) {
            ret[i] = key[i] ^ data[i];
        }
        return ret;
    }

    private static void writeBytesToFile(String filename, int[] data) throws FileNotFoundException, IOException {
        try (FileOutputStream fos = new FileOutputStream(filename)) {
            for (int i = 0; i < data.length; i++) {
                fos.write(data[i]);
            }
        }
    }

    private static byte[] readBytesFromFile(String filename) throws IOException {
        Path path = Paths.get(filename);
        return Files.readAllBytes(path);
    }
}

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...

Zpět do poradny Odpovědět na původní otázku Nahoru