网站大量收购独家精品文档,联系QQ:2885784924

计算机网络设计与安全技术 课件8 网络主机与端口扫描程序设计.pptx

计算机网络设计与安全技术 课件8 网络主机与端口扫描程序设计.pptx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

《计算机网络设计与安全技术》

第8章网络主机与端口扫描程序设计;学习内容:

(1)ICMP报文分析;

(2)基于ICMP协议的主机扫描程序设计;

(3)网络端口扫描原理;

(4)网络端口扫描程序设计。

学习目标:

(1)学习原始套接字编程方法,能够编写主机扫描程序;

(2)深入理解ICMP协议,能够编程实现多线程端口扫描功能。;8.1?ICMP报文分析;4;表8.1??ICMP类型与代码描述;4;ping是响应请求(类型=8)和应答(类型=0)。

一台主机向一个节点发送一个类型=8的ICMP报文,如果途中没有异常(例如,被路由器丢弃、目标不回应ICMP或传输失败),则目标返回类型=0的ICMP报文,说明这台主机存在。

;通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。;ICMP协议对网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。

利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“PingofDeath”(死亡之Ping)攻击。“PingofDeath”的攻击原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机(现在的操作系统已经限制了发送ICMP数据包的大小)。

向目标主机长时间、连续、大量地发送ICMP数据包,也会使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理。;8.2?基于ICMP协议的主机扫描程序设计;11;8.2.2主机扫描程序设计;8.3?网络端口扫描原理;网络进程通信需要收发双方构成全相关。;表8.2??常见的熟知端口及其应用协议;8.3.2端口扫描技术分析;(1)TCPconnect()扫描;(2)TCPSYN扫描:半开放扫描;(3)TCPFIN扫描;(4)TCPACK扫描;(5)NULL扫描;(6)XMAS扫描;(7)SYN/ACK扫描;8.4?网络端口扫描程序设计;8.4.3具有人机界面的端口扫描程序;privatevoidNormalScan(Objectstate)

{

? Int32port=(Int32)state;

? stringtMsg=;

???? TcpClienttcp=newTcpClient();

???? try

???? {

?????? tcp.Connect(scanHost,port);

? portSum++;

??????? tMsg=port.ToString()+端口开放。;

??????? portList.Items.Add(tMsg);

??????? tcp.Close();

???? }

???? catch

????? {

???????? tcp.Close();

???? }

};8.4.4多线程端口扫描程序设计示例;//设置最大线程数

ThreadPool.SetMaxThreads(setThreadNum,setThreadNum);

for(Int32threadNum=startPort;threadNum=endPort;threadNum++)

{

ThreadPool.QueueUserWorkItem(newWaitCallback(StartScan),threadNum);

};publicvoidStartScan(Objectstate)

{

Int32port=(Int32)state;

stringtMsg=;

stringgetData=;

connState++;//判断线程数目

try

{

TcpClienttcp=newTcpClient();

tcp.Connect(scanHost,port);

portSum++;

tMsg=port.ToString()+端口开放。;

portListArray[portSum-1]=tMsg;

Streamsm=tcp.GetStream();

sm.Write(Encoding.Default.GetBytes(tMsg.ToCharArray()),0,tMsg.Length);

StreamReadersr=newStreamReader(tcp.GetStream(),Encoding.Default);

try

{

文档评论(0)

balala11 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档