Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <openssl/evp.h>
- #include <string.h>
- int main(void){
- char iv[16] = "\x10\x20\x30\x40\x50\x60\x70\x80\x90\xa0\xb0\xc0\xd0\xe0\xf0\x00";
- char key[16] = "\x01\x23\x45\x67\x89\x1a\xbc\xde\xf0\x01\x23\x45\x67";
- char encoded[1024] = "A8K+2+60yXYmEBQHOW4BN/2f/ubS5JMHy/B4hpGiaHDbR4qGLBL0AiwvUKi/th+lHt2meNQ82Zmfmnk2+rqd6dBERgBe82v7Smvri2T3VNuhu00h42l6CWHfPguguX5Ya1MNvmBxvMWygk21q+t0nA==";
- //char encoded[1024] = "YKRjarGREqWcRixQk4kRP/7DN6cnzgI6x1cVW3kxixZYGJkwm8PqUhftI7mGNP0vN7k4OQsumBBQ26jf18IR78PoCJfTDBIcyEy3KXIbonU=";
- char plaintext[1024];
- char decoded[1024];
- char encoded2[1024];
- int compareLimit = 10;
- char comp[24] = "The unknown message is:";
- int elen, dlen, out_len=0, f_len, p_len, c_len, i;
- EVP_CIPHER_CTX ctx;
- elen = strlen(encoded);
- printf("Length of encoded : %i\n", elen);
- EVP_DecodeBlock(decoded, encoded, elen);
- printf("Length of decoded : %i\n", strlen(decoded));
- dlen = strlen(decoded);
- p_len = dlen;
- int a,b,c;
- for(a = 1;a<256;a++){
- for(b = 1;b<256;b++){
- for(c = 1;c<256;c++){
- key[13] = a;
- key[14] = b;
- key[15] = c;
- printf("printing key : ");
- for(i=0;i<16;i++){
- printf("%#X ",key[i]);
- }
- printf("\n");
- EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), key, iv);
- EVP_DecryptUpdate(&ctx, plaintext, &p_len, decoded, dlen);
- EVP_DecryptFinal(&ctx, &plaintext[p_len], &out_len);
- int result = strncmp(plaintext, comp, compareLimit);
- if(result == 0){
- printf("The last 3 bytes are : %X %X %X\n", key[13],key[14],key[15]);
- printf("The plaintext is : %s\n",plaintext);
- }
- memset(plaintext, '\0', sizeof(plaintext));
- }
- }
- }
- //EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), key, iv);
- //EVP_DecryptUpdate(&ctx, plaintext, &p_len, decoded, dlen);
- //EVP_DecryptFinal(&ctx, &plaintext[p_len], &out_len);
- //printf("Decrypted : %s\n", plaintext);
- /*for(i=0;i<p_len;i++){
- printf("0x%x,",plaintext[i]);
- }
- printf("\n");
- dlen = strlen(plaintext);
- c_len = dlen + 16;
- unsigned char *ciphertext = malloc(c_len);
- printf("length of plaintext : %i\n", strlen(plaintext));
- printf("plaintext : %s\n", plaintext);
- EVP_EncryptInit(&ctx, EVP_aes_128_cbc(), key, iv);
- EVP_EncryptUpdate(&ctx, ciphertext, &c_len, plaintext, dlen);
- EVP_EncryptFinal(&ctx, &ciphertext[c_len], &out_len);
- EVP_EncodeBlock(encoded2,ciphertext, strlen(ciphertext));
- printf("Encrypted and Encoded : %s\n", encoded2);
- if(strncmp(encoded, encoded2, elen)==0)
- printf("It worked!\n");
- else
- printf("Didn't work!\n");
- int num[2];
- num[0] = 15;
- num[1] = 15;
- char buffer[20];
- sprintf(buffer, "0x%X%X", num[0],num[1]);
- printf("hexadecimal : %s\n",buffer);
- char iv[16] = {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0x01};*/
- printf("Did anything else print? If not, then You messed up something!!!\n");
- exit(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement