好友
阅读权限10
听众
最后登录1970-1-1
|
Name:460
Serial:ZLIRqJpxgGYAqRIRqRm9rJjbkUZRqADAZf6ImUZIHo2xHU4RHU2CHo2RHo2CHo2RHU4xHU4RHo2CHo2RHU4xHU2RHU4CHo2RHU2CHo2RHU2CHo2RHo2CHU4RHo2CHo2RHU4xHU2RHU4xHo2RqU/ZqJZI6dHarUj/qJj8mfjLufkhrfvIHpIRqJp1XlxLqRIRqR6Brf6Brf6Brf6Brf6BrfZEmfxaqPPn
Name:560
Serial:ZLIRqJpxgGYAqRIRqRW9rJjbkUZRqADAZf6ImUZIHo2xHU4RHU2CHo2RHo2CHo2RHU4xHU4RHo2CHo2RHU4xHU2RHU4CHo2RHU2CHo2RHU2CHo2RHo2CHU4RHo2CHo2RHU4xHU2RHU4xHo2RqU/ZqJZI6dHarUj/qJj8mfjLufkhrfvIHpIRqJp1XlxLqRIRqR6Brf6Brf6Brf6Brf6Brf6EmfxaqPPn
加密算法
void Encode(unsigned char* lpBuffer,unsigned int size,char* lpOut)
{
unsigned int t = 0;
unsigned char* lpT = (unsigned char*)(&t);
char szKey[] = "V3FKpjJyw6XgsZeSQkGl7vofHWMqimurD5A+PIURcxCb1TOzE9d8L4B0Y2ntN/ah";
int i = 0, j = 0;
for (int i = 0; i < size; i = i+3)
{
lpT[0] = (lpBuffer[i + 0] ^ 0x4C) >> 2;
lpT[1] = (((lpBuffer[i + 0] ^ 0x4C) & 3) << 4) + ((lpBuffer[i + 1] ^ 0x43) >> 4);
lpT[2] = (((lpBuffer[i + 1] ^ 0x43) & 0xF) << 2) + (((lpBuffer[i + 2] ^ 0x47) - ((lpBuffer[i + 2] ^ 0x47) & 0x3F)) >> 6);
lpT[3] = ((lpBuffer[i + 2] ^ 0x47) & 0x3F);
lpOut[j + 0] = szKey[lpT[0]];
lpOut[j + 1] = szKey[lpT[1]];
lpOut[j + 2] = szKey[lpT[2]];
lpOut[j + 3] = szKey[lpT[3]];
j = j + 4;
}
}
效验过程如下:
由360提供的 ZLIRqJpxgGYAqRIRqR39rJjbkUZRqADAZf6ImUZIHo2xHU4RHU2CHo2RHo2CHo2RHU4xHU4RHo2CHo2RHU4xHU2RHU4CHo2RHU2CHo2RHU2CHo2RHo2CHU4RHo2CHo2RHU4xHU2RHU4xHo2RqU/ZqJZI6dHarUj/qJj8mfjLufkhrfvIHpIRqJp1XlxLqRIRqR6Brf6Brf6Brf6Brf6Brf6amfxaqPPn 解密函数 0x004048D0 解密得到:
{
"name": "360",
"key1": "--... .---- ----- ..... ----- ....- ..--- .---- .---- ---.. ----- ....- ...-- ",
"key2": "492357816",
"key3": "11111111111111119999"
}
然后比较解密后的内容 name 是否等于 360,如果不等于返回失败;
然后根据一个算法算出字符串"360"和“11111111111111119999”的值V1和V2,在比较V1 + V2 == 2015,等于就成功,否则失败
算法过程乱序了,简单观察了下,然后算出key3
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|