www.pudn.com > IPFlood.rar > RegisterDlg.cpp


// RegisterDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "IPFlood.h" 
#include "RegisterDlg.h" 
#include "IPFloodDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CRegisterDlg dialog 
 
 
CRegisterDlg::CRegisterDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CRegisterDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CRegisterDlg) 
	m_RegCode = _T(""); 
	//}}AFX_DATA_INIT 
} 
 
 
void CRegisterDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CRegisterDlg) 
	DDX_Control(pDX, IDC_CBADAPTERLIST, m_adaplist); 
	DDX_Text(pDX, IDC_IREG, m_RegCode); 
	DDV_MaxChars(pDX, m_RegCode, 32); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CRegisterDlg, CDialog) 
	//{{AFX_MSG_MAP(CRegisterDlg) 
	ON_CBN_SELCHANGE(IDC_CBADAPTERLIST, OnSelchangeCbadapterlist) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CRegisterDlg message handlers 
 
BOOL CRegisterDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	int i=0; 
	// TODO: Add extra initialization here 
	CIPFloodDlg *cm=(CIPFloodDlg *)this->GetParent (); 
	if(!cm-> GetAdapters()) 
	{ 
		AfxMessageBox("您的计算机没有安装以太网卡\n或者\n所有以太网卡都已被\"禁用\"\n无法进行注册!"); 
		return FALSE; 
	} 
	while(strlen(cm->Adapters[i].desc)>0) 
	{ 
		m_adaplist.InsertString (i,cm->Adapters[i].desc );i++; 
	} 
	if(m_adaplist.GetCount () >0) 
	{	 
		m_adaplist.SetCurSel (0); 
		OnSelchangeCbadapterlist(); 
	} 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CRegisterDlg::OnSelchangeCbadapterlist()  
{ 
	// TODO: Add your control notification handler code here 
	int sel=-1; 
	CIPFloodDlg *cm=(CIPFloodDlg *)this->GetParent (); 
	sel=m_adaplist.GetCurSel (); 
	if(sel>=0) 
		SetDlgItemText(IDC_ADAPTERMAC,(char*)cm->Adapters[sel].mac ); 
} 
 
void CRegisterDlg::OnOK()  
{ 
	// TODO: Add extra validation here 
	UpdateData(TRUE); 
	int sel=-1,i=0,j=0; 
	USHORT chksum=0; 
	sel=m_adaplist.GetCurSel (); 
	HKEY		RootKey,SWKey; 
	LPCTSTR SWRegPath="\\Software\\IPFlood",SWName="IPFlood"; 
	CIPFloodDlg *cm=(CIPFloodDlg *)this->GetParent (); 
	unsigned char digest[16],tmp[33],hmackey[12]={0x19,0x77,0x09,0x03,0x19,0x80,0x10,0x03,0x20,0x02,0x10,0x15}; 
	unsigned int dlen; 
	char abc[33]; 
	 
	dlen=strlen(cm->Adapters[sel].mac); 
 
	md5_hmac(cm->Adapters[sel].mac,dlen,hmackey,12,digest); 
	MD5Print(digest,abc); 
	cm->m_RegPassed =FALSE; 
	strcpy((char*)tmp,m_RegCode.GetBuffer (m_RegCode.GetLength() )); 
	if(strstr((char*)abc,(char*)tmp) && strstr((char*)tmp,(char*)abc)) 
	{ 
		AfxMessageBox("恭喜,您注册成功!"); 
		if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,SWRegPath,0,KEY_READ,&SWKey)!=ERROR_SUCCESS) 
		{	 
			RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software",0,KEY_WRITE,&RootKey); 
			if(RegCreateKey(RootKey,"IPFlood",&SWKey)!=ERROR_SUCCESS) 
			{	 
				AfxMessageBox("创建注册表项错误,注册未完成!");goto __MyExitNow; 
			} 
		} 
		DWORD cp=strlen(cm->Adapters[sel].mac); 
		DWORD tp=REG_SZ; 
		if(RegSetValueEx(SWKey,"Mac",NULL,tp,(const unsigned char *)cm->Adapters[sel].mac,cp) \ 
			!=ERROR_SUCCESS) 
		{	 
			RegCloseKey(SWKey);RegCloseKey(RootKey); 
			AfxMessageBox("注册表设置错误,注册未完成!");goto __MyExitNow; 
		} 
		cp=strlen(abc); 
		if(RegSetValueEx(SWKey,"Code",NULL,tp,(const unsigned char *)abc,cp) \ 
			!=ERROR_SUCCESS) 
		{	 
			RegCloseKey(SWKey);RegCloseKey(RootKey); 
			AfxMessageBox("注册表设置错误,注册未完成!");goto __MyExitNow; 
		} 
		cm->m_RegPassed =TRUE; 
	} 
	else 
		AfxMessageBox("注册码不正确!"); 
__MyExitNow: 
	CDialog::OnOK (); 
}