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