Spaces:
Paused
Paused
File size: 3,742 Bytes
83607bc a8ba146 83607bc a8ba146 83607bc |
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 |
//
// Created by dvc890 on 8/23/21.
//
#ifndef PING_ENGINE_ANDROID_BOLT_CRYPT_H
#define PING_ENGINE_ANDROID_BOLT_CRYPT_H
enum CRYPT_TYPE {
NONE = 0,
XOR = 1
};
namespace xor_ {
static void crypt(char* data, int data_len, char key){
for (int i = 0; i < data_len; i++){
data[i] = data[i] ^ key;
}
}
static void crypt2(const char* indata, int data_len, char key, char* outdata) {
for (int i = 0; i < data_len; i++){
outdata[i] = indata[i] ^ key;
}
}
}
#define GENERATE_ENCRYPT_EXTEN(extend, extend_len, encrypt) \
char extend[6] = {0}; \
int extend_len = 0; \
if(encrypt) { \
extend_len = sprintf(extend, "ept=1"); \
} \
#define GENERATE_DECRYPT_KEY(extend, extend_len, ept_type, ept_key) \
char extend[21] = {0}; \
int extend_len = 0; \
int type_len = snprintf(extend, sizeof(extend), "ept_type=%d", ept_type); \
if (ept_type == XOR) { \
extend_len = snprintf(extend + type_len, sizeof(extend) - type_len, ";ept_key=%c", ept_key);\
} \
#define EXTRACTION_DECRYPT_KEY(ept_type, ept_key, extend, extend_len) \
CRYPT_TYPE ept_type = NONE; \
char ept_key; \
if(extend_len > 0) { \
if(char* type_ptr = strstr(extend, "ept_type")) { \
ept_type = (CRYPT_TYPE)(type_ptr[9]); \
} \
switch (ept_type) { \
case XOR: { \
if(char* key_ptr = strstr(extend, "ept_key")) { \
ept_key = key_ptr[8]; \
} \
break; \
} \
default: \
break; \
} \
} \
#endif //PING_ENGINE_ANDROID_BOLT_CRYPT_H
|