#include "stdafx.h"
#include "QQ.h"
std::string QQ::EMPTY_STRING = _T("");
int QQ::QQ_PROTOCOL_FAMILY_BASIC = 0x1;
int QQ::QQ_PROTOCOL_FAMILY_05 = 0x2;
int QQ::QQ_PROTOCOL_FAMILY_03 = 0x4;
int QQ::QQ_PROTOCOL_FAMILY_DISK = 0x8;
int QQ::QQ_PROTOCOL_ALL = 0xFFFFFFFF;
int QQ::QQ_LENGTH_BASIC_FAMILY_IN_HEADER = 7;
int QQ::QQ_LENGTH_BASIC_FAMILY_OUT_HEADER = 11;
int QQ::QQ_LENGTH_BASIC_FAMILY_TAIL = 1;
int QQ::QQ_LENGTH_FTP_FAMILY_HEADER = 46;
int QQ::QQ_LENGTH_05_FAMILY_HEADER = 13;
int QQ::QQ_LENGTH_05_FAMILY_TAIL = 1;
int QQ::QQ_LENGTH_DISK_FAMILY_IN_HEADER = 82;
int QQ::QQ_LENGTH_DISK_FAMILY_OUT_HEADER = 154;
BYTE QQ::QQ_HEADER_BASIC_FAMILY = 0x02;
BYTE QQ::QQ_HEADER_P2P_FAMILY = 0x00;
BYTE QQ::QQ_HEADER_03_FAMILY = 0x03;
BYTE QQ::QQ_HEADER_04_FAMILY = 0x04;
BYTE QQ::QQ_HEADER_05_FAMILY = 0x05;
BYTE QQ::QQ_TAIL_BASIC_FAMILY = 0x03;
BYTE QQ::QQ_TAIL_05_FAMILY = 0x03;
int QQ::QQ_PROXY_NONE = 0;
int QQ::QQ_PROXY_HTTP = 1;
int QQ::QQ_PROXY_SOCKS5 = 2;
int QQ::QQ_SEND_TIME_NOACK_PACKET = 4;
BYTE QQ::QQ_LOGIN_16_51[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, (BYTE)0x86, (BYTE)0xCC, 0x4C, 0x35, 0x2C,
(BYTE)0xD3, 0x73, 0x6C, 0x14, (BYTE)0xF6, (BYTE)0xF6, (BYTE)0xAF, (BYTE)0xC3,
(BYTE)0xFA, 0x33, (BYTE)0xA4, 0x01
};
int QQ::QQ_LOGIN_16_51_LENGTH = 36;
BYTE QQ::QQ_LOGIN_53_68[] = {
(BYTE)0x8D, (BYTE)0x8B, (BYTE)0xFA, (BYTE)0xEC, (BYTE)0xD5, 0x52, 0x17, 0x4A,
(BYTE)0x86, (BYTE)0xF9, (BYTE)0xA7, 0x75, (BYTE)0xE6, 0x32, (BYTE)0xD1, 0x6D
};
int QQ::QQ_LOGIN_53_68_LENGTH = 16;
BYTE QQ::QQ_LOGIN_SEGMENTS[] = {
0x0B, 0x04, 0x02, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, (BYTE)0xE9, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, (BYTE)0xF3,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
(BYTE)0xED, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, (BYTE)0xEC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, (BYTE)0xEE, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, (BYTE)0xEF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, (BYTE)0xEB, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int QQ::QQ_LOGIN_SEGMENTS_LENGTH = 100;
int QQ::QQ_MAX_PACKET_SIZE = 65535;
int QQ::QQ_MAX_SEND_IM = 700;
int QQ::QQ_LENGTH_KEY = 16;
int QQ::QQ_LENGTH_LOGIN_DATA = 416;
int QQ::QQ_PORT_UDP = 8000;
int QQ::QQ_PORT_TCP = 80;
int QQ::QQ_PORT_HTTP = 443;
std::string QQ::QQ_CHARSET_DEFAULT = _T("GBK");
short QQ::QQ_CHARSET_GB = 0x8602;
short QQ::QQ_CHARSET_EN = 0x0000;
short QQ::QQ_CHARSET_BIG5 = 0x8603;
long QQ::QQ_TIMEOUT_SEND = 5000;
int QQ::QQ_MAX_RESEND = 5;
long QQ::QQ_INTERVAL_KEEP_ALIVE = 100000;
int QQ::QQ_CAM_SHOW_FAKE = 1;
int QQ::QQ_CAM_DONT_SHOW_FAKE = 0;
int QQ::QQ_MAX_GROUP_NAME = 16;
int QQ::QQ_MAX_NAME_LENGTH = 250;
int QQ::QQ_COUNT_DEFAULT_FACE = 96;
int QQ::QQ_COUNT_GET_USER_INFO_FIELD = 37;
int QQ::QQ_COUNT_MODIFY_USER_INFO_FIELD = 35;
int QQ::QQ_COUNT_REMARK_FIELD = 7;
short QQ::QQ_CLIENT_VERSION_0E1B = 0x0E1B;
short QQ::QQ_SERVER_VERSION_0100 = 0x0100;
short QQ::QQ_DISK_SERVER_VERSION_0101 = 0x0101;
short QQ::QQ_DISK_CLIENT_VERSION_0207 = 0x0207;
short QQ::QQ_DISK_SERVER_VERSION = QQ::QQ_DISK_SERVER_VERSION_0101;
short QQ::QQ_DISK_CLIENT_VERSION = QQ::QQ_DISK_CLIENT_VERSION_0207;
short QQ::QQ_AGENT_SERVER_VERSION_04D1 = 0x04D1;
short QQ::QQ_CLIENT_VERSION = QQ::QQ_CLIENT_VERSION_0E1B;
BYTE QQ::QQ_LOGIN_MODE_NORMAL = 0x0A;
BYTE QQ::QQ_LOGIN_MODE_HIDDEN = 0x28;
BYTE QQ::QQ_GENDER_GG = 0x0;
BYTE QQ::QQ_GENDER_MM = 0x1;
BYTE QQ::QQ_GENDER_UNKNOWN = (BYTE)0xFF;
BYTE QQ::QQ_FRIEND_FLAG_QQ_MEMBER = 0x01;
BYTE QQ::QQ_FRIEND_FLAG_MOBILE = 0x10;
BYTE QQ::QQ_FRIEND_FLAG_BIND_MOBILE = 0x20;
BYTE QQ::QQ_STATUS_ONLINE = 0x0A;
BYTE QQ::QQ_STATUS_OFFLINE = 0x14;
BYTE QQ::QQ_STATUS_AWAY = 0x1E;
BYTE QQ::QQ_STATUS_HIDDEN = 0x28;
int QQ::QQ_FLAG_CAM = 0x80;
int QQ::QQ_FLAG_BIND = 0x40;
int QQ::QQ_FLAG_MOBILE = 0x20;
int QQ::QQ_FLAG_MEMBER = 0x02;
int QQ::QQ_FLAG_TM = 0x40000;
int QQ::QQ_FLAG_HAS_SIGNATURE = 0x40000000;
int QQ::QQ_FLAG_HAS_CUSTOM_HEAD = 0x100000;
short QQ::QQ_POSITION_FRIEND_LIST_START = 0x0000;
short QQ::QQ_POSITION_FRIEND_LIST_END = 0xFFFF;
BYTE QQ::QQ_POSITION_ONLINE_LIST_START = 0x00;
BYTE QQ::QQ_POSITION_ONLINE_LIST_END = (BYTE)0xFF;
short QQ::QQ_POSITION_USER_PROPERTY_START = 0x0000;
short QQ::QQ_POSITION_USER_PROPERTY_END = 0xFFFF;
BYTE QQ::QQ_FRIEND_LIST_UNSORTED = 0;
BYTE QQ::QQ_FRIEND_LIST_SORTED = 1;
BYTE QQ::QQ_REPLY_OK = 0x00;
BYTE QQ::QQ_REPLY_ADD_FRIEND_ALREADY = (BYTE)0x99;
BYTE QQ::QQ_REPLY_REQUEST_LOGIN_TOKEN_OK = 0x00;
BYTE QQ::QQ_REPLY_LOGIN_REDIRECT = 0x01;
BYTE QQ::QQ_REPLY_LOGIN_FAIL = 0x05;
BYTE QQ::QQ_REPLY_CHANGE_STATUS_OK = 0x30;
BYTE QQ::QQ_REPLY_ADD_FRIEND_AUTH_OK = 0x30;
BYTE QQ::QQ_REPLY_ADVANCED_SEARCH_END = 1;
short QQ::QQ_REPLY_REQUEST_AGENT_REDIRECT = 0x0001;
short QQ::QQ_REPLY_REQUEST_AGENT_OK = 0x0000;
short QQ::QQ_REPLY_REQUEST_AGENT_TOO_LONG = 0x0003;
short QQ::QQ_CMD_LOGOUT = 0x0001;
short QQ::QQ_CMD_KEEP_ALIVE = 0x0002;
short QQ::QQ_CMD_MODIFY_INFO = 0x0004;
short QQ::QQ_CMD_SEARCH_USER = 0x0005;
short QQ::QQ_CMD_GET_USER_INFO = 0x0006;
short QQ::QQ_CMD_ADD_FRIEND = 0x0009;
short QQ::QQ_CMD_DELETE_FRIEND = 0x000A;
short QQ::QQ_CMD_ADD_FRIEND_AUTH = 0x000B;
short QQ::QQ_CMD_CHANGE_STATUS = 0x000D;
short QQ::QQ_CMD_ACK_SYS_MSG = 0x0012;
short QQ::QQ_CMD_SEND_IM = 0x0016;
short QQ::QQ_CMD_RECV_IM = 0x0017;
short QQ::QQ_CMD_REMOVE_SELF = 0x001C;
short QQ::QQ_CMD_REQUEST_KEY = 0x001D;
short QQ::QQ_CMD_LOGIN = 0x0022;
short QQ::QQ_CMD_GET_FRIEND_LIST = 0x0026;
short QQ::QQ_CMD_GET_ONLINE_OP = 0x0027;
short QQ::QQ_CMD_SEND_SMS = 0x002D;
short QQ::QQ_CMD_CLUSTER_CMD = 0x0030;
short QQ::QQ_CMD_TEST = 0x0031;
short QQ::QQ_CMD_GROUP_DATA_OP = 0x003C;
short QQ::QQ_CMD_UPLOAD_GROUP_FRIEND = 0x003D;
short QQ::QQ_CMD_FRIEND_DATA_OP = 0x003E;
short QQ::QQ_CMD_DOWNLOAD_GROUP_FRIEND = 0x0058;
short QQ::QQ_CMD_FRIEND_LEVEL_OP = 0x005C;
short QQ::QQ_CMD_PRIVACY_DATA_OP = 0x005E;
short QQ::QQ_CMD_CLUSTER_DATA_OP = 0x005F;
short QQ::QQ_CMD_ADVANCED_SEARCH = 0x0061;
short QQ::QQ_CMD_REQUEST_LOGIN_TOKEN = 0x0062;
short QQ::QQ_CMD_USER_PROPERTY_OP = 0x0065;
short QQ::QQ_CMD_TEMP_SESSION_OP = 0x0066;
short QQ::QQ_CMD_SIGNATURE_OP = 0x0067;
short QQ::QQ_CMD_RECV_MSG_SYS = 0x0080;
short QQ::QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS = 0x0081;
short QQ::QQ_CMD_WEATHER_OP = 0x00A6;
short QQ::QQ_CMD_ADD_FRIEND_EX = 0x00A7;
short QQ::QQ_CMD_AUTHORIZE = 0X00A8;
short QQ::QQ_CMD_UNKNOWN = 0xFFFF;
BYTE QQ::QQ_SUB_CMD_SEARCH_ME_BY_QQ_ONLY = 0x03;
BYTE QQ::QQ_SUB_CMD_SHARE_GEOGRAPHY = 0x04;
BYTE QQ::QQ_VALUE_SET = 0x01;
BYTE QQ::QQ_VALUE_UNSET = 0x00;
BYTE QQ::QQ_SUB_CMD_GET_FRIEND_LEVEL = 0x02;
BYTE QQ::QQ_SUB_CMD_GET_CLUSTER_ONLINE_MEMBER = 0x01;
std::string QQ::QQ_SERVER_UPLOAD_CUSTOM_HEAD = _T("cface.qq.com");
std::string QQ::QQ_SERVER_DOWNLOAD_CUSTOM_HEAD = _T("cface_tms.qq.com");
std::string QQ::QQ_SERVER_DISK[] = {
_T("219.133.38.39"),
_T("219.133.38.40"),
_T("219.133.38.99"),
_T("219.133.38.100"),
_T("219.133.38.101"),
_T("219.133.38.102"),
_T("219.133.38.176"),
_T("219.133.38.202"),
_T("219.133.51.105"),
_T("219.133.51.106")
};
int QQ::QQ_SERVER_DISK_PORT = 9910;
short QQ::QQ_05_CMD_REQUEST_AGENT = 0x0021;
short QQ::QQ_05_CMD_REQUEST_FACE = 0x0022;
short QQ::QQ_05_CMD_TRANSFER = 0x0023;
short QQ::QQ_05_CMD_REQUEST_BEGIN = 0x0026;
short QQ::QQ_DISK_CMD_BEGIN_SESSION = 0x0000;
short QQ::QQ_DISK_CMD_AUTHENTICATE = 0x0401;
short QQ::QQ_DISK_CMD_PASSWORD_OP = 0x0402;
short QQ::QQ_DISK_CMD_GET_SERVER_LIST = 0x0409;
short QQ::QQ_DISK_CMD_LIST_MY_DISK_DIR = 0x1C0C;
short QQ::QQ_DISK_CMD_CREATE = 0x1C0D;
short QQ::QQ_DISK_CMD_DELETE = 0x1C0E;
short QQ::QQ_DISK_CMD_RENAME = 0x1C0F;
short QQ::QQ_DISK_CMD_MOVE = 0x1C10;
short QQ::QQ_DISK_CMD_UPLOAD = 0x1C16;
short QQ::QQ_DISK_CMD_DOWNLOAD = 0x1C17;
short QQ::QQ_DISK_CMD_GET_SIZE = 0x1C18;
short QQ::QQ_DISK_CMD_FINALIZE = 0x1C1A;
short QQ::QQ_DISK_CMD_APPLY = 0x1C1C;
short QQ::QQ_DISK_CMD_PREPARE = 0x1C1D;
short QQ::QQ_DISK_CMD_GET_SHARED_DISK = 0x1F41;
short QQ::QQ_DISK_CMD_LIST_SHARED_DISK_DIR = 0x1F42;
short QQ::QQ_DISK_CMD_GET_SHARE_LIST = 0x1F43;
short QQ::QQ_DISK_CMD_SET_SHARE_LIST = 0x1F44;
int QQ::QQ_DISK_SUB_CMD_AUTHENTICATE = 0x0;
int QQ::QQ_DISK_SUB_CMD_SET_PASSWORD = 0x1;
int QQ::QQ_DISK_SUB_CMD_CANCEL_PASSWORD = 0x2;
int QQ::QQ_DISK_STATUS_NEED_PASSWORD = 0x1;
int QQ::QQ_REPLY_AUTH_FAIL = 0x0402;
int QQ::QQ_DISK_DIR_MY_DOC = 0x1;
int QQ::QQ_DISK_DIR_MY_PICTURE = 0x2;
int QQ::QQ_DISK_DIR_MY_MULTIMEDIA = 0x3;
int QQ::QQ_DISK_DIR_MY_ASSISTANT = 0x11;
int QQ::QQ_DISK_DIR_MY_FAVORITE = 0x12;
int QQ::QQ_DISK_DIR_MY_NOTEBOOK = 0x13;
int QQ::QQ_DISK_DIR_MY_CUSTOM_FACE = 0x14;
int QQ::QQ_DISK_DIR_MY_CUSTOM_HEAD = 0x16;
int QQ::QQ_DISK_DIR_MY_ALBUM = 0x18;
int QQ::QQ_DISK_DIR_ROOT = 0xFFFFFFFF;
int QQ::QQ_DISK_DIR_MAX_SYSTEM_ID = 0x80;
int QQ::QQ_DISK_FLAG_DIRECTORY = 0x1;
int QQ::QQ_DISK_FLAG_NOT_FINALIZED = 0x2;
int QQ::QQ_DISK_FLAG_SHARED = 0x8;
int QQ::QQ_DISK_FLAG_USER = 0x40;
int QQ::QQ_DISK_FLAG_FAVORITE = 0x80;
int QQ::QQ_DISK_FLAG_ALBUM = 0x200;
short QQ::QQ_03_CMD_GET_CUSTOM_HEAD_DATA = 0x0002;
short QQ::QQ_03_CMD_GET_CUSTOM_HEAD_INFO = 0x0004;
std::string QQ::QQ_SERVER_GROUP_FILE[] = {
_T("219.133.40.128")
};
BYTE QQ::QQ_SUB_CMD_REQUEST_UNKNOWN03_KEY = 0x3;
BYTE QQ::QQ_SUB_CMD_REQUEST_FILE_AGENT_KEY = 0x4;
BYTE QQ::QQ_SUB_CMD_REQUEST_UNKNOWN06_KEY = 0x6;
BYTE QQ::QQ_SUB_CMD_REQUEST_UNKNOWN07_KEY = 0x7;
BYTE QQ::QQ_SUB_CMD_REQUEST_UNKNOWN08_KEY = 0x8;
BYTE QQ::QQ_CLUSTER_CMD_CREATE_CLUSTER = 0x01;
BYTE QQ::QQ_CLUSTER_CMD_MODIFY_MEMBER = 0x02;
BYTE QQ::QQ_CLUSTER_CMD_MODIFY_CLUSTER_INFO = 0x03;
BYTE QQ::QQ_CLUSTER_CMD_GET_CLUSTER_INFO = 0x04;
BYTE QQ::QQ_CLUSTER_CMD_ACTIVATE_CLUSTER = 0x05;
BYTE QQ::QQ_CLUSTER_CMD_SEARCH_CLUSTER = 0x06;
BYTE QQ::QQ_CLUSTER_CMD_JOIN_CLUSTER = 0x07;
BYTE QQ::QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH = 0x08;
BYTE QQ::QQ_CLUSTER_CMD_EXIT_CLUSTER = 0x09;
BYTE QQ::QQ_CLUSTER_CMD_SEND_IM = 0x0A;
BYTE QQ::QQ_CLUSTER_CMD_GET_ONLINE_MEMBER = 0x0B;
BYTE QQ::QQ_CLUSTER_CMD_GET_MEMBER_INFO = 0x0C;
BYTE QQ::QQ_CLUSTER_CMD_MODIFY_CARD = 0x0E;
BYTE QQ::QQ_CLUSTER_CMD_GET_CARD_BATCH = 0x0F;
BYTE QQ::QQ_CLUSTER_CMD_GET_CARD = 0x10;
BYTE QQ::QQ_CLUSTER_CMD_COMMIT_ORGANIZATION = 0x11;
BYTE QQ::QQ_CLUSTER_CMD_UPDATE_ORGANIZATION = 0x12;
BYTE QQ::QQ_CLUSTER_CMD_COMMIT_MEMBER_ORGANIZATION = 0x13;
BYTE QQ::QQ_CLUSTER_CMD_GET_VERSION_ID = 0x19;
BYTE QQ::QQ_CLUSTER_CMD_SEND_IM_EX = 0x1A;
BYTE QQ::QQ_CLUSTER_CMD_SET_ROLE = 0x1B;
BYTE QQ::QQ_CLUSTER_CMD_TRANSFER_ROLE = 0x1C;
BYTE QQ::QQ_CLUSTER_CMD_DISMISS_CLUSTER = 0x1D;
BYTE QQ::QQ_CLUSTER_CMD_CREATE_TEMP = 0x30;
BYTE QQ::QQ_CLUSTER_CMD_MODIFY_TEMP_MEMBER = 0x31;
BYTE QQ::QQ_CLUSTER_CMD_EXIT_TEMP = 0x32;
BYTE QQ::QQ_CLUSTER_CMD_GET_TEMP_INFO = 0x33;
BYTE QQ::QQ_CLUSTER_CMD_MODIFY_TEMP_INFO = 0x34;
BYTE QQ::QQ_CLUSTER_CMD_SEND_TEMP_IM = 0x35;
BYTE QQ::QQ_CLUSTER_CMD_SUB_CLUSTER_OP = 0x36;
BYTE QQ::QQ_CLUSTER_CMD_ACTIVATE_TEMP = 0x37;
BYTE QQ::QQ_REPLY_NO_SUCH_CLUSTER = 0x02;
BYTE QQ::QQ_REPLY_TEMP_CLUSTER_REMOVED = 0x03;
BYTE QQ::QQ_REPLY_NOT_TEMP_CLUSTER_MEMBER = 0x04;
BYTE QQ::QQ_REPLY_NOT_CLUSTER_MEMBER = 0x0A;
BYTE QQ::QQ_REPLY_MAYBE_OFFLINE = 0x02;
BYTE QQ::QQ_REPLY_SMS_OK = 0x00;
BYTE QQ::QQ_REPLY_SMS_QUEUED = 0x01;
BYTE QQ::QQ_REPLY_SMS_FAIL = 0x04;
BYTE QQ::QQ_CLUSTER_TYPE_PERMANENT = 0x01;
BYTE QQ::QQ_CLUSTER_TYPE_DIALOG = 0x01;
BYTE QQ::QQ_CLUSTER_TYPE_SUBJECT = 0x02;
BYTE QQ::QQ_ROLE_OP_SET_ADMIN = 0x01;
BYTE QQ::QQ_ROLE_OP_UNSET_ADMIN = 0x00;
int QQ::QQ_ROLE_ADMIN = 0x01;
int QQ::QQ_ROLE_STOCKHOLDER = 0x02;
BYTE QQ::QQ_CLUSTER_SUB_CMD_ADD_MEMBER = 0x01;
BYTE QQ::QQ_CLUSTER_SUB_CMD_REMOVE_MEMBER = 0x02;
BYTE QQ::QQ_CLUSTER_SUB_CMD_GET_SUBJECT_LIST = 0x02;
BYTE QQ::QQ_CLUSTER_SUB_CMD_GET_DIALOG_LIST = 0x01;
BYTE QQ::QQ_CLUSTER_AUTH_REQUEST = 0x01;
BYTE QQ::QQ_CLUSTER_AUTH_APPROVE = 0x02;
BYTE QQ::QQ_CLUSTER_AUTH_REJECT = 0x03;
BYTE QQ::QQ_CLUSTER_JOIN_OK = 0x01;
BYTE QQ::QQ_CLUSTER_JOIN_NEED_AUTH = 0x02;
BYTE QQ::QQ_CLUSTER_JOIN_DENIED = 0x03;
BYTE QQ::QQ_CLUSTER_SEARCH_BY_ID = 0x01;
BYTE QQ::QQ_CLUSTER_SEARCH_DEMO = 0x02;
BYTE QQ::QQ_CLUSTER_OP_UNSET_ADMIN = 0x00;
BYTE QQ::QQ_CLUSTER_OP_SET_ADMIN = 0x01;
short QQ::QQ_CONTENT_TYPE_DEFAULT = 0x0001;
short QQ::QQ_CONTENT_TYPE_RICH = 0x0002;
BYTE QQ::QQ_IM_NORMAL_REPLY = 0x01;
BYTE QQ::QQ_IM_AUTO_REPLY = 0x02;
int QQ::QQ_IM_FROM_USER = 0;
int QQ::QQ_IM_FROM_SYS = 1;
int QQ::QQ_IM_FROM_CLUSTER = 2;
int QQ::QQ_IM_FROM_SMS = 3;
int QQ::QQ_IM_FROM_TEMP_SESSION = 4;
BYTE QQ::QQ_SUB_CMD_GET_ONLINE_FRIEND = 0x2;
BYTE QQ::QQ_SUB_CMD_GET_ONLINE_SERVICE = 0x3;
BYTE QQ::QQ_SUB_CMD_UPLOAD_GROUP_NAME = 0x2;
BYTE QQ::QQ_SUB_CMD_DOWNLOAD_GROUP_NAME = 0x1;
BYTE QQ::QQ_SUB_CMD_SEND_TEMP_SESSION_IM = 0x01;
BYTE QQ::QQ_SUB_CMD_BATCH_DOWNLOAD_FRIEND_REMARK = 0x0;
BYTE QQ::QQ_SUB_CMD_UPLOAD_FRIEND_REMARK = 0x1;
BYTE QQ::QQ_SUB_CMD_REMOVE_FRIEND_FROM_LIST = 0x2;
BYTE QQ::QQ_SUB_CMD_DOWNLOAD_FRIEND_REMARK = 0x3;
BYTE QQ::QQ_SUB_CMD_MODIFY_SIGNATURE = 0x01;
BYTE QQ::QQ_SUB_CMD_DELETE_SIGNATURE = 0x02;
BYTE QQ::QQ_SUB_CMD_GET_SIGNATURE = 0x03;
BYTE QQ::QQ_SUB_CMD_GET_USER_PROPERTY = 0x01;
BYTE QQ::QQ_SUB_CMD_GET_WEATHER = 0x01;
BYTE QQ::QQ_ID_IS_FRIEND = 0x1;
BYTE QQ::QQ_ID_IS_CLUSTER = 0x4;
short QQ::QQ_RECV_IM_FRIEND = 0x0009;
short QQ::QQ_RECV_IM_STRANGER = 0x000A;
short QQ::QQ_RECV_IM_BIND_USER = 0x000B;
short QQ::QQ_RECV_IM_MOBILE = 0x000C;
short QQ::QQ_RECV_IM_MEMBER_LOGIN_HINT = 0x0012;
short QQ::QQ_RECV_IM_MOBILE_QQ = 0x0013;
short QQ::QQ_RECV_IM_MOBILE_QQ_2 = 0x0014;
short QQ::QQ_RECV_IM_QQLIVE = 0x0018;
short QQ::QQ_RECV_IM_PROPERTY_CHANGE = 0x001E;
short QQ::QQ_RECV_IM_TEMP_SESSION = 0x001F;
short QQ::QQ_RECV_IM_UNKNOWN_CLUSTER = 0x0020;
short QQ::QQ_RECV_IM_ADDED_TO_CLUSTER = 0x0021;
short QQ::QQ_RECV_IM_DELETED_FROM_CLUSTER = 0x0022;
short QQ::QQ_RECV_IM_REQUEST_JOIN_CLUSTER = 0x0023;
short QQ::QQ_RECV_IM_APPROVE_JOIN_CLUSTER = 0x0024;
short QQ::QQ_RECV_IM_REJECT_JOIN_CLUSTER = 0x0025;
short QQ::QQ_RECV_IM_CREATE_CLUSTER = 0x0026;
short QQ::QQ_RECV_IM_TEMP_CLUSTER = 0x002A;
short QQ::QQ_RECV_IM_CLUSTER = 0x002B;
short QQ::QQ_RECV_IM_CLUSTER_NOTIFICATION = 0x002C;
short QQ::QQ_RECV_IM_SYS_MESSAGE = 0x0030;
short QQ::QQ_RECV_IM_SIGNATURE_CHANGE = 0x0041;
short QQ::QQ_RECV_IM_CUSTOM_HEAD_CHANGE = 0x0049;
short QQ::QQ_LIVE_IM_TYPE_DISK = 0x0400;
BYTE QQ::QQ_MOBILE_QQ_BY_QQ = 0x00;
BYTE QQ::QQ_MOBILE_QQ_BY_MOBILE = 0x01;
BYTE QQ::QQ_RECV_IM_KICK_OUT = 0x01;
short QQ::QQ_IM_TYPE_TEXT = 0x000B;
short QQ::QQ_IM_TYPE_TCP_REQUEST = 0x0001;
short QQ::QQ_IM_TYPE_ACCEPT_TCP_REQUEST = 0x0003;
short QQ::QQ_IM_TYPE_REJECT_TCP_REQUEST = 0x0005;
short QQ::QQ_IM_TYPE_UDP_REQUEST = 0x0035;
short QQ::QQ_IM_TYPE_ACCEPT_UDP_REQUEST = 0x0037;
short QQ::QQ_IM_TYPE_REJECT_UDP_REQUEST = 0x0039;
short QQ::QQ_IM_TYPE_NOTIFY_IP = 0x003B;
short QQ::QQ_IM_TYPE_ARE_YOU_BEHIND_FIREWALL = 0x003F;
short QQ::QQ_IM_TYPE_ARE_YOU_BEHIND_PROXY = 0x0041;
short QQ::QQ_IM_TYPE_YES_I_AM_BEHIND_PROXY = 0x0042;
short QQ::QQ_IM_TYPE_NOTIFY_FILE_AGENT_INFO = 0x004B;
short QQ::QQ_IM_TYPE_REQUEST_CANCELED = 0x0049;
int QQ::QQ_MAX_SMS_SENDER_NAME = 13;
int QQ::QQ_MAX_SMS_MOBILE_LENGTH = 18;
int QQ::QQ_MAX_SMS_LENGTH = 58;
BYTE QQ::QQ_SMS_MODE_HAND_FREE = 0x20;
BYTE QQ::QQ_SMS_MODE_NORMAL = 0x00;
BYTE QQ::QQ_SMS_CONTENT_NORMAL = 0x00;
BYTE QQ::QQ_SMS_CONTENT_LOVE_WORD = 0x01;
BYTE QQ::QQ_SMS_CONTENT_PICTURE = 0x02;
BYTE QQ::QQ_SMS_CONTENT_RING = 0x03;
BYTE QQ::QQ_TAG_DEFAULT_FACE = 0x14;
BYTE QQ::QQ_TAG_CUSTOM_FACE = 0x15;
BYTE QQ::QQ_FORMAT_TAG_NEW_CUSTOM_FACE = 0x33;
BYTE QQ::QQ_FORMAT_TAG_EXISTING_CUSTOM_FACE = 0x34;
BYTE QQ::QQ_FORMAT_TAG_NEW_SERVER_SIDE_CUSTOM_FACE = 0x36;
BYTE QQ::QQ_FORMAT_TAG_EXISTING_SERVER_SIDE_CUSTOM_SIDE = 0x37;
BYTE QQ::QQ_FORMAT_TAG_UNKNOWN_1 = 0x38;
BYTE QQ::QQ_FORMAT_TAG_UNKNOWN_2 = 0x39;
BYTE QQ::QQ_AUTH_NO = 0;
BYTE QQ::QQ_AUTH_NEED = 1;
BYTE QQ::QQ_AUTH_REJECT = 2;
BYTE QQ::QQ_AUTH_CLUSTER_NO = 1;
BYTE QQ::QQ_AUTH_CLUSTER_NEED = 2;
BYTE QQ::QQ_AUTH_CLUSTER_REJECT = 3;
BYTE QQ::QQ_MY_AUTH_APPROVE = 0x30;
BYTE QQ::QQ_MY_AUTH_REJECT = 0x31;
BYTE QQ::QQ_MY_AUTH_REQUEST = 0x32;
int QQ::QQ_CONTACT_OPEN = 0;
int QQ::QQ_CONTACT_ONLY_FRIENDS = 1;
int QQ::QQ_CONTACT_CLOSE = 2;
int QQ::QQ_SYS_BEING_ADDED = 1;
int QQ::QQ_SYS_ADD_FRIEND_REQUEST = 2;
int QQ::QQ_SYS_ADD_FRIEND_APPROVED = 3;
int QQ::QQ_SYS_ADD_FRIEND_REJECTED = 4;
int QQ::QQ_SYS_ADVERTISEMENT = 6;
int QQ::QQ_SYS_UPDATE_HINT = 9;
int QQ::QQ_SYS_BEING_ADDED_EX = 40;
int QQ::QQ_SYS_ADD_FRIEND_REQUEST_EX = 41;
int QQ::QQ_SYS_ADD_FRIEND_APPROVED_AND_ADD = 43;
BYTE QQ::QQ_FLAG_ALLOW_ADD_REVERSE = 0x01;
BYTE QQ::QQ_FLAG_NOT_ALLOW_ADD_REVERSE = 0x02;
BYTE QQ::QQ_SEARCH_ALL = 0x31;
BYTE QQ::QQ_SEARCH_CUSTOM = 0x30;
int QQ::QQ_MAX_CUSTOM_HEAD_FRAGMENT_SIZE = 800;
int QQ::QQ_LENGTH_FILE_PACKET_HEADER = 12;
short QQ::QQ_FILE_CMD_HEART_BEAT = 0x0001;
short QQ::QQ_FILE_CMD_HEART_BEAT_ACK = 0x0002;
short QQ::QQ_FILE_CMD_TRANSFER_FINISHED = 0x0003;
short QQ::QQ_FILE_CMD_FILE_OP = 0x0007;
short QQ::QQ_FILE_CMD_FILE_OP_ACK = 0x0008;
BYTE QQ::QQ_FILE_BASIC_INFO = 0x1;
BYTE QQ::QQ_FILE_DATA_INFO = 0x2;
BYTE QQ::QQ_FILE_EOF = 0x3;
short QQ::QQ_FILE_CMD_SENDER_SAY_HELLO = 0x0031;
short QQ::QQ_FILE_CMD_SENDER_SAY_HELLO_ACK = 0x0032;
short QQ::QQ_FILE_CMD_RECEIVER_SAY_HELLO = 0x0033;
short QQ::QQ_FILE_CMD_RECEIVER_SAY_HELLO_ACK = 0x0034;
short QQ::QQ_FILE_CMD_NOTIFY_IP_ACK = 0x003C;
short QQ::QQ_FILE_CMD_PING = 0x003D;
short QQ::QQ_FILE_CMD_PONG = 0x003E;
short QQ::QQ_FILE_CMD_YES_I_AM_BEHIND_FIREWALL = 0x0040;
short QQ::QQ_FILE_CMD_REQUEST_AGENT = 0x0001;
short QQ::QQ_FILE_CMD_CHECK_IN = 0x0002;
short QQ::QQ_FILE_CMD_FORWARD = 0x0003;
short QQ::QQ_FILE_CMD_FORWARD_FINISHED = 0x0004;
short QQ::QQ_FILE_CMD_IT_IS_TIME = 0x0005;
short QQ::QQ_FILE_CMD_I_AM_READY = 0x0006;
short QQ::QQ_FILE_AGENT_SERVICE_APPROVED = 0x0000;
short QQ::QQ_FILE_AGENT_SERVICE_REDIRECTED = 0x0001;
BYTE QQ::QQ_TRANSFER_FILE = 0x65;
BYTE QQ::QQ_TRANSFER_FACE = 0x6B;
BYTE QQ::QQ_TRANSFER_FILE_UDP = 0;
BYTE QQ::QQ_TRANSFER_FILE_DIRECT_UDP = 1;
BYTE QQ::QQ_TRANSFER_FILE_TCP = 2;
BYTE QQ::QQ_TRANSFER_FILE_DIRECT_TCP = 3;
int QQ::QQ_SAME_LAN = 0;
int QQ::QQ_NONE_BEHIND_FIREWALL = 1;
int QQ::QQ_I_AM_BEHIND_FIREWALL = 2;
int QQ::QQ_HE_IS_BEHIND_FIREWALL = 3;
int QQ::QQ_ALL_BEHIND_FIREWALL = 4;
BYTE QQ::QQ_SAME_IN_TO_SAME_IN_HELLO = 0;
BYTE QQ::QQ_IN_TO_OUT_HELLO = 1;
BYTE QQ::QQ_OUT_TO_IN_HELLO = 2;
BYTE QQ::QQ_OUT_TO_OUT_HELLO = 0;
int QQ::QQ_MAX_FILE_MD5_LENGTH = 10002432;