主机存活性探测系统设计报告汇总.doc

上传人:牧羊曲112 文档编号:3987228 上传时间:2023-03-30 格式:DOC 页数:12 大小:311KB
返回 下载 相关 举报
主机存活性探测系统设计报告汇总.doc_第1页
第1页 / 共12页
主机存活性探测系统设计报告汇总.doc_第2页
第2页 / 共12页
主机存活性探测系统设计报告汇总.doc_第3页
第3页 / 共12页
主机存活性探测系统设计报告汇总.doc_第4页
第4页 / 共12页
主机存活性探测系统设计报告汇总.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《主机存活性探测系统设计报告汇总.doc》由会员分享,可在线阅读,更多相关《主机存活性探测系统设计报告汇总.doc(12页珍藏版)》请在三一办公上搜索。

1、网络主机的存活性探测系统设计与实现一、概要11.1 课设目的11.2 设计要求21.3 设计题目2二、需求分析3三、系统分析与设计43.1 基本思想43.2 系统总体设计43.3 系统详细设计5四、系统实现54.1 实现环境54.2 实现结果64.3 测试实验结果对比分析7五、心得体会7六、参考文献7七、附录8一、概要1.1 课设目的TCP/IP 原理与应用是一门实践性较强的网络基础课程,为了学好这门课程,必须在掌握相关基本协议的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据熟悉TCP/IP的相关基本协议,学会基本的C-S编程方法,能够用网络编程解决实际的

2、网络通信问题,并培养良好的程序设计技能。1.2 设计要求1、通过这次设计,要求了解TCP/IP的基本协议的工作原理和基本的网络编程知识,利用单(多)线程技术、API函数等编写服务和客户端应用程序,利用MFC提供的类编写较为复杂网络应用程序。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。2、学生必须仔细研读TCP/IP 原理与应用课程设计(实习)要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。3、本次课程设计按照教学要求需要在两周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,

3、并在课程设计过程中不断检测自己的计划完成情况,及时地向指导教师汇报。4、每个题目最多四个人。5、编程语言自定。1.3 设计题目网络主机的存活性探测系统设计与实现1)任务(ping,arp test)设计并实现能够探测局域网、广域网内主机存活情况的应用系统。2)要求n 要能够实现单IP(或域名)和IP段(连续或不连续)的网络主机存活性探测。n 探测结果只显示存活主机情况,要有一定的图形显示。n 局域网内的主机存活性探测速度要快。n 最好具备一定穿越防火墙的能力(特别是探测局域网内主机的存活性时)n 除发送ICMP数据包实现网络主机存活性探测外,建议使用SYN Ping、ACK Ping、Fin

4、Ping、Null Ping方式实现,参考设计流程如下:二、需求分析在网络安全形势日益严峻的情况下,针对网络入侵手段日益复杂、操作系统漏洞不断涌现等问题,预先评估网络信息系统的安全问题已成为网络管理员的重要需求。基于网络的安全扫描主要扫描设定网络内的服务器、路由器、网桥、交换机、访问服务器、防火墙等设备的安全漏洞,并可设定模拟攻击,以测试系统的防御能力,这种技术可模拟入侵者的攻击行为,从系统外部进行扫描,以探测是否存在可被入侵者利用的系统安全薄弱之处。主机存活性探测的核心功能是防火墙穿越,即在对方已安装防火墙的情况下探测主机的存活性。传统探测远程主机存活性的方法是通过ICMP协议中的回显应答报

5、文来实现。基于ICMP协议的主机存活性探测技术主要利用了ICMP回应请求和回显应答报文来实现。但是随着对安全越来越多了解和重视,很多主机为了避免被扫描器探测,通过防火墙将ICMP包屏蔽,从而达到在网络中隐藏的目的。因此采用基于ICMP协议无法准确探测远程主机的存活性。依据目标主机受到ARP请求后一定返回自身物理地址的工作原理,设计并实现了一种新的主机存活性探测系统。测试结果表明该系统能穿越防火墙探测主机的存活性,局域网内探测结果的准确率100%,为网络安全扫描工具的设计提供了一种新方法。三、系统分析与设计3.1 基本思想ARP协议是“Address Resolution Protocol”(地

6、址解析协议)的缩写,主要完成那个IP地址到MAC地址的动态映射,以实现信息送往目的主机。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址(硬件地址),任何时候当主机或者路由器需要找出另一个主机或者路由器在此网络上的物理地址时,就发送一个ARP查询分组。因为发送站不知道接收站的物理地址,查询就在网络上广播,每一个在网络上的主机或者路由器都接受和处理这个ARP查询分组,但只有意图中的接受者才是别其IP地址,并发回ARP响应分组。这个分组直接用单播发送给查询者,并使用接收到的查询分组中所用的物理地址。据此,向局域网内的目标主机发送ARP请求时,无论对方是否安装防火墙,对

7、方都会返回MAC地址。所以,局域网内通过ARP协议探测主机存活的准确率理论值是100%。3.2 系统总体设计基于ARP协议的主机存活性探测系统主要包括域名解析和IP地址的转换、ARP请求发送与处理两大模块,各模块的功能简述如下:域名解析及IP地址转换:调用inet_addr将输入的点分十进制数表示的IP地址转换为网络字节顺序的IP地址;获取主机名:调用gethostbyaddr获取存活主机的主机名;ARP请求发送与处理:调用sendARP函数向目标地址发送ARP请求;获取MAC地址,判断ARP返回的MAC地址转换成易读的形式,并将存活主机IP写入文档。3.3 系统详细设计依据上述原理分析,设计

