Guest User

Untitled

a guest
Jan 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.88 KB | None | 0 0
  1. int __cdecl encrypt(char *input, int a2, int a3)
  2. {
  3.     int result; // eax@9
  4.     int MOD; // [sp+38h] [bp-50h]@1
  5.     signed int v5; // [sp+3Ch] [bp-4Ch]@1
  6.     int i; // [sp+40h] [bp-48h]@1
  7.     int KEY[4]; // [sp+44h] [bp-44h]@1
  8.     int v8; // [sp+54h] [bp-34h]@1
  9.     char IV[20]; // [sp+58h] [bp-30h]@1
  10.     char output; // [sp+6Ch] [bp-1Ch]@2
  11.     char v11; // [sp+7Bh] [bp-Dh]@4
  12.     int v12; // [sp+7Ch] [bp-Ch]@1
  13.  
  14.     v12 = *MK_FP(__GS__, 20);
  15.     v5 = 0;
  16.     MOD = 0;
  17.     KEY[0] = 'w0hs';
  18.     KEY[1] = 'us3m';
  19.     KEY[2] = 'nukm';
  20.     KEY[3] = '00fg';
  21.     v8 = 0;
  22.     memset(IV, 0, 0x10u);
  23.     memcpy(IV, "cl1q-cl4q-k4-p0w", 0x11u);
  24.     for ( i = 0; i < a3; i += 16 )
  25.     {
  26.         memset(&output, 0, 0x10u);
  27.         if ( !(i & 0x1FF) )
  28.         {
  29.             ++v5;
  30.             printf(
  31.                 "  [%c] encrypting..\r",
  32.                 spinner[((((unsigned int)(v5 >> 31) >> 30) + (_BYTE)v5) & 3) - ((unsigned int)(v5 >> 31) >> 30)]);
  33.             fflush(stdout);
  34.             usleep(0x2710u);
  35.         }
  36.         do_evp(&input[i], &output, 16, MOD, (char *)KEY, IV);
  37.         MOD = v11 & 3;
  38.         if ( a3 - i <= 15 )
  39.             memcpy((void *)(a2 + i), &output, a3 - i);
  40.         else
  41.             memcpy((void *)(a2 + i), &output, 0x10u);
  42.     }
  43.     result = *MK_FP(__GS__, 20) ^ v12;
  44.     if ( *MK_FP(__GS__, 20) != v12 )
  45.         __stack_chk_fail();
  46.     return result;
  47. }
  48. _DWORD __cdecl do_evp(char *input, char *output, int len, int MOD, char *KEY, char *IV)
  49. {
  50.     int v6; // eax@8
  51.     int v7; // eax@9
  52.     int v8; // eax@10
  53.     int v9; // eax@11
  54.     int result; // eax@14
  55.     int *outputLen; // [sp+3Ch] [bp-ACh]@1
  56.     char Crypt_Context; // [sp+40h] [bp-A8h]@1
  57.     int v13; // [sp+DCh] [bp-Ch]@1
  58.  
  59.     v13 = *MK_FP(__GS__, 20);
  60.     outputLen = 0;
  61.     EVP_CIPHER_CTX_init(&Crypt_Context);
  62.     if ( MOD == 1 )
  63.     {
  64.         v7 = EVP_aes_128_ecb();
  65.         EVP_EncryptInit(&Crypt_Context, v7, KEY, IV);
  66.     }
  67.     else
  68.     {
  69.         if ( MOD > 1 )
  70.         {
  71.             if ( MOD == 2 )
  72.             {
  73.                 v8 = EVP_aes_128_cfb128();
  74.                 EVP_EncryptInit(&Crypt_Context, v8, KEY, IV);
  75.             }
  76.             else
  77.             {
  78.                 if ( MOD != 3 )
  79.                     goto LABEL_12;
  80.                 v9 = EVP_aes_128_cfb1();
  81.                 EVP_EncryptInit(&Crypt_Context, v9, KEY, IV);
  82.             }
  83.         }
  84.         else
  85.         {
  86.             if ( MOD )
  87.             {
  88. LABEL_12:
  89.                 puts("unknown enctype");
  90.                 exit(-1);
  91.             }
  92.             v6 = EVP_aes_128_ecb();
  93.             EVP_EncryptInit(&Crypt_Context, v6, KEY, IV);
  94.         }
  95.     }
  96.     EVP_EncryptUpdate(&Crypt_Context, output, &outputLen, input, len);
  97.     EVP_CIPHER_CTX_cleanup(&Crypt_Context);
  98.     result = *MK_FP(__GS__, 20) ^ v13;
  99.     if ( *MK_FP(__GS__, 20) != v13 )
  100.         __stack_chk_fail();
  101.     return result;
  102. }
Add Comment
Please, Sign In to add comment