目录
摘 要 I
Abstract II
1 绪 论 5
1.1 研究的背景及意义 5
1.2 系统目标 6
2 网络扫描技术概述 8
2.1 安全漏洞研究 8
2.2 网络扫描技术 14
3 总体设计 17
3.1 运行环境 17
3.2 模块结构 17
4 界面设计 26
4.1界面关系图或工作流图 26
4.2界面设计成果 28
4.2.1主界面 28
4.2.2子界面 28
5详细设计 34
5.1系统主要功能模块介绍 34
5.2主机扫描模块设计 34
5.3端口扫描模块设计 36
5.4NetBIOS 扫描模块设计 37
5.5 SNMP 扫描模块设计 39
5.6弱密码扫描模块设计 40
5.7嗅探器扫描模块设计 40
5.8DOS 攻击模块设计 41
5.9注入检测模块设计 42
5.10报告生成模块设计 44
6测试 45
6.1测试方案设计 45
6.1.1主机扫描功能模块测试 45
6.1.2端口扫描功能模块测试 46
6.1.3NetBIOS 扫描功能模块测试 46
6.1.4SNMP 扫描功能模块测试 46
6.1.5弱密码扫描功能模块测试 47
6.1.6嗅探器扫描功能模块测试 48
6.1.7DOS 攻击功能模块测试 48
6.1.8注入检测功能模块测试 49
6.1.9报告生成功能模块测试 51
6.2 测试结果 51
7总结与展望 52
7.1设计工作总结 52
7.2未来工作展望 52
谢 辞 53
1.1.3研究的意义
就目前主流的网络扫描器,大多数采用的是命令行界面,用户使用的门槛相对较高,可视化的图形界面旨在提供给用户一个友好的使用环境,这种用户-界面的体系结构深受广大喜爱。它不需要用户去熟记过多的参数,只需要填入相应的关键信息,通过鼠标点击选择即可完成,大大降低了操作使用的难度。
1.2系统目标
本设计的最终目标是打造一个具有多种扫描功能的网络扫描器。该扫描器具有以下功能:
(1)可视化的图形界面,旨在为用户提供友好的使用环境。
(2)实现一些基本的扫描任务,如读取到目的主机的软硬件信息,开放的端口等等。
(3)帮助用户去自动生成符合用户心理的扫描结果报告,并将扫描结果以文件的形式展现出了。
众所周知,CTabCtrl 是MFC 的选项卡控件,目的是为了集成多个功能模块, 每个功能模块都有单独的子界面,而在不同的子界面下可以插入多个控件进行操作。
管理员的目标是设计一个网络扫描器,而管理员需要设计出九个功能模块去帮助管理员完成辅助扫描的需要。本文转载自http://www.biyezuopin.vip/onews.asp?id=14728而介于 GUI 界面的需要,管理员可以利用 MFC 的选项卡控件去完成这一操作,管理员需要在主对话框中使用插入条目
InsertItem 函数去创建这些选项卡控件,使管理员能够更加方便的切换各个功能模块,然后就可以对每一个功能模块进行编辑,而对不同的功能选项卡管理员要进行操作的监听,一旦有相关事件的发生,管理员能够及时作出反馈并给出正确的操作,从而大大降低了用户的使用难度,方便用户进行可视化的合理的扫描操作。

// AllScan.cpp : implementation file
//#include "stdafx.h"
#include "Scanner.h"
#include "AllScan.h"
#include "ScannerDlg.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// CAllScan dialog
extern CScannerDlg *pDlg;
extern CHostScan *pDlgHostScan;
extern CPortScan *pDlgPortScan;
extern CWeakKeyScan *pDlgWeakKeyScan;
extern CNetBIOSScan *pDlgNetBIOSScan;
extern CSNMPScan *pDlgSNMPScan;CAllScan::CAllScan(CWnd* pParent /*=NULL*/): CDialog(CAllScan::IDD, pParent)
{//{{AFX_DATA_INIT(CAllScan)m_iRadioReportType = -1;m_bCheckDDOSScan = FALSE;m_bCheckHostScan = FALSE;m_bCheckNetBIOSScan = FALSE;m_bCheckPortScan = FALSE;m_bCheckSnifferScan = FALSE;m_bCheckSNMPScan = FALSE;m_bCheckWeakKeyScan = FALSE;m_bCheckSQLScan = FALSE;//}}AFX_DATA_INIT
}void CAllScan::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAllScan)DDX_Control(pDX, IDC_IPADDRESSTarget, m_ctlTargetIP);DDX_Radio(pDX, IDC_RADIOHtml, m_iRadioReportType);DDX_Check(pDX, IDC_CHECKDDOSScan, m_bCheckDDOSScan);DDX_Check(pDX, IDC_CHECKHostScan, m_bCheckHostScan);DDX_Check(pDX, IDC_CHECKNetBIOSScan, m_bCheckNetBIOSScan);DDX_Check(pDX, IDC_CHECKPortScan, m_bCheckPortScan);DDX_Check(pDX, IDC_CHECKSnifferScan, m_bCheckSnifferScan);DDX_Check(pDX, IDC_CHECKSNMPScan, m_bCheckSNMPScan);DDX_Check(pDX, IDC_CHECKWeakKeyScan, m_bCheckWeakKeyScan);DDX_Check(pDX, IDC_CHECKSQLScan, m_bCheckSQLScan);//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CAllScan, CDialog)//{{AFX_MSG_MAP(CAllScan)ON_BN_CLICKED(IDC_BUTTONStart, OnBUTTONStart)ON_BN_CLICKED(IDC_RADIOHtml, OnRADIOHtml)ON_BN_CLICKED(IDC_RADIOTxt, OnRADIOTxt)ON_BN_CLICKED(IDC_RADIOXml, OnRADIOXml)//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CAllScan message handlersvoid CAllScan::OnBUTTONStart()
{// TODO: Add your control notification handler code here/*CFile rebortFile("rebort.html",CFile::modeCreate|CFile::modeWrite);CString strRebort;strRebort="";strRebort+="<!DOCTYPE html>\n<html>\n<body>\n";strRebort+="helloWord!";strRebort+="</body>\n</html>";rebortFile.Write(strRebort,strlen(strRebort));rebortFile.Close();*///GetParent()->//PostMessage(WM_COMMAND,MAKEWPARAM(IDC_BUTTONStartScan,BN_CLICKED),NULL);//AfxGetMainWnd()->m_strTest="gg";//(((int)pDlg->m_TabMain)).SetCurSel(2);//pDlg->m_TabMain.SetCurSel(4);/*((CScannerDlg *)pDlg)->m_TabMain.SetCurSel(2);NMHDR nmhdr;nmhdr.code=TCN_SELCHANGE;nmhdr.hwndFrom=((CScannerDlg *)pDlg)->m_TabMain.GetSafeHwnd();nmhdr.idFrom=IDC_TABMAIN;//this->PostMessage(WM_COMMAND,MAKEWPARAM(IDC_TABMAIN,TCN_SELCHANGE),NULL);::SendMessage(((CScannerDlg *)pDlg)->m_TabMain.GetSafeHwnd(),WM_NOTIFY,MAKELONG(TCN_SELCHANGE,0),(LPARAM)(&nmhdr));*///pDlgHostScan->SendMessage(WM_COMMAND,IDC_BUTTONStartScan,0);UpdateData(true);int i,iListItemCount=0,number=1;UCHAR a,b,c,d;HTREEITEM root,child,childTemp;CString strIP,strTemp;m_ctlTargetIP.GetAddress(a,b,c,d);strIP.Format("%d.%d.%d.%d",a,b,c,d);strReportContent="<!DPCTYPE html>\n<html>\n<head>\n";strReportContent+="<script type=\"text/javascript\">\n";strReportContent+="function initNodes(){\n";strReportContent+="var uls = document.getElementsByTagName(\"ul\");\n";strReportContent+="var i;\n";strReportContent+="for(i = 0; i < uls.length; i++);\n";strReportContent+="if(uls[i].id != \"root\");\n";strReportContent+="uls[i].style.display = \"none\";\n";strReportContent+="}\n";strReportContent+="function clickNode(id){\n";strReportContent+="var node = document.getElementById(id);\n";strReportContent+="if(node.style.display == \"none\")\n";strReportContent+="node.style.display = \"block\";\n";strReportContent+="else\n";strReportContent+="node.style.display = \"none\";\n";strReportContent+="return false;\n";strReportContent+="}</script></head>\n";strReportContent+="<body>\n";if(m_bCheckHostScan){pDlgHostScan->m_ctlBeginIP.SetWindowText(strIP);pDlgHostScan->m_ctlEndIP.SetWindowText(strIP);UpdateData(false);//pDlgHostScan->SendMessage(WM_COMMAND,IDC_BUTTONStartScan,0);Sleep(3000);UpdateData(true);//int iCount=pDlgHostScan->m_ctlListResult.GetItemCount();//strReportContent+="<h1>"+number;strTemp.Format("<h2>%d",number);strReportContent+=strTemp;strReportContent+=".主机扫描</h2>\n";number++;strReportContent+="<table border='1'cellspacing=\"0\" cellpadding=\"10\">\n";strReportContent+="<tr><th width=100px>IP</th><th width=100px>状态</th><th width=100px>操作系统</th></tr>\n";strReportContent+="<tr><td align=center>"+pDlgHostScan->m_ctlListResult.GetItemText(0,1)+"</td>";strReportContent+="<td align=center>"+pDlgHostScan->m_ctlListResult.GetItemText(0,2)+"</td>";strReportContent+="<td align=center>"+pDlgHostScan->m_ctlListResult.GetItemText(0,3)+"</td></tr>\n";strReportContent+="</table>";strTemp=pDlgHostScan->m_ctlListResult.GetItemText(0,3);//MessageBox(strTemp);}if(m_bCheckPortScan){strReportContent+="\n<br/>\n";pDlgPortScan->m_ctlBeginIP.SetWindowText(strIP);pDlgPortScan->m_ctlEndIP.SetWindowText(strIP);pDlgPortScan->m_uBeginPort=0;pDlgPortScan->m_uEndPort=1024;UpdateData(false);//pDlgPortScan->SendMessage(WM_COMMAND,IDC_BUTTONStart,0);strTemp.Format("<h2>%d",number);strReportContent+=strTemp;strReportContent+=".端口扫描</h2>\n";number++;root=pDlgPortScan->m_ctlTreeResult.GetRootItem();strTemp=pDlgPortScan->m_ctlTreeResult.GetItemText(root);strReportContent+="<ul id=\"root\">\n";strReportContent+="<li>"+strTemp+"\n";child=pDlgPortScan->m_ctlTreeResult.GetChildItem(root);if(child==NULL){strReportContent+="<p>无开放端口</p>";}else{strTemp=pDlgPortScan->m_ctlTreeResult.GetItemText(child);//strReportContent+="<ul id=\"r1n1\">";strReportContent+="<ul id=\"r1n1\">\n<li>"+strTemp+"</li>\n";while((child=pDlgPortScan->m_ctlTreeResult.GetNextSiblingItem(child))!=NULL)strReportContent+="<li>"+pDlgPortScan->m_ctlTreeResult.GetItemText(child)+"</li>";strReportContent+="\n</ul></li>";}strReportContent+="\n</ul>";}if(m_bCheckWeakKeyScan){strReportContent+="<br/>\n";pDlgWeakKeyScan->m_ctlIP.SetWindowText(strIP);UpdateData(false);pDlgWeakKeyScan->SendMessage(WM_COMMAND,IDC_BUTTONStart,0);strTemp.Format("<h2>%d",number);strReportContent+=strTemp;strReportContent+=".弱密码扫描</h2>\n";number++;strReportContent+="<span>用户名:</span><span>"+pDlgWeakKeyScan->m_strUsername+"</span><br/>";strReportContent+="<span>密码:</span><span>"+pDlgWeakKeyScan->m_strResult+"</span><br/>";}if(m_bCheckNetBIOSScan){strReportContent+="\n<br/>\n";pDlgNetBIOSScan->m_ctlIP.SetWindowText(strIP);UpdateData(false);pDlgNetBIOSScan->SendMessage(WM_COMMAND,0);strTemp.Format("<h2>%d",number);strReportContent+=strTemp;strReportContent+=".NetBIOS扫描</h2>\n";number++;root=pDlgNetBIOSScan->m_ctlTreeResult.GetRootItem();strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(root);strReportContent+="<ul id=\"root\">\n";strReportContent+="<li>"+strTemp+"\n";child=pDlgNetBIOSScan->m_ctlTreeResult.GetChildItem(root);strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(child);strReportContent=="<ul id=\"NetBIOSSub\"><li>"+strTemp+"</li>\n<ul>";child=pDlgNetBIOSScan->m_ctlTreeResult.GetNextSiblingItem(child);strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(child);strReportContent+="<li>"+strTemp+"</li>\n";//MACchildTemp=child=pDlgNetBIOSScan->m_ctlTreeResult.GetNextSiblingItem(child);strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(child);strReportContent+="<li>"+strTemp+"</li>\n";//时间CString strName[7]={"NetBIOSScanSubShareSub","NetBIOSScanSubGroupSup","NetBIOSScanSubOSSup","NetBIOSScanSubServiceSub","NetBIOSScanSubUserSub","NetBIOSScanSubSessionSub","NetBIOSScanSubConnectSub"};i=0;while((childTemp=child=pDlgNetBIOSScan->m_ctlTreeResult.GetNextSiblingItem(childTemp))!=NULL){strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(child);strReportContent+="<li><span οnclick=\"return clickNode('"+strName[i]+"')\">"+strTemp+"</span>\n";//共享文件夹child=pDlgNetBIOSScan->m_ctlTreeResult.GetChildItem(child);strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(child);strReportContent+="<ul id=\""+strName[i]+"\"><li>"+strTemp+"</li>";i++;while((child=pDlgNetBIOSScan->m_ctlTreeResult.GetChildItem(child))!=NULL){strTemp=pDlgNetBIOSScan->m_ctlTreeResult.GetItemText(child);strReportContent+="<li>"+strTemp+"</li>\n";}strReportContent+="</ul></li>\n";}strReportContent+="</ul></ul>";}if(m_bCheckSNMPScan){strReportContent+="\n\n";}strReportContent+="</body>\n</html>";CFile rebortFile("rebort.html",CFile::modeCreate|CFile::modeWrite);rebortFile.Write(strReportContent,strlen(strReportContent));rebortFile.Close();
}BOOL CAllScan::OnInitDialog()
{CDialog::OnInitDialog();// TODO: Add extra initialization here//GetParent()->GetParent()->m_iRadioReportType=0;UpdateData(false);return TRUE;  // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE
}void CAllScan::OnRADIOHtml()
{// TODO: Add your control notification handler code herem_iRadioReportType=0;
}void CAllScan::OnRADIOTxt()
{// TODO: Add your control notification handler code herem_iRadioReportType=1;
}void CAllScan::OnRADIOXml()
{// TODO: Add your control notification handler code herem_iRadioReportType=2;
}


















基于C++MFC的网络安全扫描器的设计与实现相关推荐

  1. hadoop下计算机网络安全设计与实现,基于PKI技术的网络安全平台设计研究

    科技信息 0 IT技术论坛0 SCIENCE&TECHNOLOGY INFORMATION 2008年 第4期 基于 PKI技术的网络安全平台设计研究 马 (陕西交通职业技术学院 骞 陕西 西 ...

  2. 基于python的分布式扫描器_基于python的服务器监测系统的设计

    基于 python 的服务器监测系统的设计 高正 ; 徐浩 ; 余曼 [期刊名称] <电脑知识与技术> [年 ( 卷 ), 期] 2017(013)002 [摘要] 本文介绍了一种基于 P ...

  3. python网络安全毕业设计_基于Python的网络爬虫系统的设计与实现

    2018 年第 12 期 信息与电脑 China Computer&Communication 软件开发与应用 基于 Python 的网络爬虫系统的设计与实现 刘 杰 葛晓玢 闻顺杰 (铜陵职 ...

  4. opencv对图像是软解码_基于opencv和c++的图像处理软件设计与实现(26页)-原创力文档...

    毕业设计中文摘要 基于opencv和c++的图像处理软件设计与实现 摘要: 本文主要对基于opencv和c++的图像处理软件设计与实现进行介绍.本软件由主界面和若干二级菜单组成,主界面功能有文件操作. ...

  5. 【论文阅读】基于混淆的加强网络安全的方法

    基于混淆的加强网络安全的方法 一.摘要: 二.相关工作 1 相关检测工作: (1)排名算法: (2)用户行为分析: (3)网页质量: (4)机器学习: 2 相关集成工作: (1)非加权投票: (2)最 ...

  6. ssm基于Html+css的音乐网站的设计与实现毕业设计源码181627

    ssm音乐网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采SSM技 ...

  7. 基于OpenCv的照片美化工具的设计与实现

    随着我们对美好事物的向往,追求更美的自己,尤其是在手机拍照时,更能体现,现在不同的手机拍出的效果截然不同,像华为手机拍照拍出的就特别的清晰,opp手机拍出的效果就非常的柔和,像小米手机拍出的效果就非常 ...

  8. (附源码)ssm基于Html+css的音乐网站的设计与实现 毕业设计181627

    ssm音乐网站 摘要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采SSM技术 ...

  9. 设计产品超市智能计算机,基于物联网技术的智能超市的设计.doc

    基于物联网技术的智能超市的设计.doc 基于物联网技术的智能超市的设计 摘 要:随着经济的发展,物联网技术在日常生活中的应用愈加广泛.使用物联网技术创建智能超市,能够充分利用消费者群体的购物消费习惯和 ...

最新文章

  1. JQuery方法总结
  2. 回归Dos操作的快感,进入PowerShell世界
  3. 大规模分布式存储系统(文摘)
  4. 【Latex】怎么写中文?
  5. 问题 B: 小鱼的搭配购物(并查集+01背包)
  6. 前端学习(489):文本格式化
  7. php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结
  8. deepsooncms在Ubuntu 14.04上部署教程
  9. 开源 协作工具_6所高等学校教授开源,协作峰会的言论以及更多新闻
  10. 利用python对图像进行傅里叶变换_Python 实现图像快速傅里叶变换和离散余弦变换...
  11. 使用 esxtop 识别存储性能问题
  12. SSD测试专题(二)
  13. C语言实现二路归并排序
  14. [转]冰山一角 管窥中国互联网的地下世界
  15. 龙兵智能名片小程序安装配置教程
  16. Chrome安装HttpWatch
  17. 计算机视觉与机器学习之6σ问题
  18. kali-top10-Nmap
  19. 数据结构(C语言版)——顺序栈(代码版)
  20. 中国程序化购买广告解析:RTB/DSP/Ad Exchange/SSP/DMP,思维导图

热门文章

  1. G2O (General Graph Optimization)入门及简单使用
  2. 【IoT】 产品设计之互联网思维:羊毛出在狗身上,猪来买单
  3. 氮化镓充电器哪家做得好_这颗国产器看似简单:每个氮化镓充电器都少不了
  4. 三星中国论坛定义科技美学,显示器视觉革新颠覆想象
  5. feign调用第三方接口服务
  6. bootstrap table使用服务端分页
  7. 树莓派简单配置samba,共享文件
  8. php模板生成器,phpcms 模板标签生成器下载
  9. 【java】dispose()方法与setVisible()方法
  10. 三分钟了解Activity工作流引擎