1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
   | #include <stdio.h> #include <stdint.h> #define DELTA 0x21524111 #define MX (((z>>5^y<<3) + (y>>3^z<<2)) ^ ((sum^y) + (key[(p&3)^e] ^ z)))
  void btea(uint32_t *v, int n, uint32_t const key[4]) {     uint32_t y, z, sum;     unsigned p, rounds, e;     if (n > 1) {                  rounds = 6 + 52 / n;         sum = (-rounds)*DELTA;         z = v[n - 1];         do {             e = (sum >> 2) & 3;             for (p = n-1; p >0; p--) {                 y = v[p + 1];                 z = v[p] -= MX;             }             y = v[0];             z = v[n - 1] -= MX;             sum += DELTA;         } while (--rounds);     } else if (n < -1) {           n = -n;         rounds = 6 + 52 / n;         sum = (-rounds) * DELTA;         y = v[0];         do {             e = (sum >> 2) & 3;             for (p = n - 1; p > 0; p--) {                 z = v[p - 1];                 y = v[p] -= MX;             }             z = v[n - 1];             y = v[0] -= MX;             sum += DELTA;         } while (--rounds);     } }
  int main() {     uint32_t v[12] = {0x8C12D3DF, 0x5F4C4137, 0x1A9D3D02, 0x2D1294B7, 0xFB622B37, 0xD18D84E3, 0x064C4592, 0x16985CAB, 0xFDB06D69,0xFB30B1E3,0x925C2FD3,0x2E1BB40C};     uint32_t const k[4] = {0x776F656D, 0x6F656D7E, 0x65747E77, 0x7E7E7E61};     int n = 12;     btea(v, -n, k);     for (int i = 0; i < 12; i ++) {         printf("%x,", v[i]&0xff);         printf("%x,", v[i] >> 8 & 0xff);         printf("%x,", v[i] >> 16 & 0xff);         printf("%x,", v[i] >> 24 & 0xff);     }     printf("\n");
 
      return 0; } import base64 def rc4(data, key):     S = list(range(256))     j = 0     out = []
      for i in range(256):         j = (j + S[i] + key[i % len(key)]) % 256         S[i], S[j] = S[j], S[i]
      i = j = 0     for char in data:         i = (i + 1) % 256         j = (j + S[i]) % 256         S[i], S[j] = S[j], S[i]         out.append(char ^ S[(S[i] + S[j]) % 256])
      return bytes(out)
 
  data = bytes([113, 71, 105, 111, 84, 56, 107, 115, 98, 118, 72, 105, 102, 105, 111, 77, 89, 100, 113, 47, 104, 66, 115, 112, 82, 76, 52, 67, 82, 122, 70, 86, 79, 47, 89, 98, 103, 78, 89, 100, 67, 103, 61, 61, 10, 0, 0, 0]) key = b'rc4k4y'
 
  data=base64.b64decode(data) decrypted = rc4(data, key) print(decrypted)
 
  |