Advertisement
Guest User

Untitled

a guest
Nov 8th, 2011
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.96 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <openssl/evp.h>
  3. #include <string.h>
  4.  
  5. int main(void){
  6.     char iv[16] = "\x10\x20\x30\x40\x50\x60\x70\x80\x90\xa0\xb0\xc0\xd0\xe0\xf0\x00";
  7.     char key[16] = "\x01\x23\x45\x67\x89\x1a\xbc\xde\xf0\x01\x23\x45\x67";
  8.     char encoded[1024] = "A8K+2+60yXYmEBQHOW4BN/2f/ubS5JMHy/B4hpGiaHDbR4qGLBL0AiwvUKi/th+lHt2meNQ82Zmfmnk2+rqd6dBERgBe82v7Smvri2T3VNuhu00h42l6CWHfPguguX5Ya1MNvmBxvMWygk21q+t0nA==";
  9.     //char encoded[1024] = "YKRjarGREqWcRixQk4kRP/7DN6cnzgI6x1cVW3kxixZYGJkwm8PqUhftI7mGNP0vN7k4OQsumBBQ26jf18IR78PoCJfTDBIcyEy3KXIbonU=";
  10.     char plaintext[1024];
  11.     char decoded[1024];
  12.     char encoded2[1024];
  13.     int compareLimit = 10;
  14.     char comp[24] = "The unknown message is:";
  15.     int elen, dlen, out_len=0, f_len, p_len, c_len, i;
  16.     EVP_CIPHER_CTX ctx;
  17.    
  18.     elen = strlen(encoded);
  19.     printf("Length of encoded : %i\n", elen);
  20.     EVP_DecodeBlock(decoded, encoded, elen);
  21.     printf("Length of decoded : %i\n", strlen(decoded));
  22.     dlen = strlen(decoded);
  23.     p_len = dlen;
  24.    
  25.     int a,b,c;
  26.    
  27.    
  28.     for(a = 1;a<256;a++){
  29.         for(b = 1;b<256;b++){
  30.             for(c = 1;c<256;c++){
  31.                             key[13] = a;
  32.                             key[14] = b;
  33.                             key[15] = c;
  34.  
  35.                             printf("printing key : ");
  36.                                 for(i=0;i<16;i++){
  37.                                     printf("%#X ",key[i]);
  38.                                 }
  39.                             printf("\n");
  40.                            
  41.                             EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), key, iv);
  42.                             EVP_DecryptUpdate(&ctx, plaintext, &p_len, decoded, dlen);
  43.                             EVP_DecryptFinal(&ctx, &plaintext[p_len], &out_len);
  44.                             int result = strncmp(plaintext, comp, compareLimit);
  45.                            
  46.                             if(result == 0){
  47.                             printf("The last 3 bytes are : %X %X %X\n", key[13],key[14],key[15]);
  48.                             printf("The plaintext is : %s\n",plaintext);
  49.                             }
  50.                            
  51.                             memset(plaintext, '\0', sizeof(plaintext));
  52.             }
  53.         }
  54.     }
  55.    
  56.     //EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), key, iv);
  57.     //EVP_DecryptUpdate(&ctx, plaintext, &p_len, decoded, dlen);
  58.     //EVP_DecryptFinal(&ctx, &plaintext[p_len], &out_len);
  59.     //printf("Decrypted : %s\n", plaintext);
  60.    
  61.     /*for(i=0;i<p_len;i++){
  62.         printf("0x%x,",plaintext[i]);
  63.     }
  64.     printf("\n");
  65.    
  66.     dlen = strlen(plaintext);
  67.     c_len = dlen + 16;
  68.     unsigned char *ciphertext = malloc(c_len);
  69.    
  70.     printf("length of plaintext : %i\n", strlen(plaintext));
  71.     printf("plaintext : %s\n", plaintext);
  72.     EVP_EncryptInit(&ctx, EVP_aes_128_cbc(), key, iv);
  73.     EVP_EncryptUpdate(&ctx, ciphertext, &c_len, plaintext, dlen);
  74.     EVP_EncryptFinal(&ctx, &ciphertext[c_len], &out_len);
  75.     EVP_EncodeBlock(encoded2,ciphertext, strlen(ciphertext));
  76.     printf("Encrypted and Encoded : %s\n", encoded2);
  77.    
  78.     if(strncmp(encoded, encoded2, elen)==0)
  79.         printf("It worked!\n");
  80.     else
  81.         printf("Didn't work!\n");
  82.        
  83.     int num[2];
  84.     num[0] = 15;
  85.     num[1] = 15;
  86.     char buffer[20];
  87.     sprintf(buffer, "0x%X%X", num[0],num[1]);
  88.     printf("hexadecimal : %s\n",buffer);
  89.     char iv[16] = {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0x01};*/
  90.     printf("Did anything else print? If not, then You messed up something!!!\n");
  91.     exit(1);
  92. }
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement