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


// SetupDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "IPFlood.h" 
#include "SetupDlg.h" 
#include "IPFloodDlg.h" 
#include  
#include  
#include  
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CSetupDlg dialog 
 
 
CSetupDlg::CSetupDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CSetupDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CSetupDlg) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void CSetupDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CSetupDlg) 
	DDX_Control(pDX, IDC_TASKSETUPPAGE, m_InfobarCtrl); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CSetupDlg, CDialog) 
	//{{AFX_MSG_MAP(CSetupDlg) 
	ON_COMMAND(ID_MENUGLOBALSETUP, OnMenuglobalsetup) 
	ON_COMMAND(ID_MENUIPSETUP, OnMenuipsetup) 
	ON_COMMAND(ID_MENUICMPSETUP, OnMenuicmpsetup) 
	ON_COMMAND(ID_MENUTCPUDPSETUP, OnMenutcpudpsetup) 
	ON_COMMAND(ID_MENUMACSETUP, OnMenumacsetup) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CSetupDlg message handlers 
 
BOOL CSetupDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	m_InfobarCtrl.SetText ("设置全局参数"); 
	m_SetupIcmpDlg.Create (IDD_SETUPICMP,GetDlgItem(IDC_SETUPAREA)); 
	m_SetupGlobalDlg.Create (IDD_SETUPGLOBAL,GetDlgItem(IDC_SETUPAREA)); 
	m_SetupIPDlg.Create (IDD_SETUPIP,GetDlgItem(IDC_SETUPAREA)); 
	m_SetupTcpUdpDlg.Create (IDD_SETUPTCPUDP,GetDlgItem(IDC_SETUPAREA)); 
	m_SetupIPDlg.m_IPSpecialSrcIP.SetAddress(192,168,157,111); 
	m_SetupIPDlg.m_IPDestIP.SetAddress(192,168,157,222); 
	m_SetupGlobalDlg.ShowWindow (SW_SHOW); 
	m_SetMacDlg.Create (IDD_SETPMAC,GetDlgItem(IDC_SETUPAREA)); 
 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CSetupDlg::ActivePage(int nIndex) 
{ 
	switch(nIndex) 
	{ 
	case 0: 
		m_SetupGlobalDlg.ShowWindow (SW_SHOW); 
		m_SetupIPDlg.ShowWindow (SW_HIDE); 
		m_SetupIcmpDlg.ShowWindow (SW_HIDE); 
		m_SetupTcpUdpDlg.ShowWindow (SW_HIDE); 
		m_SetMacDlg.ShowWindow (SW_HIDE); 
		m_InfobarCtrl.SetText ("设置全局参数"); 
		break; 
	case 1: 
		m_SetupGlobalDlg.ShowWindow (SW_HIDE); 
		m_SetupIPDlg.ShowWindow (SW_SHOW); 
		m_SetupIcmpDlg.ShowWindow (SW_HIDE); 
		m_SetupTcpUdpDlg.ShowWindow (SW_HIDE); 
		m_SetMacDlg.ShowWindow (SW_HIDE); 
		m_InfobarCtrl.SetText ("设置IP参数"); 
		break; 
	case 2: 
		m_SetupGlobalDlg.ShowWindow (SW_HIDE); 
		m_SetupIPDlg.ShowWindow (SW_HIDE); 
		m_SetupIcmpDlg.ShowWindow (SW_SHOW); 
		m_SetupTcpUdpDlg.ShowWindow (SW_HIDE); 
		m_SetMacDlg.ShowWindow (SW_HIDE); 
		m_InfobarCtrl.SetText ("设置ICMP参数"); 
		break; 
	case 3: 
		m_SetupGlobalDlg.ShowWindow (SW_HIDE); 
		m_SetupIPDlg.ShowWindow (SW_HIDE); 
		m_SetupIcmpDlg.ShowWindow (SW_HIDE); 
		m_SetupTcpUdpDlg.ShowWindow (SW_SHOW); 
		m_SetMacDlg.ShowWindow (SW_HIDE); 
		m_InfobarCtrl.SetText ("设置TCP/UDP参数"); 
		break; 
	case 4: 
		m_SetupGlobalDlg.ShowWindow (SW_HIDE); 
		m_SetupIPDlg.ShowWindow (SW_HIDE); 
		m_SetupIcmpDlg.ShowWindow (SW_HIDE); 
		m_SetupTcpUdpDlg.ShowWindow (SW_HIDE); 
		m_SetMacDlg.ShowWindow (SW_SHOW); 
		m_InfobarCtrl.SetText ("设置802.3参数"); 
		break; 
	default:		break; 
	} 
} 
 
void CSetupDlg::OnMenuglobalsetup()  
{ 
	// TODO: Add your command handler code here 
	ActivePage(0); 
} 
 
void CSetupDlg::OnMenuipsetup()  
{ 
	// TODO: Add your command handler code here 
	ActivePage(1); 
} 
 
void CSetupDlg::OnMenuicmpsetup()  
{ 
	// TODO: Add your command handler code here 
	ActivePage(2); 
} 
 
void CSetupDlg::OnMenutcpudpsetup()  
{ 
	// TODO: Add your command handler code here 
	ActivePage(3); 
} 
 
void CSetupDlg::OnMenumacsetup()  
{ 
	// TODO: Add your command handler code here 
	ActivePage(4); 
} 
 
void CSetupDlg::OnOK()  
{ 
	// TODO: Add extra validation here 
	int i; 
	char sz[16]; 
	BYTE j=1; 
 
	i=m_SetupGlobalDlg.UpdateData (true); 
	if(i==0) 
		return; 
	i=m_SetupIPDlg.UpdateData (true); 
	if(i==0) 
		return; 
	i=m_SetupIcmpDlg.UpdateData (true); 
	if(i==0) 
		return; 
	i=m_SetupTcpUdpDlg.UpdateData (true); 
	if(i==0) 
		return; 
	 
	CIPFloodDlg *pMainDlg=(CIPFloodDlg *)GetParent (); 
	pMainDlg->SetupDlgShow=FALSE; 
	pTaskItem tmp; tmp=pMainDlg->pTaskList; 
	pTaskItem pItem=new TaskItem; 
 
	pItem->m_SendMode		=m_SetupGlobalDlg.m_SendMACIP .GetCurSel (); 
	GetMac (m_SetMacDlg.m_MacDest ,pItem->m_DestMAC ); 
	GetMac (m_SetMacDlg.m_MacSrc  ,pItem->m_SrcMAC  ); 
	pItem->m_MacProto		=htons(m_SetMacDlg.m_MacProto) ; 
	pItem->m_MacLen			=htons(m_SetMacDlg.m_MacLen) ; 
	pItem->m_IncSrcMAC		=m_SetMacDlg.m_IncSrcMAC ; 
	pItem->m_RandSrcMAC		=m_SetMacDlg.m_RandSrcMAC ; 
	pItem->m_IncDestMAC		=m_SetMacDlg.m_IncDestMAC ; 
	pItem->m_RandDestMAC	=m_SetMacDlg.m_RandDestMAC ; 
 
	pItem->m_Number			=m_SetupGlobalDlg.m_number ; 
	pItem->m_PPS			=m_SetupGlobalDlg.m_pps ; 
	pItem->m_FillRandom		=m_SetupGlobalDlg.m_FillRandom ; 
	pItem->m_FillVal		=m_SetupGlobalDlg.m_FillVal ; 
	pItem->m_ProcessID		=(UINT)_getpid(); 
	pItem->m_sent			=0; 
	pItem->m_MyPPS			=0; 
 
	pItem->m_IpTos			=m_SetupIPDlg.m_IPTos ; 
	pItem->m_IpProtocol		=m_SetupIPDlg.m_IPProtocol ; 
	pItem->m_IpTTL			=m_SetupIPDlg.m_IPTTL  ; 
	pItem->m_IpFragOffset	=m_SetupIPDlg.m_IPFragOffset  ; 
	pItem->m_IpLen			=m_SetupIPDlg.m_IPLen  ; 
	pItem->m_IpProtocol		=m_SetupIPDlg.m_IPProtocol  ; 
	m_SetupIPDlg.m_IPSpecialSrcIP.GetAddress(pItem->m_SrcIP); 
	pItem->m_SrcIP			=htonl(pItem->m_SrcIP); 
	m_SetupIPDlg.m_IPDestIP.GetAddress(pItem->m_DestIP); 
	pItem->m_DestIP			=htonl(pItem->m_DestIP); 
	pItem->m_SpecialSrcIp	=m_SetupIPDlg.m_BSpecialSrcIP ; 
	pItem->m_RandomSrcIp	=m_SetupIPDlg.m_BRandomIP ; 
	pItem->m_RandomDestIp	=m_SetupIPDlg.m_bRandomDestIP ; 
	pItem->m_IncSrcIP		=m_SetupIPDlg.m_IPincreaseSrc ; 
	pItem->m_IncDestIP		=m_SetupIPDlg.m_IPincreaseDest ; 
	pItem->m_Ipchk			=m_SetupIPDlg.m_BChecksum ; 
	pItem->m_Ipchksum		=m_SetupIPDlg.m_IPChecksum ; 
 
	pItem->m_IcmpCode		=m_SetupIcmpDlg.m_ICMPCode ; 
	pItem->m_IcmpType		=m_SetupIcmpDlg.m_ICMPType ; 
 
	pItem->m_PDestPort		=m_SetupTcpUdpDlg.m_PDestPort ; 
	pItem->m_PSrcPort		=m_SetupTcpUdpDlg.m_PSrcPort ; 
	pItem->m_TcpAckNumber	=m_SetupTcpUdpDlg.m_TcpAckNumber ; 
	pItem->m_TcpPtr			=m_SetupTcpUdpDlg.m_TcpUrgPtr  ; 
	pItem->m_TcpFlag		=0; 
	if(m_SetupTcpUdpDlg.m_BTcpFIN ) 
		pItem->m_TcpFlag |=1; 
	if(m_SetupTcpUdpDlg.m_BTcpSYN ) 
		pItem->m_TcpFlag |=(1<<1); 
	if(m_SetupTcpUdpDlg.m_BTcpRST ) 
		pItem->m_TcpFlag |=(1<<2); 
	if(m_SetupTcpUdpDlg.m_BTcpPSH ) 
		pItem->m_TcpFlag |=(1<<3); 
	if(m_SetupTcpUdpDlg.m_BTcpACK ) 
		pItem->m_TcpFlag |=(1<<4); 
	if(m_SetupTcpUdpDlg.m_BTcpURG ) 
		pItem->m_TcpFlag |=(1<<5); 
	InitializeCriticalSection(&(pItem->m_CriticalSetion )); 
	pItem->m_State =false; 
	pItem->m_SendErrors =0; 
	pItem->next =NULL; 
	i=1; 
	while(tmp) 
	{ 
		if((UINT)i==tmp->m_TaskID ) 
		{	i++; 
			tmp=pMainDlg->pTaskList; 
			continue; 
		}else 
			tmp=tmp->next ; 
	} 
	pItem->m_TaskID =i; 
 
	if(!(pMainDlg->pTaskList)) 
		pMainDlg->pTaskList=pItem; 
	else 
	{ 
		tmp=pMainDlg->pTaskList; 
		while(tmp->next ) 
			tmp=tmp->next ; 
		tmp->next =pItem; 
	} 
 
	LVITEM li; 
	li.iSubItem=0;						 
	li.mask=LVIF_TEXT; 
	li.iItem=1000; 
	sprintf(sz,"%d",pItem->m_TaskID); 
	li.pszText=sz; 
	int iItem=ListView_InsertItem(pMainDlg->m_TaskList.m_hWnd  ,&li); 
	in_addr ia;ia.S_un .S_addr =pItem->m_DestIP; 
	if(pItem->m_RandomDestIp || pItem->m_IncDestIP) 
		sprintf(sz,"%s",pItem->m_RandomDestIp ?"随机IP":"递增IP"  ); 
	else  
		sprintf(sz,"%s",inet_ntoa(ia)  ); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,1,sz); 
	sprintf(sz,"%d",pItem->m_IpProtocol ); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,2,sz); 
	sprintf(sz,"%d",pItem->m_PPS  ); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,3,sz); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,4,"任务停止"); 
	if(pItem->m_Number==0) 
		sprintf(sz,"%s","-"); 
	else 
		sprintf(sz,"%d",pItem->m_Number   ); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,5,sz); 
	if(pItem->m_RandomSrcIp || pItem->m_IncSrcIP) 
		sprintf(sz,"%s",pItem->m_RandomSrcIp ?"随机IP":"递增IP"  ); 
	else if(pItem->m_SpecialSrcIp) 
	{	ia.S_un .S_addr =pItem->m_SrcIP; 
		sprintf(sz,"%s",inet_ntoa(ia) ); 
	}else 
		sprintf(sz,"%s","本机IP" ); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,7,sz); 
	if(pItem->m_RandomDestIp) 
	{ 
		sprintf(sz,"%s","随机IP"); 
		ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,1,sz);	 
	} 
	sprintf(sz,"%d",pItem->m_SendErrors    ); 
	ListView_SetItemText(pMainDlg->m_TaskList.m_hWnd,iItem,8,sz); 
	ShowWindow(SW_HIDE); 
} 
 
void CSetupDlg::OnCancel()  
{ 
	// TODO: Add extra cleanup here 
	CIPFloodDlg *pMainDlg=(CIPFloodDlg *)GetParent (); 
	pMainDlg->SetupDlgShow=FALSE; 
	ShowWindow(SW_HIDE); 
} 
 
void CSetupDlg::GetMac(CString MACStr,char Buff[7]) 
{ 
	char tmp[32]; 
	memset(tmp,0,32); 
	memset(Buff,0,7); 
	MACStr.MakeUpper (); 
	sprintf(tmp,"%s",MACStr); 
	sscanf(tmp,"%x:%x:%x:%x:%x:%x",&Buff[0],&Buff[1],&Buff[2],&Buff[3],&Buff[4],&Buff[5]); 
	 
}