扫描器实现.DOCVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
扫描器实现.DOC

扫描器实现 一 程序环境 1.操作系统: WindowsXP + SP2 / Windows 2003 2.开发语言: C# 3.开发工具:visual studio .net 2005 4.运行支持:release文件是一个用C#做的Form程序,如图.运行要.netframework2.0支持. 5.注: 因为xp+sp2中微软禁止了用rawsocket发送tcp包,所以TCP SYN/FIN扫描是在windows 2003下调试. 6.功能:实现各个扫描功能。可以多线程扫描提高扫描速度,用户可以对IP段下的所有端口和指定一些端口扫描(即可纵向扫描,横向扫描,也可纵向横向都扫描),对TCP和UDP的扫描长时间没回应进行了处理,做了图形界面,DataGrid可以排序,对用户输入做了很多安全限制和判断。 图1.1 程序演示图 二 相关知识介绍 1.ARP协议 因为既有网络层地址(例如,因特网IP地址),又有链路层地址(即局域网地址),因此有必要在两者之间进行转化。对于因特网,这就是地址解析协议(Address Resolution Protocol,ARP)。每个因特网主机和局域网上的路由器都有一个ARP模块。 因此,一台主机发送一个ARP查询包查询另一个局域网内的主机的MAC地址,若该主机存活的话,就会返回它的MAC地址,若不存活,就不会返回。所以就给局域网内的所以机器发送ARP查询包,根据返回的ARP包确定哪些局域网的机器是存活的。 2.ICMP扫描 ICMP因特网控制消息协议,主机、路由器和网关使用它来进行网络层信息的交互。ICMP信息有一个类型字段和一个代码字段。众所周知的ping程序给指定的主机发送ICMP类型8编码0的信息。目的主机,看到回应请求后,返回一个类型0编码0的ICMP回应应答,表示该主机存活。 3.TCP扫描 IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端。为了获得TCP服务,必须在发送机的一个端口上 和接收机的一个端口上建立连接。TCP连接用两个连接端来区别,也就是(连接端1,连接端2)。连接端互相发送数 据包。 一个TCP数据包包括一个TCP头,后面是选项和数据。一个TCP头包含6个标志位。它们的意义分别为: SYN: 标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而 ACK=1则表示接受连接。 FIN: 表示发送端已经没有数据要求传输了,希望释放连接。 RST: 用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主 机上的任何一个连接,则向远端发送一个复位包。 URG: 为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。 ACK: 为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号无效。 PSH: 如果置位,接收端应尽快把数据传送给应用层。 TCP连接的建立 TCP是一个面向连接的可靠传输协议。面向连接表示两个应用端在利用TCP传送数据前必须先建立TCP连接。 TCP的可靠性通过校验和,定时器,数据序号和应答来提供。通过给每个发送的字节分配一个序号,接收端接收到数据后发送应答,TCP协议保证了数据的可靠传输。数据序号用来保证数据的顺序,剔除重复的数据。在一个TCP会话中,有两个数据流(每个连接端从另外一端接收数据,同时向对方发送数据),因此在建立连接时,必须要为每一个数据流分配ISN(初始序号)。为了了解实现过程,我们假设客户端C希望跟服务器端S建立连接,然后分析连接建立的过程(通常称作三阶段握手)。 一些实现细节 大部分TCP/IP实现遵循以下原则: 1:当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包。 2:当一个RST数据包到达一个监听端口,RST被丢弃。 3:当一个RST数据包到达一个关闭的端口,RST被丢弃。 4:当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包。 5:当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃。 6:当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN|ACK数据包。 7:当一个FIN数据包到达一个监听端口时,数据包被丢弃。FIN行为(关闭得端口返回RST,监听端口丢弃包),在 URG和PSH标志位置位时同样要发生。所有的URG,PSH和FIN,或者没有任何标记的TCP数据包都会引起FIN行为。 4. 全TCP连接和SYN扫描器 1) 全TCP连接 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目的机指定端口建立建

文档评论(0)

xiaoxigua + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档