This shows you the differences between two versions of the page.
cns:laboratoare:laborator-08 [2012/12/17 13:17] traian.popeea |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Lab 8 - Cryptography ====== | ||
- | - [3p] Steganography | ||
- | * Several tools can be used to hide files behind an image. Create a file ''Lab08.txt'' and add the following line: “Thank GOD that this lab is NOT part of the exam.” | ||
- | * Use ''outguess'' to hide ''Lab08.txt'' behind a jpg file of your choice. Retrieve the contents from the jpg file. | ||
- | * You can install ''outguess'' with ''apt-get install outguess''. | ||
- | * Add ''fileype:jpg'' to your Google search to only show jpg results. | ||
- | * Sometimes concatenating files is enough to hide them. Use ''zip'' and ''cat'' to hide ''Lab08.txt'' behind a JPG file of your choice. Use ''unzip'' to retrieve the file. | ||
- | * ''unzip'' skips over junk found at the beginning of the file. | ||
- | * Which of the two methods uses less space? Why is that? | ||
- | - [+1p=4p] Write in a notepad your name using the Caesar cipher. The key is equal to the number of letter in your name. (use both first and last names) | ||
- | - [+1p=5p] Use frequency analysis to decrypt {{:scr:laboratoare:encrypted.txt|this file}}. You can use any tool you want. | ||
- | * The plaintext is in English and the Vigenere algorithm was used for encryption. | ||
- | * More information about the Vigenere cipher can be found here: [[wp>Vigenère_cipher]]. | ||
- | - [+2p=7p] You have to use the following algorithm((Interesting fact: this algorithm is used for type 7 decryption in Cisco IOS.)) to decrypt the message “08324F5C”. <code c> | ||
- | const char *xlat = "dsfd;kfoA,.iyewrkldJKDHSUBsgvca69834ncxv"; | ||
- | |||
- | char *unseven(const char *hash) | ||
- | { | ||
- | unsigned int key, i, hlen = strlen(hash) - 2; | ||
- | char *plain = (char*)malloc(hlen / 2 + 1); | ||
- | |||
- | if (hlen < 2 || hlen & 1) return NULL; | ||
- | |||
- | key = (hash[0] - '0') * 10 + hash[1] - '0'; | ||
- | if (key > 15 || !isdigit(hash[0]) || !isdigit(hash[1])) return NULL; | ||
- | |||
- | hash += 2; | ||
- | for (i = 0; i < hlen; ++i) if (!isxdigit(hash[i])) return NULL; | ||
- | |||
- | for (i = 0; i < hlen; i += 2) { | ||
- | plain[i / 2] = ((hex2int(hash[i]) << 4) | hex2int(hash[i + 1])) ^ xlat[key++]; | ||
- | if (key == 40) key = 0; | ||
- | } | ||
- | plain[hlen / 2] = 0; | ||
- | |||
- | return plain; | ||
- | } | ||
- | </code> | ||
- | - Hint: http://www.asciitable.com/ | ||
- | - Hint: http://www.cprogramming.com/tutorial/bitwise_operators.html | ||
- | - [+2p=9p] TODO | ||
- | - [+2=11p] Encryption contest. Create a symmetric encryption algorithm that uses substitution/transposition method applied directly on a block. Start! | ||
- | |||
- | |||
- | <hidden> | ||
- | RSA can be used to encrypt, decrypt and sign data. Download the public and private keys. | ||
- | |||
- | Use ''openssl rsautl'' to encrypt a file of your choice using the public key. | ||
- | |||
- | Use ''openssl rsautl'' to decrypt the file created earlier. | ||
- | |||
- | Usually, RSA is too slow for encryption and OpenSSL does not support encryption of large files using RSA. | ||
- | |||
- | Generate a 1MB file using ''dd''. | ||
- | |||
- | Encrypt the file using ''aes-128-cbc''. | ||
- | |||
- | |||
- | </hidden> |