📄 datafile.cpp
字号:
//ThorClient 802.1x (using WinPcap 3.2 alpha1)
//Download: http://thorqq.ys168.com
//E-mail: thorqq@163.com
//Author: Thorqq
//
//公共接口函数:
// CDataFile(PUSERDATA pUserData) 构造函数,传入用户数据指针
// virtual ~CDataFile() 析构函数
//
// bool Load() 从磁盘读数据
// bool Save() 向磁盘写数据
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "DataFile.h"
#include "iphlpapi.h" //IP_ADAPTER_INFO,GetAdaptersInfo()
#include "winsock2.h" //htons(),inet_addr()
typedef DWORD(CALLBACK * PGAINFO)(PIP_ADAPTER_INFO,PULONG);//GetAdaptersInfo
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDataFile::CDataFile(PUSERDATA pUserData): pData(pUserData)
{
m_hFile= NULL;
}
CDataFile::~CDataFile()
{
}
bool CDataFile::Load()
{
if(::GetFileAttributes(FILENAME) == -1)
{//如果文件不存在,初始化并保存数据
Init();
Save();
return true;
}
//如果没有关闭,就关闭
if(m_hFile != INVALID_HANDLE_VALUE)
::CloseHandle(m_hFile);
//打开文件
m_hFile = ::CreateFile(FILENAME, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( (m_hFile == INVALID_HANDLE_VALUE) ||
::SetFilePointer(m_hFile, 0, NULL, FILE_BEGIN) == -1 )//定位文件头
return false;
DWORD dw = 0;
::ReadFile(m_hFile, pData, sizeof(USERDATA), &dw, NULL);
::CloseHandle(m_hFile);
m_hFile = INVALID_HANDLE_VALUE;
if( dw != sizeof(USERDATA) )
return false;
Decode();//解密密码
if(pData->autologin)
m_Login = true;
else
m_Login = false;
return true;
}
bool CDataFile::Save()
{
DWORD dw;
char tmp[30] = { 0 };
if(m_hFile != INVALID_HANDLE_VALUE)
::CloseHandle(m_hFile);
m_hFile = ::CreateFile(FILENAME, GENERIC_WRITE, 0,
NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(m_hFile != INVALID_HANDLE_VALUE)
{
strcpy(tmp, pData->password);//把密码保存在临时变量中
if(pData->rempwd == 0)//如果不记住密码,则把密码清零
memset(pData->password, 0, sizeof(pData->password));
Encode();//加密密码
::WriteFile(m_hFile, pData, sizeof(USERDATA), &dw, NULL);
::CloseHandle(m_hFile);
strcpy(pData->password, tmp);
return true;
}
return false;
}
void CDataFile::Init()
{//初始化数据
strcpy(pData->username, "");
strcpy(pData->password, "");
if(!GetGlobalData())
{
AfxMessageBox("NIC ERROR!");
}
pData->morb = 0;
pData->dhcp = 1;
pData->updateip = 1;
pData->multisend = 0;
pData->relogin = 0;
pData->rempwd = 1;
pData->autologin = 0;
}
void CDataFile::Encode()//华3客户端 将密码与0x55异或
{
u_char pass = 0x37;
for(int i = 0; i < sizeof(pData->password); i++)
{
pData->password[i] ^= pass;
pass += 11;
}
}
void CDataFile::Decode()
{
Encode();
}
bool CDataFile::GetGlobalData()
{
PGAINFO pGAInfo;
//加载IP Helper API 所需的库文件
HINSTANCE hInst;//实例句柄
hInst=LoadLibrary("iphlpapi.dll");
if(!hInst)
AfxMessageBox("iphlpapi.dll not supported in this platform!\n");
pGAInfo=(PGAINFO)GetProcAddress(hInst,"GetAdaptersInfo");
DWORD dwLocalIP = 0;
IP_ADAPTER_INFO AdapterInfo; // Allocate information
PIP_ADAPTER_INFO pAdapterInfo = &AdapterInfo; // for up to 5 NICs
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = pGAInfo(// Call GetAdapterInfo
pAdapterInfo, // [out] buffer to receive data
&dwBufLen);
// 取得本地适配器结构信息
if(dwStatus == ERROR_SUCCESS && pAdapterInfo != NULL)
{
dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);
memcpy(pData->ip, (unsigned char*)&dwLocalIP, 4); //get IP
memcpy(pData->mac, pAdapterInfo->Address, 6); //get MAC
strcpy(pData->nic, "\\Device\\NPF_"); //
strcat(pData->nic, pAdapterInfo->AdapterName); //NIC
strcpy(pData->nicdes, pAdapterInfo->Description); //NIC DESCRIPTION
return true;
}
//////////////////////////////////////////////////
/*
DWORD dwLocalIP = 0;
IP_ADAPTER_INFO AdapterInfo; // Allocate information
PIP_ADAPTER_INFO pAdapterInfo = &AdapterInfo; // for up to 5 NICs
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = GetAdaptersInfo(// Call GetAdapterInfo
pAdapterInfo, // [out] buffer to receive data
&dwBufLen);
// 取得本地适配器结构信息
if(dwStatus == ERROR_SUCCESS && pAdapterInfo != NULL)
{
dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);
memcpy(pData->ip, (unsigned char*)&dwLocalIP, 4); //get IP
memcpy(pData->mac, pAdapterInfo->Address, 6); //get MAC
strcpy(pData->nic, "\\Device\\NPF_"); //
strcat(pData->nic, pAdapterInfo->AdapterName); //NIC
strcpy(pData->nicdes, pAdapterInfo->Description); //NIC DESCRIPTION
return true;
}
*/
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -