📄 qqinfo.h
字号:
#ifndef __QQ_INFO__
#define __QQ_INFO__
#include "stdafx.h"
#include "Base64.h"
#include "ConvertAsciiChrHex.h"
//#include "common.h"
// QQ登陆所需要的信息
class QQInfo
{
public:
QQInfo(CString QQNumber, CString QQName, CString QQPWDMD5Hex,
CString QQStatus = "在线", CString QQUsOrNot = "挂")
{
this->QQNumber = QQNumber;
this->QQName = QQName;
this->QQPWDMD5Hex = QQPWDMD5Hex;
this->QQStatus = QQStatus;
this->QQUsOrNot = QQUsOrNot;
QQNameHex = AsciiStrToHexStr(QQName);
EnCodeQQPWDStr();
HashQQPWD();
SetQQStatusNbr(QQStatus);
EnCodeConfStr();
}
QQInfo(CString QQConfStr)
{
this->QQConfStr = QQConfStr;
DecodeConfStr();
QQName = HexStrToAsciiStr(QQNameHex);
DeCodeQQPWDStr();
HashQQPWD();
SetQQStatusNbr(QQStatus);
}
QQInfo(const QQInfo& oldQQ)
{
QQNumber = oldQQ.QQNumber;
QQName = oldQQ.QQName;
QQNameHex = oldQQ.QQNameHex;
QQPWDMD5Hex = oldQQ.QQPWDMD5Hex;
QQPWDMD5HexCP = oldQQ.QQPWDMD5HexCP;
QQPWDHASH = oldQQ.QQPWDHASH;
QQStatus = oldQQ.QQStatus;
QQStatusNbr = oldQQ.QQStatusNbr;
QQUsOrNot = oldQQ.QQUsOrNot;
QQConfStr = oldQQ.QQConfStr;
}
const QQInfo& QQInfo::operator=(const QQInfo& oldQQ)
{
if (&oldQQ == this)
{
return *this;
}
QQNumber = oldQQ.QQNumber;
QQName = oldQQ.QQName;
QQNameHex = oldQQ.QQNameHex;
QQPWDMD5Hex = oldQQ.QQPWDMD5Hex;
QQPWDMD5HexCP = oldQQ.QQPWDMD5HexCP;
QQPWDHASH = oldQQ.QQPWDHASH;
QQStatus = oldQQ.QQStatus;
QQStatusNbr = oldQQ.QQStatusNbr;
QQUsOrNot = oldQQ.QQUsOrNot;
QQConfStr = oldQQ.QQConfStr;
return *this;
}
void SetQQUsOrNot(CString QQUsOrNot)
{
if (QQUsOrNot == "挂" || QQUsOrNot == "停")
{
this->QQUsOrNot = QQUsOrNot;
EnCodeConfStr();
}
}
CString GetQQNbr()
{
return QQNumber;
}
CString GetQQName()
{
return QQName;
}
CString GetQQStat()
{
return QQStatus;
}
BOOL IsUsing()
{
if (QQUsOrNot == "挂")
{
return TRUE;
}
else if (QQUsOrNot == "停")
{
return FALSE;
}
else
{
// 错误: 未知使用状态类型
}
return TRUE;
}
// 是否相同QQ号
BOOL IsDup(CString QQNumber)
{
if (this->QQNumber == QQNumber)
{
return TRUE;
}
else
{
return FALSE;
}
}
void GetQQInfo(CString& QQNumber, CString& QQName, CString& QQPWD, BOOL& LogonStatus)
{
QQNumber = this->QQNumber;
QQName = this->QQName;
QQPWD = _T("");
LogonStatus = (QQStatus=="在线")?FALSE:TRUE;
}
CString GetQQStatusNbr(CString QQStatus = "")
{
if (QQStatus != "")
{
SetQQStatusNbr(QQStatus);
}
return QQStatusNbr;
}
CString GetQQLogonStr()
{
CString QQLogonStr = CString("/START QQUIN:") + QQNumber
+ CString(" PWDHASH:") + QQPWDHASH
+ CString(" /STAT:") + QQStatusNbr; // 40为隐身
return QQLogonStr;
}
CString GetConfStr()
{
return QQConfStr;
}
~QQInfo()
{
}
private:
void SetQQStatusNbr(CString QQStatus)
{
if (QQStatus == "在线")
{
QQStatusNbr = "41";
}
else if (QQStatus == "隐身")
{
QQStatusNbr = "40";
}
else
{
// 错误: 未知登录状态类型
}
}
void HashQQPWD()
{
unsigned char PWDMD5MEM[16];
char PWDHASH[25] = {0};
HexStrToMem(QQPWDMD5Hex, PWDMD5MEM);
CBase64::EncodeBase64(PWDMD5MEM, PWDHASH, 16, 25);
QQPWDHASH = CString(PWDHASH);
}
// 对QQ密码MD5HEX再处理
void EnCodeQQPWDStr()
{
// 交换字母
QQPWDMD5HexCP = QQPWDMD5Hex;
QQPWDMD5HexCP.Replace('A', '+');
QQPWDMD5HexCP.Replace('B', 'A');
QQPWDMD5HexCP.Replace('+', 'B');
}
void DeCodeQQPWDStr()
{
QQPWDMD5Hex = QQPWDMD5HexCP;
QQPWDMD5Hex.Replace('A', '+');
QQPWDMD5Hex.Replace('B', 'A');
QQPWDMD5Hex.Replace('+', 'B');
}
// QQUsing|QQNumber|QQNameHex|QQPWDMD5HexCP|QQStatus
void EnCodeConfStr()
{
QQConfStr = QQUsOrNot + CString("|")
+ QQNumber + CString("|")
+ QQNameHex + CString("|")
+ QQPWDMD5HexCP + CString("|")
+ QQStatus;
}
void DecodeConfStr()
{
int QUseIdx = QQConfStr.Find('|');
int QNbrIdx = QQConfStr.Find('|',QUseIdx+1);
int QNameIdx = QQConfStr.Find('|',QNbrIdx+1);
int QPWDIdx = QQConfStr.Find('|',QNameIdx+1);
QQUsOrNot = QQConfStr.Left(QUseIdx);
QQNumber = QQConfStr.Mid(QUseIdx+1, QNbrIdx-QUseIdx-1);
QQNameHex = QQConfStr.Mid(QNbrIdx+1, QNameIdx-QNbrIdx-1);
QQPWDMD5HexCP = QQConfStr.Mid(QNameIdx+1, QPWDIdx-QNameIdx-1);
QQStatus = QQConfStr.Right(QQConfStr.GetLength()-QPWDIdx-1);
}
private:
CString QQNumber;
CString QQName;
CString QQNameHex;
CString QQPWDMD5Hex;
CString QQPWDMD5HexCP;
CString QQPWDHASH;
CString QQStatus;
CString QQStatusNbr;
CString QQUsOrNot;
CString QQConfStr;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -