网络安全设计局域网主机扫描.docx_第1页
网络安全设计局域网主机扫描.docx_第2页
网络安全设计局域网主机扫描.docx_第3页
网络安全设计局域网主机扫描.docx_第4页
网络安全设计局域网主机扫描.docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络安全程序设计 题目名称:局域网主机扫描院系名称: 计算机学院 班 级: 学 号: 学生姓名: 指导教师: 目录1、引言31.1课程设计背景31.2课程设计目的32 扫描技术简介52.1 基于UDP协议活动主机扫描53 主机扫描程序的实现71 主机扫描的设计环境72程序的设计步骤73程序流程图94程序的运行测试10实验心得11参考文献12附录131、引言1.1课程设计背景网络安全扫描技术是一类重要的网络安全技术。安全扫描技术与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。安全扫描是一种主动的防范措施,可以有效避免黑客攻击行为,做到防患于未然。网络安全扫描的首要任务是发现网络中活动的主机。对活动主机扫描就是向主机发送特定的数据报,若主机有响应消息返回则说明该主机处于活动状态,否则主机不存在或处于关机状态。当主机安装的防火墙软件进行了访问控制时(例如禁用了Ping响应或者禁用了所有的ICMP响应),这时使用常用的扫描方法就不起作用了,就需要使用其它的方法进行探测。网络扫描的基础是互联网的协议,通过对协议的分析找到适合网络扫描的协议类型和消息类型。根据互联网的协议标准构造特定类型的数据报,把这些数据报发送到目的主机,从响应消息中提取信息。整个扫描过程都是基于这种请求-应答-分析机制进行的。1.2课程设计目的本次课程设计通过对一IP地址段,使用ARP(地址解析协议),ICMP(网络控制报文协议),TCP(传输控制协议),UDP(用户数据报协议)等协议进行的活动主机进行扫描。通过这次课程设计,重在掌握以下技能:1)进一步巩固计算机网络信息和网络安全C#网络编程等课程所学的知识,巩固、深化理论知识,提高动手能力,并在此过程中培养严谨的科学态度和良好的工作作风;2)初步感受网络管理过程中的相关原理与方法,形成良好的系统设计和分析能力,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。3)掌握程序设计的流程,以及用C#语言编写程序,从而解决实际问题的能力,了解掌握VisualStudio2008开发环境。2 扫描技术简介主机扫描的目的是确定在目标网络上的主机是否可达,现行主要技术有:ICMP Echo扫描、TCP connect()扫描、UDP回馈和ARP获取适配器编号扫描,并且通过多线程,提高了扫描效率。本文主要以UDP扫描为主。2.1 基于UDP协议活动主机扫描由于现在防火墙设备的流行,tcp端口的管理状态越来越严格,不会轻易开放,并且通信监视严格。为了避免这种监视,达到评估的目的,就出现了秘密扫描。这种扫描方式的特点是利用UDP端口关闭时返回的ICMP信息,不包含标准的TCP三次握手协议的任何部分,隐蔽性好,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息。 Traceroute扫描:tracert 向30000以上的高端口(一般认为,主机的30000以上高端口利用率非常低,任何主机都不会轻易开放这种高端口,默认都是关闭的)。如果对方端口关闭,会返回给icmp信息,根据这个往返时间,计算跳数、路径信息,了解延时情况。这是tracerote原理,也是从这个原理上演变出来udp扫描技术。使用udp扫描要注意的是1、udp状态、精度比较差,因为udp是不面向连接的,所以整个精度会比较低。2、udp扫描速度比较慢,tcp扫描开放1秒的延时,在udp里可能就需要2秒,这是由于不同操作系统在实现icmp协议的时候为了避免广播风暴都会有峰值速率的限制,利用udp作为扫描的基础协议,就会对精度、延时产生较大影响。利用了开发了工具探测网内哪台主机打开了80端口,这样的技术在当前的互联网上利用的非常普遍。设计利用最普遍的端口,扫描活动主机的80端口,得到反馈信息就认为该主机处于活动状态,但是效率和误差都很大。3 主机扫描程序的实现1 主机扫描的设计环境硬件环境要求主要针对的是开发编程人员所用的计算机,硬件方面应尽可能地高端,因为这样方便在编译、调试中很快找出问题,且能在后期测试时较少时间的开销10。各硬件指标如下:(1)中央处理器(CPU):至少应在Pentium PIII及以上,频率为1GHz或更快;(2)内存:至少应在1GB(32位)及以上;(3)网络环境:各种类似于网吧环境的局域网(应具备有交换机、路由器等)。软件环境主要是在开发项目时,该程序所要用的编程工具和其它应用软件等。此管理系统由于所占内存空间较小,所以对软件要求也相对的较低。(1)计算机的操作系统:Windows 8;(2)开发所使用的软件:Microsoft Visual C+ 2010。2 程序的设计步骤首先,打开Microsoft Visual C+ 2010开发工具新建一个工程,选择基于对话框的类,并且勾选支持Windows Sockets和MFC风格的对话框。进入到主界面后根据预先的构思将所需控件摆放至合适的位置,更改各个控件的名称和属性,并修改控件的大小。通过编写合适的算法并调用开发环境中封装好的库函数,使系统显示出局域网内的主机IP,工作组,主机名,用户名,MAC地址。3程序流程图4程序的运行测试程序界面图程序运行结果图实验心得通过这次实验,加深了我对网络安全编程的理解,实验中遇到了许多函数,需要上网查看它的定义,也碰到了许多问题,通过调试后也一一解决。今后,我还需要提高自己的编程和调试能力。参考文献1 金华,华进.C#网络编程技术教程.人们邮电出版社2010.52 谢希仁.计算机网络(第五版).电子工业出版社2010.43百度文库附录/ chenzhenjunDlg.h /#if !defined(AFX_chenzhenjunDLG_H_DE6CDDC7_A43B_11D5_A956_0050BA0F0366_INCLUDED_)#define AFX_chenzhenjunDLG_H_DE6CDDC7_A43B_11D5_A956_0050BA0F0366_INCLUDED_#include UDP.h/ Added by ClassView#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ CchenzhenjunDlg dialogclass CchenzhenjunDlg : public CDialog/ Constructionpublic:void OnReceive();CUDP m_UDPSocket;CStringm_strIP;/CStringm_strIP2;CchenzhenjunDlg(CWnd* pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CchenzhenjunDlg)enum IDD = IDD_chenzhenjun_DIALOG ;CIPAddressCtrlm_IPEdit2;CListCtrlm_ListView;CIPAddressCtrlm_IPEdit1;protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnBtnSend();afx_msg void OnFieldchangedIpaddress1(NMHDR* pNMHDR, LRESULT* pResult);afx_msg void OnBtnExit();afx_msg void OnBtnAbout();DECLARE_MESSAGE_MAP()public:afx_msg void OnBnClickedok();#endif / !defined(AFX_chenzhenjunDLG_H_DE6CDDC7_A43B_11D5_A956_0050BA0F0366_INCLUDED_)/ chenzhenjunDlg.cpp : implementation file/ Download by #include stdafx.h#include chenzhenjun.h#include chenzhenjunDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif#define destPORT 137 /chenzhenjun name port#define myPORT 4321/ CchenzhenjunDlg dialog/-var-CchenzhenjunDlg* pDlg;BYTE bs50=0x0,0x00,0x0,0x10,0x0,0x1,0x0,0x0,0x0,0x0, 0x0,0x0,0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x0,0x0,0x21,0x0,0x1;unsigned char B14,B24;HANDLE wait_handle;CString strOldIP=;bool bExit=false;int i;/-CchenzhenjunDlg:CchenzhenjunDlg(CWnd* pParent /*=NULL*/): CDialog(CchenzhenjunDlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);/-pDlg=this;if(!m_UDPSocket.Create(myPORT,SOCK_DGRAM)AfxMessageBox(Failed Create Socket);/-void CchenzhenjunDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Control(pDX, IDC_IPADDRESS2, m_IPEdit2);DDX_Control(pDX, IDC_LIST3, m_ListView);DDX_Control(pDX, IDC_IPADDRESS1, m_IPEdit1);BEGIN_MESSAGE_MAP(CchenzhenjunDlg, CDialog)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BTN_SEND, OnBtnSend)ON_NOTIFY(IPN_FIELDCHANGED, IDC_IPADDRESS1, OnFieldchangedIpaddress1)ON_BN_CLICKED(IDC_BTN_EXIT, OnBtnExit)ON_BN_CLICKED(ok, &CchenzhenjunDlg:OnBnClickedok)END_MESSAGE_MAP()/ CchenzhenjunDlg message handlersBOOL CchenzhenjunDlg:OnInitDialog()CDialog:OnInitDialog();/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herem_IPEdit1.SetAddress(192,168,0,1); /设置ip地址默认范围m_IPEdit2.SetAddress(192,168,0,255);wait_handle=CreateEvent(NULL,true,false,receive data);/创建处于非触发状态的事件。类型为手动GetDlgItem(IDC_BTN_EXIT)-EnableWindow(false);/ -ListView 初始化- DWORD dwStyle=GetWindowLong(m_ListView.GetSafeHwnd(),GWL_STYLE);dwStyle&=LVS_TYPEMASK;dwStyle|=LVS_REPORT;SetWindowLong(m_ListView.GetSafeHwnd(),GWL_STYLE,dwStyle); m_ListView.InsertColumn(0,MAC地址,LVCFMT_LEFT,120);m_ListView.InsertColumn(0,用户其它,LVCFMT_LEFT,100);m_ListView.InsertColumn(0,主机名,LVCFMT_LEFT,80);m_ListView.InsertColumn(0,工作组,LVCFMT_LEFT,80);m_ListView.InsertColumn(0,IP地址,LVCFMT_LEFT,100); m_ListView.SetExtendedStyle(LVS_EX_GRIDLINES); :SendMessage(m_ListView.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);/-return TRUE; / return TRUE unless you set the focus to a controlvoid CchenzhenjunDlg:OnPaint() if (IsIconic()CPaintDC dc(this);SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();HCURSOR CchenzhenjunDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;UINT chenzhenjunThread(LPVOID param)/循环对要查询的ip发数据doif(bExit) /是否退出线程AfxMessageBox(已停止扫描!);pDlg-GetDlgItem(IDC_BTN_SEND)-EnableWindow(true);pDlg-GetDlgItem(IDC_IPADDRESS1)-EnableWindow(true);pDlg-GetDlgItem(IDC_IPADDRESS2)-EnableWindow(true);bExit=false;return 1;pDlg-m_strIP.Format(%d.%d.%d.%d,B10,B11,B12,B13);/得到ipint len;if(B13!=0&B11!=0) len = pDlg-m_UDPSocket.SendTo(void*)bs,50,destPORT,pDlg-m_strIP,0);/向指定的ip发数据报 / int nWait=pDlg-m_spin.GetPos();/设置超时int nWait = 20;if (len = 50)WaitForSingleObject(wait_handle, / 等待事件的句柄nWait / 超时);ResetEvent(wait_handle);/将事件重新置回非触发状态/=/生成下一个要查询的ipif(B12=B22) if(B13B23)B13+; else if(B12B22&B13255)B13+; else if(B12=B23&B12=B22)break;while(B12=255&B13GetDlgItem(IDC_BTN_SEND)-EnableWindow(true);pDlg-GetDlgItem(IDC_IPADDRESS1)-EnableWindow(true);pDlg-GetDlgItem(IDC_IPADDRESS2)-EnableWindow(true);return 0;/-void CchenzhenjunDlg:OnBtnSend() /从ip控件得到要查询的ip范围m_IPEdit1.GetAddress(B10,B11,B12,B13);m_IPEdit2.GetAddress(B20,B21,B22,B23);/判断ip范围是否合法if(B22B12)AfxMessageBox(终止地址应大于起始地址!);return ;else if(B22=B12&B23EnableWindow(false);GetDlgItem(IDC_IPADDRESS1)-EnableWindow(false);GetDlgItem(IDC_IPADDRESS2)-EnableWindow(false); /启动线程m_ListView.DeleteAllItems( );AfxBeginThread(chenzhenjunThread,this-GetSafeHwnd(),THREAD_PRIORITY_NORMAL);void CchenzhenjunDlg:OnReceive()BYTE Buf512;memset(Buf, 0, sizeof(Buf);CString str,strIP,strHost,strHex,strMac,Host,Group,User;UINT dport;m_UDPSocket.ReceiveFrom(Buf,512,strIP,dport,0);/接收数据 /如果接收到的ip为空或者与原来接收到的ip相同,则返回if(strIP=(char)NULL|strIP=strOldIP)return;strOldIP=strIP;int index=m_ListView.InsertItem(0,strIP);/将ip插入ListViewstrHost=; /机器名字strHex=;/MAC地址User=?;/Host=;int tem=0,num=0;bool bAdd=true;/根据数据报规则取出相应的信息for(i=57;i3)break; if(Bufi=0x20)bAdd=false;if(bAdd)str.Format(%c,Bufi);if(Bufi= )strHost+=str;str.Format(%02x.,Bufi);strHex+=str;if(+tem)%18=0) bAdd=true; strHost.TrimRight(char)NULL);if(strHost=) strMac.Delete(17,strMac.GetLength()-17);m_ListView.SetItem(index,4,LVIF_TEXT,strMac, 0, 0, 0,0); /MAC地址num+;break;if(num=0&strHost!=)m_ListView.SetItem(index,2,LVIF_TEXT,strHost, 0, 0, 0,0); /机器名Host=strHost;num+;elseif(Host!=strHost & num=1& strHost!=)m_ListView.SetItem(index,1,LVIF_TEXT,strHost, 0, 0, 0,0); /工作组名Group=strHost; num+;else if(strHost!=Host&strHost!=Group&num=2&strHost!=)User=strHost;if(User!=_MSBROWSE_)m_ListView.SetItem(index,3,LVIF_TEXT,User, 0, 0, 0,0);num+;strMac=strHex;strHost=;strHex=;/触发事件,导致线程函数的继续执行SetEvent(wait_handle);void CchenzhenjunDlg:OnFieldchangedIpaddress1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereunsigned char AddrB4;m_IPEdit1.GetAddress(AddrB0,AddrB1,AddrB2,AddrB3);m_IPEdit2.SetAddress(AddrB0,AddrB1,AddrB2,255);*pResult = 0;void CchenzhenjunDlg:OnBtnExit() / TODO: Add your control notification handler code herebExit=true;CString MakeLen(CString str,int len)if(str.GetLength()len)for(int i=str.GetLength();ilen;i+)str+= ;else str+= ;return str;void CchenzhenjunDlg:OnBnClickedok()/ TODO: 在此添加控件通知处理程序代码exit(1);/ chenzhenjun.h : main header file for the chenzhenjun application/#if !defined(AFX_chenzhenjun_H_DE6CDDC5_A43B_11D5_A956_0050BA0F0366_INCLUDED_)#define AFX_chenzhenjun_H_DE6CDDC5_A43B_11D5_A956_0050BA0F0366_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#ifndef _AFXWIN_H_#error include stdafx.h before including this file for PCH#endif#include resource.h/ main symbols/ CchenzhenjunApp:/ See chenzhenjun.cpp for the implementation of this class/class CchenzhenjunApp : public CWinApppublic:CchenzhenjunApp();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CchenzhenjunApp)public:virtual BOOL InitInstance();/AFX_VIRTUAL/ Implementation/AFX_MSG(CchenzhenjunApp)/ NOTE - the ClassWizard will add and remove member functions here./ DO NOT EDIT what you see in these blocks of generated code !/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_chenzhenjun_H_DE6CDDC5_A43B_11D5_A956_0050BA0F0366_INCLUDED_)/ chenzhenjun.cpp : Defines the class behaviors for the application./ Download by #include stdafx.h#include chenzhenjun.h#include chenzhenjunDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CchenzhenjunAppBEGIN_MESSAGE_MAP(CchenzhenjunApp, CWinApp)/AFX_MSG_MAP(CchenzhenjunApp)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CchenzhenjunApp constructionCchenzhenjunApp:CchenzhenjunApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CchenzhenjunApp objectCchenzhenjunApp theApp;/ CchenzhenjunApp initializationBOOL CchenzhenjunApp:InitInstance()if (!AfxSocketInit()AfxMessageBox(IDP_SOCKETS_INIT_FAILED);return FALSE;AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endifCchenzhenjunDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: Place code here to handle when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog is/ dismissed with Cancel/ Since the dialog has been closed, return FALSE so that we exit the/ application, rather than start the applications message pump.return FALSE;#if !defined(AFX_UDP_H_DE6CDDCF_A43B_11D5_A956_0050B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论