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 ();
}