mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-22 15:23:10 +08:00
style: Change files encoding format to UTF8-BOM
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#pragma once
|
||||
#pragma once
|
||||
// This file implements a serial of data header encoding methods.
|
||||
#include <cstring>
|
||||
#include <common/skCrypter.h>
|
||||
@@ -19,7 +19,7 @@ enum HeaderEncType {
|
||||
HeaderEncNum,
|
||||
};
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4<>ֽ<EFBFBD>) + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4<>ֽ<EFBFBD>)
|
||||
// 数据编码格式:标识符 + 编码后长度(4字节) + 解码后长度(4字节)
|
||||
const int FLAG_COMPLEN = 4;
|
||||
const int FLAG_LENGTH = 8;
|
||||
const int HDR_LENGTH = FLAG_LENGTH + 2 * sizeof(unsigned int);
|
||||
@@ -35,12 +35,12 @@ inline void default_decrypt(unsigned char* data, size_t length, unsigned char ke
|
||||
{
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 加密函数
|
||||
inline void encrypt(unsigned char* data, size_t length, unsigned char key)
|
||||
{
|
||||
if (key == 0) return;
|
||||
for (size_t i = 0; i < length; ++i) {
|
||||
unsigned char k = static_cast<unsigned char>(key ^ (i * 31)); // <EFBFBD><EFBFBD>̬<EFBFBD>Ŷ<EFBFBD> key
|
||||
unsigned char k = static_cast<unsigned char>(key ^ (i * 31)); // 动态扰动 key
|
||||
int value = static_cast<int>(data[i]);
|
||||
switch (i % 4) {
|
||||
case 0:
|
||||
@@ -53,14 +53,14 @@ inline void encrypt(unsigned char* data, size_t length, unsigned char key)
|
||||
value -= k;
|
||||
break;
|
||||
case 3:
|
||||
value = ~(value ^ k); // <EFBFBD>ಽ<EFBFBD>任<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
|
||||
value = ~(value ^ k); // 多步变换:先异或再取反
|
||||
break;
|
||||
}
|
||||
data[i] = static_cast<unsigned char>(value & 0xFF);
|
||||
}
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 解密函数
|
||||
inline void decrypt(unsigned char* data, size_t length, unsigned char key)
|
||||
{
|
||||
if (key == 0) return;
|
||||
@@ -78,7 +78,7 @@ inline void decrypt(unsigned char* data, size_t length, unsigned char key)
|
||||
value += k;
|
||||
break;
|
||||
case 3:
|
||||
value = ~(value) ^ k; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
value = ~(value) ^ k; // 解开:先取反,再异或
|
||||
break;
|
||||
}
|
||||
data[i] = static_cast<unsigned char>(value & 0xFF);
|
||||
@@ -111,7 +111,7 @@ typedef struct HeaderFlag {
|
||||
}
|
||||
} HeaderFlag;
|
||||
|
||||
// д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||
// 写入数据包的头
|
||||
inline HeaderFlag GetHead(EncFun enc)
|
||||
{
|
||||
char header[FLAG_LENGTH + 1] = { 'H','E','L','L', 0 };
|
||||
@@ -144,8 +144,8 @@ inline int compare(const char *flag, const char *magic, int len, DecFun dec, uns
|
||||
return -1;
|
||||
}
|
||||
|
||||
// <EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>бȶ<EFBFBD>
|
||||
// 比对数据包前几个字节
|
||||
// 会用指定的解密函数先对数据包头进行解密,再来进行比对
|
||||
inline FlagType CheckHead(const char* flag, DecFun dec)
|
||||
{
|
||||
FlagType type = FLAG_UNKNOWN;
|
||||
@@ -163,7 +163,7 @@ inline FlagType CheckHead(const char* flag, DecFun dec)
|
||||
return type;
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ汾ͨѶЭ<EFBFBD><EFBFBD>
|
||||
// 解密需要尝试多种方法,以便能兼容老版本通讯协议
|
||||
inline FlagType CheckHead(char* flag, HeaderEncType& funcHit)
|
||||
{
|
||||
static const DecFun methods[] = { default_decrypt, decrypt, decrypt_v1, decrypt_v2, decrypt_v3, decrypt_v4, decrypt_v5, decrypt_v6 };
|
||||
|
||||
Reference in New Issue
Block a user