版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、下载可编辑理工大学网络协议编程课程设计报告端口扫描程序的设计与实现学院 计算机与通信工程学院专业网络工程班级学号学生指导教师课程成绩完成日期.专业 .整理 .下载可编辑课程设计任务书计算机与通信工程学院网络工程专业课 程网络协议编程课程时20152016 学年第 1 学期名称设计间1819 周学生指 导 老师题端口扫描程序的设计与实现目主要容:(1) 实现通过异步扫描对指定网段的主机或者单个主机对指定端口或者指定的端口围进行扫描。(2) 实现通过多线程批量扫描对指定网段的主机或者单个主机对指定端口或者指定的端口围进行扫描。(3) 设置异常处理机制,能对端口扫描出现异常时做出处理。要求:(1)
2、结合网络协议编程课程设计所学知识设计并实现端口扫描程序的设计与实现。(2) 学会文献检索的基本方法和综合运用文献的能力。(3) 通过课程设计培养严谨的科学态度,认真的工作作风和团队协作精神。应当提交的文件:(1) 课程设计学年论文。(2) 课程设计附件(相关图纸、设备配置清单、报告等)。课程设计成绩评定.专业 .整理 .下载可编辑院系计算机与通信工程专业班级学号学生指导教师指导教师对学生在课程设计中的评价优良中及不评分项目格及格学习态度与遵守纪律情况课程设计完成情况课程设计报告的质量指导教师成绩指导教师签字2016年月日课程设计答辩组对学生在课程设计中的评价优良中及不评分项目格及格课程设计完成
3、情况课程设计报告的质量课程设计答辩答辩组成绩答辩组长签字2016年 月日课程设计综合成绩注:课程设计综合成绩指导教师成绩60%答辩组成绩 40%端口扫描程序的设计与实现.专业 .整理 .下载可编辑学生:指导老师:摘 要计算机信息网络的发展加速了信息化时代的进程,随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全也日益明显。端口扫描技术是发现安全问题的重要手段之一。本程序是在 .NET 平台上使用 C#语言完成的一个端口扫描程序。此程序主要完成了多线程批量扫描和异步扫描功能。多线程批量扫描,能对单个指定的主机或者指定网段的所有主机进行特定端口或指定的端口段的端口进行逐个扫描,此端口
4、扫描程序能以较快的速度准确地扫描出主机侦听的空闲端口。相对于多线程批量扫描,异步扫描能以更快的速度准确地扫描出主机侦听的空闲端口。扫描结果以列表的形式直观显示出来。关键词端口扫描;多线程批量扫描;异步扫描Design and implementation of port scanning programStudent name:YU Wenlong Advisor:LONG JizhenAbstractComputer information network development speeds up the process of theinformation age, with the in
5、crease of the degree of social networks, the computernetwork has become increasingly dependent on, network security is increasinglyobvious.Portscanning technologyis one of the important methods tofindsecurityproblems. This procedure is in the.NET platform using C# language to complete aport scanner.
6、 This program mainly completes the multi thread batch scanning andasynchronous scanning function. Multi-threaded batch scanning, all the host tospecify a single host or network segment specified for a particular port and theport specifiedport scansoneby one, the portscanning procedurescanfastaccurat
7、ely scan host listens to the free port. Compared with the multi threadasynchronousbatch scanning,scanning can accuratelyscan host listenstothefreeport at a faster speed. Scan results are displayed in the form of a list.Key words: port scanning; multi thread batch scan; asynchronous scan.专业 .整理 .下载可编
8、辑1 前言端口在计算机网络中用于标识上层应用程序服务,端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。端口扫描是计算机解密高手喜欢的一种方式。攻击者可以通过它了解到从哪里可探寻到攻击弱点。实质上,端口扫描包括向每个端口发送消息,一次只发送一个消息。接收到的回应类型表示是否在使用该端口并且可由此探寻弱点。扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种端口的状态!这就能让我们间接的或直观的了解到远程主机所存在的安全问题。1.1 课程设计的目的计算机网络的
9、发展使得社会网络化程度增加,人们对计算机网络的依赖也越来越大,端口扫描技术是发现安全问题的重要手段之一。端口扫描的主要目的是判断目标主机或目标网段的主机开放了哪些服务,网络管理员了解了这些信息后,便于管理整个网络以及采取相应的安全防。2 设计的软硬件平台本程序基于 .NET 平台使用 C#语言开发的一个端口扫描程序。 .NET 是 MicrosoftXMLWebservices 平台。 XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、 设备或编程语言。 Microsoft .NET 平台提供创建 XML Web servi
10、ces 并将这些服务集成在一起之所需。 .NET 支持多种语言,包括 C#,VC+,COBOL等,是一个全面的开发工具。3 端口扫描的主要工作原理端口扫描器通过选用远程TCP/IP 不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。最基本的TCP扫描,操作系统提供的connect() 系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect() 就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使.专业 .整理 .下载可编辑用这个调用
11、。另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect() 调用,那么将会花费相当长的时间,使用者可以通过同时打开多个套接字来加速扫描,也就是本设计中的多线程批量扫描。使用非阻塞I/O 允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被察觉,并且被防火墙将扫描信息包过滤掉。目标计算机的 logs 文件会显示一连串的连接和连接出错消息, 并且能很快使它关闭。常见的端口扫描方法有 TCPconnect ,TCPSYN,TCPFIN,TCPACK,多线程 socket批量扫描等,本次课程设计主要采用TCPconnect 实现异步扫描,调用socke
12、t 实现多线程批量扫描。3.1多线程批量扫描工作原理操作系统提供的socket 系统调用,用来与每一个感兴趣的目标主机的端口进行连接。如果端口处于侦听状态,那么socket ()就能成功,否则这个端口没有提供服务。多线程批量扫描使用 for 循环来实现逐个扫描的,多端口也是使用for循环来实现逐个扫描的,调用 connect ()和 accept ()建立套接字连接,这两个系统调用用于完成一个完整相关的建立,其中 connect ()用于建立连接。 accept ()用于使服务器等待来自某主机进程的实际连接。借助for 循环通过 threadi=new Thread(ThreadPort )创
13、建多个线程,采用异常处理机制调用socket 进行连接,实现端口扫描。3.2异步扫描工作原理调用操作系统提供的BeginConnect()方法进行 TCP连接,用来与每一个感兴趣的目标主机的端口进行连接。如果端口处于侦听状态,那么就能连接成功,否则不能连接成功。通过 while ()循环来返回连接结果,并显示在列表中。4 端口扫描实现的主要步骤4.1多线程批量扫描设计的主要步骤(1)使用自定义的方法GetListIP ()获取待扫描的指定主机或指定网段主机的IP 地址和指定端口或端口段。(2)初始化并保存为IPEndPoint 对象。(3)借助 for 循环通过 threadi=new Thr
14、ead(ThreadPort )创建多个线程。(4)调用线程的实现方法,使用socket 连接,通过 for 循环进行批量扫描。(5)采用 try catch进行异常处理。.专业 .整理 .下载可编辑4.2异步扫描设计的主要步骤(1)使用自定义的方法GetListIP ()获取待扫描的指定主机或指定网段主机的IP 地址和指定端口或端口段。(2)初始化并保存为IPEndPoint 对象。(3)通过 for 循环创建线程。(4)调用操作系统提供的BeginConnect ()方法进行 TCP连接,进行循环扫描。(5)采用 try catch进行异常处理。5 程序运行与测试5.1对指定主机指定端口异
15、步扫描,如图5.1 所示。图 5.1异步扫描单主机单端口5.2对指定主机指定端口围异步扫描,如图5.2 所示。.专业 .整理 .下载可编辑图 5.2异步扫描单主机多端口5.3对指定 IP 指定端口围多线程批量扫描,如图5.3 所示。图 5.3 多线程扫描单主机多端口.专业 .整理 .下载可编辑5.4对指定 IP 围指定端口围多线程批量扫描,如图5.4 所示。图 5.4 多线程扫描多主机多端口5.5对指定 IP 围指定端口围异步扫描,如图5.5 。.专业 .整理 .下载可编辑图 5.5异步扫描多主机多端口6 设计的结论及意义经过不断的修改和完善程序,基本满足了一个端口扫描成宿的基本要求,实现了对
16、单个指定的主机进行扫描或扫描指定网段的主机,实现了对特定端口进行扫描,或扫描指定的端口围的端口,以避免在不需要了解的端口号上浪费时间。端口扫描技术是网络安全中重要的技术之一,有利于用户,特别是网管人员了解被管理主机的服务的开启情况,对网络安全有着重大意义。7 参考文献1 谢希仁 计算机网络 M 第 6 版. 北京 : 电子工业, 2013.62 马骏 C#网络应用编程 第 3 版. 北京 : 人民邮电, 2014.93 建华,涛等译 TCP/IP 详解 卷 1. 北京:机械工业, 2009.14梁亚声计算机网络安全教程第 2 版. 北京:机械工业, 2010.专业 .整理 .下载可编辑附录:u
17、sing System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using System.Windows.Forms;namespace PortFyzpublic partial cla
18、ss Form1 : Formprivate volatile int N = 0;/用来说明每次扫描时的索引private volatile int T = 0;/用来说明线程执行的次数ManualResetEvent manualResetEvent = new ManualResetEvent(false);List listIpe = new List();/用来存储所有的IPEndPoint泛型int threadNumber = 10;/创建的线程数Thread thread;AutoResetEvent autoEvent=new AutoResetEvent(false);de
19、legate void AddStr(string str);AddStr addstr;#region 1简单控件操作void AddList(string str)listBox1.Items.Add(str);public Form1()InitializeComponent();private void Form1_Load(object sender, EventArgs e)addstr += AddList;private void button2_Click(object sender, EventArgs e)Application.Exit();private void c
20、heckBox2_CheckedChanged(object sender, EventArgs e)if (checkBox2.Checked)textBox3.Enabled = false;textBox4.Enabled = false;.专业 .整理 .下载可编辑elsetextBox3.Enabled = true;textBox4.Enabled = true;private void checkBox1_CheckedChanged(object sender, EventArgs e)if (checkBox1.Checked)textBox1.Enabled = false
21、;textBox2.Enabled = false;elsetextBox1.Enabled = true;textBox2.Enabled = true;#endregion#region 2.1多线程批量扫描private void button1_Click(object sender, EventArgs e)private void button1_Click(object sender, EventArgs e)if (textBox8.Text.Trim() = )MessageBox.Show(请输入线程数);elsethreadNumber = Convert.ToInt32
22、(textBox8.Text.Trim();Initialization();/ 设置进度条progressBar1.Minimum = 0;progressBar1.Maximum = listIpe.Count;progressBar1.Value = 0;if (listIpe.Count =threadNumber)threadNumber = listIpe.Count;/ 开始创建线程扫描thread = new ThreadthreadNumber;for (int i = 0; i threadNumber; i+)threadi = new Thread(ThreadPort
23、);threadi.Priority = ThreadPriority.AboveNormal;threadi.IsBackground = true;threadi.Start();.专业 .整理 .下载可编辑manualResetEvent.WaitOne();#endregion#region 2.2多线程批量扫描public void ThreadPort()/ / 多线程批量扫描/ public void ThreadPort()IPEndPoint currentIpe = listIpe0;while (true)if (N = listIpe.Count)if (T = lis
24、tIpe.Count)/注意 return时,只是当前线程被销毁,其IsAlive为 false ,这个时候还有线程在跑/有可能后面的没执行完就已经把结果送给textBox5 了/当所有线程执行完后,才通知textBox5 的 text 为 resultmanualResetEvent.Set();return;elselock (this)currentIpe = listIpeN;N+;Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);trysocket.Co
25、nnect(currentIpe);if (socket.Connected)IPEndPoint ep = socket.LocalEndPoint as IPEndPoint;string ss=ep.Address + : + ep.Port + 连接 +currentIpe.Address + : + currentIpe.Port + 已打开 + rn;addstr(ss);T+;elsestring ss = currentIpe.Address + : + currentIpe.Port + 未连接成功 + rn;addstr(ss);T+;.专业 .整理 .下载可编辑catch
26、 (Exception ex)stringss = currentIpe.Address+ :+ (ex.Message.Split(:)1+ 未连接成功 + rn;addstr(ss);T+;finallysocket.Close();#endregion#region 3.1异步扫描private void button3_Click(object sender, EventArgs e)private void button3_Click(object sender, EventArgs e)/ 进行初始化Initialization();/ 设置进度条progressBar1.Mini
27、mum = 0;progressBar1.Maximum = listIpe.Count;progressBar1.Value = 0;/ 开始创建线程扫描Form1 form = this; ListBox listbox = listBox1;ProgressBar progressBar= progressBar1; thread = new ThreadthreadNumber;for (int i = 0; i threadNumber; i+)threadi = new Thread(new ParameterizedThreadStart(sport);threadi.Start
28、(new ArrayList() listbox, progressBar,i);#endregion#region 3.2异步扫描的实现方法void sport(object s)void sport(object s)/ 进行一系列对象的转化ArrayList al = (ArrayList)s; ListBox listbox = (ListBox)al0; ProgressBar progressBar= (ProgressBar)al1; int ith = Convert.ToInt32(al2);/ 开始循环去进行连接for (int iport = ith; iport lis
29、tIpe.Count; iport += threadNumber)TcpClient tcpClient = new TcpClient(AddressFamily.InterNetwork);.专业 .整理 .下载可编辑try/异步连接tcpClient.BeginConnect(listIpeiport.Address, listIpeiport.Port, AsyncPort, new ArrayList() tcpClient, iport, progressBar, listbox );catch (Exception ex)/让当前线程等待autoEvent.WaitOne(20
30、0);#endregion#region 3.3异步扫描的结果处理public void AsyncPort(IAsyncResult result)/ / 异步扫描/ public void AsyncPort(IAsyncResult result)/ 进行一系列对象的转化ArrayList arr = (ArrayList)result.AsyncState;TcpClient tcpClient = (TcpClient)arr0;int iport = (int)arr1;ListBox listbox = (ListBox)arr3;ProgressBar progressBar1
31、 = (ProgressBar)arr2;while(true)/轮询看是否有结果if(result.IsCompleted)tryif (tcpClient.Connected)listBox1.Items.Add(listIpeiport.Address+ :+ listIpeiport.Port+ 已打开 );elselistBox1.SelectedIndex = listBox1.Items.Count - 1;finally/设置滚动条if (progressBar1.Value progressBar1.Maximum)progressBar1.Value+;break;tcpC
32、lient.Close();.专业 .整理 .下载可编辑#endregion#region 4.1公用方法,拿到所有IPEndPoint对象 public List GetListIP()#region 1.1拿到所有 IPEndPoint 对象 public List GetListIP()public List GetListIPE()if (checkBox1.Checked)/如果是指定一个IP 地址IPAddress ipa;if (IPAddress.TryParse(textBox6.Text.Trim(), out ipa)if (checkBox2.Checked)/一个 I
33、P 一个端口IPEndPoint ipe = new IPEndPoint(ipa,Convert.ToInt32(textBox7.Text.Trim();listIpe.Add(ipe);else/一个 IP 多个端口int startPort = Convert.ToInt32(textBox3.Text.Trim();int endPort = Convert.ToInt32(textBox4.Text.Trim();for (int j = startPort; j = endPort; j+)IPEndPoint ipe = new IPEndPoint(ipa, j);listI
34、pe.Add(ipe);elseMessageBox.Show(IP地址转换失败!);/return;else/如果是指定 IP 地址围long startIp;long endIp;long ip1 = IPToLong(textBox1.Text.Trim();long ip2 = IPToLong(textBox2.Text.Trim();List listIp = new List();if (ip1 ip2)startIp = ip2;endIp = ip1;elsestartIp = ip1;endIp = ip2;.专业 .整理 .下载可编辑for (long a = start
35、Ip; a = endIp; a+)IPAddress ipa = IPAddress.Parse(LongToIP(a);listIp.Add(ipa);if (checkBox2.Checked)/多 IP 一个端口 -int onePort = Convert.ToInt32(textBox7.Text.Trim();IPEndPoint ipe;for (int j = 0; j listIp.Count; j+)ipe = new IPEndPoint(listIpj, onePort);listIpe.Add(ipe);else/多 IP 多端口 -int startPort = C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合作方建材供应协议书范本
- 人身损害赔偿和解协议书模板参考
- 2023年天津师范大学招聘(辅导员岗位)人员考试真题
- 2023年韶关市乳源瑶族自治县第一小学招聘教师考试真题
- 2024版工矿企业矿石买卖合同样式
- 培训班合作协议范文
- 升降机租赁合同
- 标准版家庭租房合同
- 代办合同:房产代理登记协议
- 全年销售合作协议书
- 诊所消防应急专项预案
- 公需课答案-法治建设与国家治理现代化
- 施工升降机安装拆除安全交底 LJA-C4-1-1
- 小学语文 四年级上册 《第二单元》作业设计
- 中考语文高效复习知识讲座
- 美容市场策划方案
- 研发部年度工作计划
- 医院药品目录(很好的)
- 地方国有数据公司发展现状初探 20240228 -远东资信
- 波形梁护栏质量检测
- 初中心理健康教育课件《做一个有责任的人》
评论
0/150
提交评论