8、的基于ARP协议的主机存活性探测流程图如下所示:四、系统实现4.1 实现环境采用VC+6.0实现基于ARP的主机存活性探测系统,系统主要包括动态链接库ArdDLL的主程序。主要代码如下: DLL部分主要包挎DLL输出函数Arp ARPDLL_API DWORD ARP(char *ip,BYTE *mac);该函数的主要功能是通过向目标主机发送ARP请求返回目标主机MAC地址达到探测主机存活性的目的。SendARP()函数原型如下:DWORD SendArp(IPAddr DestIP,/目标地址IPAddr SrcIP,/源IP地址PULONG pMacAddr,/返回MAC地址指针PULO

9、NG PhyAddrLen /返回MAC地址长度);主程序是一个基于对话框的VC+工程。在对话框中通过两个IP地址控件输入起始探测地址和中指探测地址,在对网段中的每个IP地址调用DLL中得函数获得MAC:BYTE MAC6;LPTSTR pIP=strip.GetBuffer(16);HRESULT hr=Arp(pIP,Mac);调用gethostbyaddr()函数获取主机名:Hostent* remoteHostent=(hostent*)malloc(sizeof(hosten);remoteHostent=gethostbyaddr(char *)&ipAddr,sizeof(in_

10、addr),AF_INET);if(remoteHosten)hn=remoteHosten-h_name;4.2 实现结果基于ARP协议的主机存活性探测系统实现后的主界面如下:4.3 测试实验结果对比分析传统的主机存活性探测方法是Ping命令,而如果用ping命令测试目标主机结果如下:从图可以看出ping 命令无法探测目标主机125.219.181.178 和125.219.181.179的存活性。因为ping命令被目标主机的防火墙阻挡了。由此可见,传统的通过发送和监控ICMP Ping数据包探测目标主机的存活性时误报率极高。五、心得体会本次课程设计任务是做网络主机的存活性探测。做课程设计过

11、程中遇到很多问题,通过老师的指导和上网查阅资料慢慢的得到了解决。六、参考文献1 中原工学院院报2 CSDN论坛七、附录Ex_Arp1Dlg.cpp中主要代码:=void CEx_Arp1Dlg:ScanHost(CString strIP)/调用DLL中的函数获得MACBYTE Mac6;LPTSTR pIP = strIP.GetBuffer(16);HRESULT hr = Arp(pIP,Mac);if(hr = 0)CString str;CString strMac();int i;for(i=0;i网络字节 WSADATA wsadata;if(WSAStartup(winsock

12、_version,&wsadata)str.Format(cant initialize socket);ZeroMemory(buf,256); /将指定的内存块清零. hostent * remoteHostent = (hostent*)malloc( sizeof( hostent );remoteHostent = gethostbyaddr( (char*)&ipAddr,sizeof( in_addr ), AF_INET ); /返回对应于给定地址的主机信息if ( remoteHostent )hn = remoteHostent-h_name;/获取列表中当前的的数据个数i

13、nt nNo = m_ctrlListData.GetItemCount();/将数据添加进列表str.Format(%d,nNo+1);m_ctrlListData.InsertItem(nNo, str);m_ctrlListData.SetItemText(nNo, 1, strIP);m_ctrlListData.SetItemText(nNo, 2, strMac);m_ctrlListData.SetItemText(nNo, 3, hn);strIP.ReleaseBuffer();void CEx_Arp1Dlg:OnButton1() / TODO: Add your con

14、trol notification handler code here CString strStartIP,strEndIP;m_StartIP.GetWindowText(strStartIP);m_EndIP.GetWindowText(strEndIP);struct in_addr targetaddr; unsigned long ips=inet_addr(strStartIP); /计算起始IP地址的网络字节 unsigned long ipe=inet_addr(strEndIP); /计算结束IP地址的网络字节 ips=ntohl(ips); /计算起始IP地址的主机字节

15、ipe=ntohl(ipe); /计算结束IP地址的主机字节 for(int k=ips;k=ipe;k+) targetaddr.S_un.S_addr=htonl(k); /探测指定主机是否存活 ScanHost(inet_ntoa(targetaddr); /inet_ntoa()返回点分十进制的字符串Sleep(10); /执行挂起一段时间 ArpDll.cpp的主要代码:=/ ArpDll.cpp : Defines the entry point for the DLL application.#include StdAfx.h#include ArpDll.h#include #

16、include #include #include iphlpapi.h#include #pragma comment(lib,Iphlpapi.lib)#pragma comment(lib,Ws2_32.lib)BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) switch (ul_reason_for_call)case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_

17、PROCESS_DETACH:break; return TRUE;/ This is an example of an exported function.ARPDLL_API DWORD arp(char *ip, BYTE *mac) char c = n; HRESULT hr; IPAddr ipAddr; ULONG pulMac2; ULONG ulLen;ipAddr = inet_addr (ip); memset (pulMac, 0xff, sizeof (pulMac); ulLen = 6; hr = SendARP (ipAddr, 0, pulMac, &ulLen); if (hr=NO_ERROR) FILE *stream;stream=fopen(host.txt,a); fprintf(stream,%s%c, ip, c); fclose( stream ); size_t i, j;PBYTE pbHexMac = (PBYTE) pulMac;/ Convert the binary MAC address into human-readable/for (i = 0, j = 0; i ulLen; +i) maci = pbHexMaci;return 0;elsereturn hr;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号