端口扫描器的设计与实现

端口扫描器的设计与实现
端口扫描器的设计与实现

计算机科学与工程学院

课程设计报告

题目全称:

课程:

学生学号:班号:姓名:

指导老师:职称:

指导老师评语:

签字:课程设计成绩:

前言

网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全开放,有的却是紧锁城门。入侵者们是如何找到,并打开它们的城门的呢?这些城门究竟通向城堡的何处呢?在网络技术中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图。一般来说,扫描端口有如下目的:

·判断目标主机上开放了哪些服务;

·判断目标主机的操作系统;

如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵,本课程设计将会通过用JAVA语言实现一个小的端口扫描软件,详细描述端口扫描的原理,分析端口扫描所涉及的问题,以便更加清楚地了解入侵者如何扫描目标主机的端口,同时掌握如何确保本机的安全性,为将来设计更为安全的系统打下牢固基础。

目录

一、网络基础知识 (4)

1、端口的基本概念 (4)

2、端口的分类 (4)

二、端口扫描的基本原理 (4)

1、基本原理 (4)

2、基于JA V A语言实现的核心代码 (5)

三、端口扫描器视图 (6)

1、工作窗口 (6)

2、异常窗口 (6)

3、窗口核心代码 (6)

四、多线程快速扫描 (7)

1、多线程机制 (7)

2、多线程核心代码 (8)

五、用户使用方法 (9)

1、页面说明 (9)

2、按主机名扫描 (9)

3、按IP地址扫描 (9)

六、常用端口 (9)

七、异常检测 (10)

结语 (13)

一、网络基础知识

1、端口的基本概念

“端口”在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。

端口是由计算机的通信协议TCP/IP协议定义的。其中规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用IP端口来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向A端口就可以实现通信了。

可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。

2、端口的分类

端口是一个16 bit的地址,用端口号进行标识不同作用的端口,参见表2-2和表2-3。端口一般分为两类。

■熟知端口号:范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP服务,80端口分配给HTTP 服务,135端口分配给RPC服务等等

■动态端口号:动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如8080端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

二、端口扫描的基本原理

1、基本原理

端口扫描的原理其实非常简单,只是简单的利用JA V A提供库函数Socket进

行调用,与每一个感兴趣的目标计算机的端口进行连接。如果对方端口处于监听状态,那么连接就能成功。否则,这个端口不能用,既没有提供服务。这个技术的一个最大的优点是,不需要任何权限,系统中的任何用户都有权利使用这个调用。

引入多线程机制,利用多线程扫描的好处就是速度快,如果对每个目标端口以线性的方式使用单独的连接调用,那么将会花费相当长的时间。多线程同时打开多个套接字,从而加速扫描。在本设计中用户可以自定义线程的个数。此处用户还可以自定义扫描方式。

2、基于JAVA语言实现的核心代码

//在多线程的控制下,利用for循环对端口逐一扫描

for (i =XXXXXX; i

try{

theTCPsocket=new Socket(hostAddress,i);

theTCPsocket.close();

//判断端口的类别

switch(i){

case 21:

……

//对相应开放端口识别。

}

//将开放端口内容添加到显示区域,并加锁使各处同步关系。

synchronized (ThreadScan.Result) {

ThreadScan.Result.append(" "+i);

ThreadScan.Result.append(":"+porttype+"\n");

}

//对相应开放端口和没有开放即连接失败的端口作记录,放入显示区。

catch (IOException e){

//同时也对程序加锁防止出现序。

synchronized (ThreadScan.ResultAll) {

//将所有端口内容添加到显示区域

ThreadScan.ResultAll.append(" "+i);

ThreadScan.ResultAll.append(":Closed"+"\n");

}

}

}

三、端口扫描器视图

1、工作窗口

这是用JA V A语言实现的一个简单的端口扫描器软件,主页面视图如下:

2、异常窗口

当用户操用不当,例如输入的IP地址超过255,或者端口范围大于65535时,用户点击“开始扫描”按钮都会抛出相应的异常,并提示错误原因。如下图示例:

3、窗口核心代码

public class ThreadScan{

public static JFrame main=new JFrame("网络与信息安全课程设计·端口扫描器·刘纪生");

public static void main(String[] args){

Submit.addActionListener(new SubmitAction());

Stop.addActionListener(new StopAction());

Cancel.addActionListener(new CancleAction());

OK.addActionListener(new OKAction());

//实现保存功能

saveItem.addActionListener(new java.awt.event.ActionListener() {

});

//实现退出功能

exitItem.addActionListener(new java.awt.event.ActionListener() //实现帮助功能

helpItem.addActionListener(new java.awt.event.ActionListener() {

saveButton.addActionListener(new

java.awt.event.ActionListener() {

});

main.setVisible(true);

}

}

四、多线程快速扫描

1、多线程机制

在本系统中采用了多线程机制,用户可以上述工作窗口中输入所要打开

的线程数,对相端口范围进行扫描。多线程是指在一个程序中同时打开多处运行

单元,各线程同时执行。大大提高了扫描的速度。

例如,假设用户填写的线程数为3,则其扫描过程如下所示

例如,假设用户填写的线程数为1,则其扫描过程如下所示

当设置1个线程时,就好比只有一个人(一个线程)在做这件事,而但设置多个线程时,就好比是多个人分批一起做这件事。显然是多线程会处理的更快。

2、多线程核心代码

public class TCPThread extends Thread{

public static InetAddress hostAddress;

……

public TCPThread(String name,int threadnum){

super(name);

this.threadnum = threadnum;

}

//运行函数

public void run() {

//根据ip地址进行扫描

if(type == 0){

//不同的端口循环扫描

for (i = XXXXXX; i < XXXXXX; i += XXXXXX){

theTCPsocket=new Socket(hostAddress,i);

theTCPsocket.close();

}

}

//按照主机名进行端口扫描

if(type == 1){

for (i = XXXXXX; i < XXXXXX; i += XXXXXX){

//……

}

}

}

}

//启动线程

for(int i=0;i

new TCPThread("T" + i,i).start();

}

五、用户使用方法

1、页面说明

首先在菜单中有“文件”“帮助”选项。在“文件”中设置了“保存扫描结果”和“退出”。用户可以点击“保存扫描结果”或者是Ctrl+S,对扫描结果进保存。也可在“帮助”菜单查看相关信息。如图

在“端口范围”用户可以输入要扫描的端口的范围,默认是0—1000,最大是65535。

在“线程数”中用户可以自定义线程数,默认是100,最大是200。之后是两种扫描方式的选择。

扫描所有窗口中会显示所有被扫描过的不有打开和打开的端口,开放端口中会显示所有扫描得到的开放端口。

2、按主机名扫描

当用户选中按主机名扫描时,需要输入将要扫描的主机名,默认是本机localhost,用户也可以自己填写相关主机。之后点击“开始扫描”。

3、按IP地址扫描

当用户选中按IP地址扫描时,需要输入将要扫描的主机的IP,默认是0.0.0.0。之后点击“开始扫描”。如果用户输入的端口范围太大,这样会导致程序扫描时间很长,这时可以点击“停止扫描”来中止扫描。

六、常用端口

系统默认会识别一部分常用端口,对常用端口系统将扫描出来,并随之打印端口功能,对未能识别的开放端口,系统将随之打印“UnknownPort:Open”。代码如下:

switch(i){

case 21:

porttype = "(FTP)";

break;

case 23:

porttype = "(TELNET)";

break;

case 25:

porttype = "(SMTP)";

break;

case 80:

porttype = "(HTTP)";

break;

case 110:

porttype = "(POP)";

break;

case 139:

porttype = "(netBIOS)";

break;

case 1433:

porttype = "(SQL Server)";

break;

case 3389:

porttype = "(Terminal Service)";

break;

case 443:

porttype = "(HTTPS)";

break;

case 1521:

porttype = "(Oracle)";

break;

default :

porttype = "(UnknownPort:Open)";

break;

}

七、异常检测

当用户输入的数据不合法时,系统将弹出错误窗口,并提示错误原因,

相关代码:

//判断起始ip是否正确,判断条件:大于0且小于等于255

if(ip1<0 || ip1>255||ip2<0 || ip2>255||ip3<0 || ip3>255||ipstart<0 || ipstart>255){

ThreadScan.DLGINFO.setText("ip地址为0-255的整数! ");

ThreadScan.DLGError.setVisible(true);

ThreadScan.Submit.setEnabled(true);

//设置开始扫描按钮可用。

return;

}

//判断主机名称的有效性

try{

TCPThread.hostAddress=InetAddress.getByName(ThreadScan.hostname.g etText());

}catch(UnknownHostException e){

ThreadScan.DLGINFO.setText(" 错误的域名或地址不可达! ");

ThreadScan.DLGError.setVisible(true);

ThreadScan.Submit.setEnabled(true); //设置开始扫描按钮可用。

return;

}

//判断端口号的有效性

try{

minPort=Integer.parseInt(ThreadScan.minPort.getText());

maxPort=Integer.parseInt(ThreadScan.maxPort.getText());

maxThread=Integer.parseInt(ThreadScan.maxThread.getText());

}catch(NumberFormatException e){

ThreadScan.DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!");

ThreadScan.DLGError.setVisible(true);

ThreadScan.Submit.setEnabled(true); //设置开始扫描按钮可用。

return;

}

//判断最小端口号的有效范围:大于0且小于65535,最大端口应大于最小端口if(minPort<0 || minPort>65535 || minPort>maxPort){

ThreadScan.DLGINFO.setText("最小端口必须是0-65535并且小于最大端口的整数!");

ThreadScan.DLGError.setVisible(true);

ThreadScan.Submit.setEnabled(true); //设置开始扫描按钮可用。

return;

}else{

TCPThread.MIN_port=minPort;

}

//判断最大端口号的有效范围:大于0且小于65535,最大端口应大于最小端口if(maxPort<0 || maxPort>65535 || maxPort

ThreadScan.DLGINFO.setText("最大端口必须是0-65535并且大于最小端口的整数!");

ThreadScan.DLGError.setVisible(true);

ThreadScan.Submit.setEnabled(true); //设置开始扫描按钮可用。

return;

}else{

TCPThread.MAX_port=maxPort;

}

//判断线程数量的有效范围:大于1且小于200

if(maxThread<1 || maxThread>200){

ThreadScan.DLGINFO.setText("线程数为1-200的整数!");

ThreadScan.DLGError.setVisible(true);

ThreadScan.Submit.setEnabled(true); //设置开始扫描按钮可用。

return;

}

结语

在这次课程设计中,我遇到了不少的困难。大多数是对程序的设计相关,当然还是因为知识点不全,技术不成熟造成的。不过,这个过程却使我学习了不少新的知识。包括对信息安全更深层的解理。我自认为这是一次比较成功的课程设计。不过我不知道为什么,我写的程序中还一点小BUG,就是在扫描过程中如果把窗口缩下去,再拉上来可能会导致窗口布局变乱,但这也不是经常发生的,所以不学对系统造成太大影响。由于时间关系,我不想再花时间查找原因了。但是以后有空时我会在复习这个程序时把问题解决掉。

再说明一点,我的课程设计大多时间是在我自己的机器上完成的,因为每次去机房还需要配置JA V A工作环境(本软件只有在JA V A环境下才正常运行),所以有两次我都没有去。另外,非常感谢老师对我们的辛勤指导!愿老师工作顺利,万事如意!

TCP的客户 服务器 端口扫描程序设计

海南大学信息科学技术学院《安全扫描技术》 TCP的客户/服务器/端口扫描程序设计 学号: ______ 姓名: 年级: 2010级 __________ 专业:信息安全 ______ 指导老师:顾剑 ____

目录 1实验目的及要求 (1) 2实验的背景及意义 (1) 3实验流程 (1) 4实验内容与步骤 (3) 5实验代码 (5) 5.1 TCP服务器程序: (5) 5.2 TCP客户端: (8) 5.3 TCP端口扫描: (10) 6实验操作手册 (11) 7实验总结 (14)

第 1 页共17 页 1实验目的及要求 (1)、熟悉Microsoft Visual Studio 2006编程环境。 (2)、了解TCP客户/服务器/扫描端口的模型原理。 (3)、熟悉Socket编程原理,掌握简单的套接字编程。 2实验的背景及意义 (1)、TCP客户和服务器 TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后数据传送,最后拆除连接三个过程并且TCP在建立连接时又分三步走: 第一步是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号; 第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP 序号被加一,ACK即确认(Acknowledgement)。 第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。然后才开始通信的第二步:数据处理。 这就是所说的TCP三次握手(Three-way Handshake)。简单的说就是:(C:客户端,S:服务端) C:SYN到S S:如成功--返回给C(SYN+ACK) C:如成功---返回给S(ACK)以上是正常的建立连接方式(2)、TCP端口扫描 “端口”在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。 端口是由TCP/IP协议定义的。其中规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向[A:端口]就可以实现通信了。 可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,入侵者通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接,这也是端口扫描的主要目的。 3实验流程 (1)、TCP客户程序和服务器程序流程图 程序分两部分:客户程序和服务器程序。 工作过程是:服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。

简单端口扫描器java的设计与实现

简单端口扫描器java的设计与实现 IPScan类的实现 package sca n. pratice; import java .n et.I netAddress; import java .n et.Socket; import java. net.U nknownH ostExceptio n; import java.util.ArrayList; import java.util.ListIterator; public class IPSca n { static long startTime=System.curre ntTimeMillis(); // 获取开始时间 public static void main( Stri ng[] args) { if(args.le ngth !=2){ System.out.println(” 参数不对"); } int startIP = In teger.parse In t(args[0]); II获得起始IP,因为args[]是String类型,所以要强制转换成int类型 int en dIP = In teger.parse In t(args[1]); II获得终止IP,同上 ArrayList result = new ArrayList(); I/ip地址扫描 for(i nt id=startIP;id<=e ndlP;id++){ Stri ng addres= "10.28.23."; try { Socket s=new Socket(addres+id,8000); II 建立连接 } catch (UnknownH ostExcepti on e ) { }catch(Exceptio n e){ IISystem.out.pri ntl n( e.toStri ng()); timed if(e.toStri ng().e ndsWith("java. net.C onn ectExceptio n: Conn ecti on out: conn ect")){ System.out.pri ntln( addres+id+": not exist."); }else{

常见的端口扫描类型及原理

常见的端口扫描类型及原理 常见的扫描类型有以下几种: 秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术。 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。 秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽。 但是这种扫描的缺点是扫描结果的不可靠性会增加,而且扫描主机也需要自己构造IP包。现有的秘密扫描有TCP FIN 扫描、TCP ACK扫描、NULL扫描、XMAS扫描和SYN/ACK 扫描等。 1、Connect()扫描: 此扫描试图与每一个TCP端口进行“三次握手”通信。如果能够成功建立接连,则证明端口开发,否则为关闭。准确度很高,但是最容易被防火墙和IDS检测到,并且在目标主机的日志中会记录大量的连接请求以及错误信息。 TCP connect端口扫描服务端与客户端建立连接成功(目标

端口开放)的过程: ① Client端发送SYN; ② Server端返回SYN/ACK,表明端口开放; ③ Client端返回ACK,表明连接已建立; ④ Client端主动断开连接。 建立连接成功(目标端口开放)如图所示 TCP connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程: ① Client端发送SYN; ② Server端返回RST/ACK,表明端口未开放。 未建立连接成功(目标端口关闭)如图所示。 优点:实现简单,对操作者的权限没有严格要求(有些类型的端口扫描需要操作者具有root权限),系统中的任何用户 都有权力使用这个调用,而且如果想要得到从目标端口返回banners信息,也只能采用这一方法。 另一优点是扫描速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,可以通过同时打开多个套接字,从而加速扫描。 缺点:是会在目标主机的日志记录中留下痕迹,易被发现,并且数据包会被过滤掉。目标主机的logs文件会显示一连串的连接和连接出错的服务信息,并且能很快地使它关闭。

主机端口扫描程序设计

主机端口扫描程序设计 摘要 计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。 本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。此程序主要完成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。而对于UDP扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。 关键词:端口扫描、TCP扫描、UDP扫描、TCP多线程扫描

目录 1引言 (1) 1.1 课题的背景及意义 (1) 1.2 端口扫描现状 (1) 2系统设计 (1) 2.1 系统主要目标 (1) 2.2 开发环境及工具 (1) 2.3 功能模块与系统结构 (2) 3系统功能程序设计 (4) 3.1 获取本机IP (4) 3.2 分割字符串函数的实现 (4) 3.3 获取待扫描的IP地址 (5) 3.4 获取待扫描的端口号 (5) 3.4.1 指定端口号的初始化 (6) 3.4.2 指定端口号的保存 (7) 3.5 TCP CONNECT()扫描 (8) 3.5.1 基本原理 (8) 3.5.2 扫描多个主机多端口多线程的实现 (8) 3.5.3 扫描结果的显示 (9) 3.6 UDP扫描 (10) 3.6.1 基本原理 (10) 3.6.2 计算效验和 (11) 3.6.3 发送UDP数据包 (11) 3.6.4 接收ICMP数据包 (12) 4测试报告 (12) 4.1 TCP扫描检测 (12) 4.1.1扫描本机 (12) 4.1.2扫描网络中其他主机 (13) 4.1.3 扫描IP段 (13) 4.2 UDP扫描检测 (14) 4.2.1 扫描本机 (14) 4.1.2扫描网络中其他主机 (15) 4.3 TCP、UDP一起扫描 (16) 结论 (17) 参考文献 (17)

大学毕业设计---端口扫描器实现

本科学生毕业论文简单的端口扫描器实现

诚信承诺书 郑重承诺:所呈交的论文是作者个人在导师指导下进行的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与作者一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 作者签名:日期: 导师签名:日期: 院长签名:日期: 论文使用授权说明 本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。保密论文在解密后遵守此规定。 作者签名:导师签名:日期:

目录 1 引言 (2) 2 端口扫描概述 (2) 3 端口扫描相关知识 (2) 3.1 端口的基本概念 (2) 3.2 常见端口介绍 (3) 3.3 端口扫描器功能简介 (3) 3.4 常用端口扫描技术 (3) 3.4.1 TCP connect()扫描 (3) 3.4.2 TCP SYN扫描 (4) 3.4.3 TCP FIN 扫描 (4) 3.4.4 IP段扫描 (4) 3.4.5 TCP反向 ident扫描 (4) 3.4.6 FTP 返回攻击 (4) 4 实验流程和运行流程 (5) 4.1 实现流程 (5) 4.2 程序中主要的函数 (7) 4.3 主流程图 (8) 5 总结 (11) 5.1 提出问题 (11) 5.2 解决问题 (11) 5.3 心得体会 (11) 6 致谢 (11) 参考文献 (12)

端口扫描程序设计

网络安全程序设计结课论文端口扫描程序设计

目录 第一章序言 (3) 第二章系统设计 (5) 2.1 运行环境及语言 (5) 2.2系统功能 (6) 2.3程序运行流程图 (6) 2.4 程序设计过程 (6) 2.41创建工程 (6) 2.42 主机端口扫描程序设计流程 (8) 2.43主要代码 (9) 2.5运行结果测试 (15) 第三章总结及心得 (16) 3.1 总结 (16) 3.2 心得体会 (16) 第四章参考文献 (16)

第一章序言 1.1 背景 Internet快速的发展,为我们带来了方便同时也带给了我们信息安全担忧。在计算机信息安全管理中可以通过端口扫描收集系统的信息来自动监测远程或本地主机安全性弱点的程序,可以发现远程服务器的各种tcp端口的分配及提供的服务与他们的软件版本。从而让管理员间接的或直观的了解到远程主机所存在的安全问题。从而端口扫描技术得到人们的重视。 1.2目的 该文章对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于windows平台上的端口扫描系统。此程序主要完成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段的端口进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。而对于UDP扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。 1.3端口扫描概述 网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础

端口扫描-史上最全常用端口号

端口扫描必须了解的端口数 1、21端口: 端口说明:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。 操作建议:因为有的FTP服务器可以通过匿名登录,所以常常会被黑客利用。另外,21端口还会被一些木马利用,比如Blade Runner、FTP Trojan、Doly Trojan、WebEx等等。如果不架设FTP服务器,建议关闭21端口。 2、23端口 端口说明:23端口主要用于Telnet(远程登录)服务。 操作建议:利用Telnet服务,黑客可以搜索远程登录Unix的服务,扫描操作系统的类型。而且在Windows 2000中Telnet服务存在多个严重的漏洞,比如提升权限、拒绝服务等,可以让远程服务器崩溃。Telnet服务的23端口也是TTS(Tiny Telnet Server)木马的缺省端口。所以,建议关闭23端口。 3、25端口 端口说明:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件 端口漏洞: 1. 利用25端口,黑客可以寻找SMTP服务器,用来转发垃圾邮件。 2. 25端口被很多木马程序所开放,比如Ajan、Antigen、Email Password Sender、ProMail、trojan、Tapiras、Terminator、WinPC、WinSpy等等。拿WinSpy来说,通过开放25端口,可以监视计算机正在运行的所有窗口和模块。 操作建议:如果不是要架设SMTP邮件服务器,可以将该端口关闭。 4、53端口 端口说明:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析。 端口漏洞:如果开放DNS服务,黑客可以通过分析DNS服务器而直接获取Web服务器等主机的IP地址,再利用53端口突破某些不稳定的防火墙,从而实施攻击。近日,美国一家公司也公布了10个最易遭黑客攻击的漏洞,其中第一位的就是DNS服务器的BIND漏洞。 操作建议:如果当前的计算机不是用于提供域名解析服务,建议关闭该端口。 5、67与68端口 端口说明:67、68端口分别是为Bootp服务的Bootstrap Protocol Server(引导程序协议服务端)和

基于多线程的端口扫描程序课程设计报告

滁州学院 课程设计报告 课程名称: 设计题目:基于多线程的端口扫描程序 院部:计算机与信息工程学院 专业:网络工程 组别:第六组 起止日期: 2012 年12月31日~2013 年1月6日指导教师: 计算机与信息工程学院二○一二年制

课程设计任务书 目录 1 需求分析. 0 1..1 网络安全 0 1.2 课程背景 0 1.3 扫描器 0 1.4 多线程扫描器介绍 (1) 错误! 未定义书签。

错误! 未定义书签。 错误! 未定义书签。 错误! 未定义书签。 1.5 端口扫描 (2) 2 概要设计. (3) 2.1 整体框架设计 (3) 2.2 流程图描述 (3) 3 详细设计. (3) 3.1 端口扫描线程启动 (3) 3.2 GUI 图形界面 (5) 3.3 按钮监听及异常处理 (6) 4 调试与操作说明. (8) 4.1 运行界面 (8) 4.2 扫描结果 (8) 4.3 错误提示 (8) 5 课程设计总结与体会. (8) 6 参考文献. (9) 7 致谢. (9) 8 附录. 0 1 需求分析 1..1 网络安全二十一世纪是信息化、网络化的世纪,信息是社会发展的重要资源。信息安全保障能力是一个国家综合国力、经济竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。网络安全包括技术领域和非技术领域两大部分: 非技术领域包括一些制度、政策、管理、安全意识、实体安全

等方面的内容; 技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA 认证、操作系统等方面的内容。这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。 1.2 课程背景 随着Internet 的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。端口扫描技术是网络安全扫描技术一个重要的网络安全技术。与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。安全扫描是安全技术领域中重要的一类。通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统 型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。 网络的安全状况取决于网络中最薄弱的环节,任何疏忽都有可能引入不安全的因素,最有效的方法是定期对网络系统进行安全分析,及时发现并修正存在的脆弱,保证系统安全。 国外安全扫描技术的历史可以追溯到20 世纪90 年代,当时因特网刚刚起步,但是在过去的十年内,扫描技术飞速发展,迄今为止,其扫描技术已经非常完善,但是在全面性,隐蔽性和智能性上还有待提高。安全扫描从最初专门为UNIX 系统而编写的一些只有简单功能的小程序发展到现在,已经出现了可以运行多个操作系统平台上的,具有复杂功能的系统程序。 国内的扫描技术是在国外的扫描器基础上发展起来的。其中有一些专门从事安全技术的公司。这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统的限制。 然而对于更多的基于主机的端口扫描而言,简单,实用,可靠才是它们的长处。 1.3 扫描器扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配。这就能让我们间接的或直观的了解到远程主机所存在的安全问题。为了保证网络中计算机的安全性,必须采取主动策略, 快速、及时、准确、安全的检测出网络中计算机及防火墙开放的和未开放的端口。计算机端口扫描技术就是这种主动防御策略实现的重要技术手段。 扫描器采用模拟攻击的形式对目标可能存在的已知安全漏洞进行逐项检查。目标可以是工作站、服务器、交换机、数据库应用等各种对象。然后根据扫描结果向系统管理员提供周 密可靠的安全性分析报告,为提高网络安全整体水平产生重要依据。在网络安全体系的建设中,安全扫描工具花费低、效果好、见效快、与网络的运行相对对立、安装运行简单,可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的统一和稳定。 1.4 多线程扫描器介绍 在java 中,组件放置在窗体上的方式是完全基于代码的。组件放置在窗体上的方式通常不是通过绝对坐标控制,而是由“布局管理器”根据组件加入的顺序决定其位置。每个容器都有一个属于的自己布局管理器。使用不同的布局管理器,组件大小,位置和形状将大不相同。表格型布局管理器将容器划分成为一个多行多列的表格,表格的大小全部相同,是由其中最大的组件所决定。通过add 方法可以将组件一一放在每个表格

端口扫描报告

杭州电子科技大学软件学院网络工程试验报告 端口扫描报告 09109146 王子龙

1.端口及端口扫描技术简介 (2) 2.对现有端口扫描工具程序的理解 (2) 主界面 (3) 3.核心代码 (6) 4.个人总结 (13) 1.端口及端口扫描技术简介 根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP 端口和UDP端口。 一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。主机不只是靠IP地址来区分网络服务,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。 一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。 在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。 通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。 2. 对现有端口扫描工具程序的理解 该程序是有C++编写的。C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。 该程序能够扫描主机IP的某一个端口,或者是扫描该主机IP某一范围内的端口。并且提供多次扫描功能。如果要扫描的端口很多,在扫描过程中可以暂停扫描。扫描结果在界面的下方显示。主要显示内容有IP地址、端口号、端口状态、连接次数及备注。

端口扫描

一、高级ICMP扫描技术 Ping就是利用ICMP协议走的,高级的ICMP扫描技术主要是利用ICMP协议最基本的用途:报错。根据网络协议,如果按照协议出现了错误,那么接收端将产生一个ICMP的错误报文。这些错误报文并不是主动发送的,而是由于错误,根据协议自动产生。 当IP数据报出现checksum和版本的错误的时候,目标主机将抛弃这个数据报,如果是checksum出现错误,那么路由器就直接丢弃这个数据报了。有些主机比如AIX、HP-UX等,是不会发送ICMP的Unreachable数据报的。 我们利用下面这些特性: 1、向目标主机发送一个只有IP头的IP数据包,目标将返回Destination Unreachable的ICMP错误报文。 2、向目标主机发送一个坏IP数据报,比如,不正确的IP头长度,目标主机将返回Parameter Problem的ICMP错误报文。 3、当数据包分片但是,却没有给接收端足够的分片,接收端分片组装超时会发送分片组装超时的ICMP数据报。

向目标主机发送一个IP数据报,但是协议项是错误的,比如协议项不可用,那么目标将返回Destination Unreachable的ICMP报文,但是如果是在目标主机前有一个防火墙或者一个其他的过滤装置,可能过滤掉提出的要求,从而接收不到任何回应。可以使用一个非常大的协议数字来作为IP头部的协议内容,而且这个协议数字至少在今天还没有被使用,应该主机一定会返回Unreachable,如果没有Unreachable的ICMP数据报返回错误提示,那么就说明被防火墙或者其他设备过滤了,我们也可以用这个办法来探测是否有防火墙或者其他过滤设备存在。 利用IP的协议项来探测主机正在使用哪些协议,我们可以把IP头的协议项改变,因为是8位的,有256种可能。通过目标返回的ICMP错误报文,来作判断哪些协议在使用。如果返回Destination Unreachable,那么主机是没有使用这个协议的,相反,如果什么都没有返回的话,主机可能使用这个协议,但是也可能是防火墙等过滤掉了。NMAP的IP Protocol scan也就是利用这个原理。 利用IP分片造成组装超时ICMP错误消息,同样可以来达到我们的探测目的。当主机接收到丢失分片的数据报,并且在一定时间内没有接收到丢失的数据报,就会丢弃整个包,并且发送ICMP分片组装超时错误给原发送端。我们可以利用这个特性制造分片的数据包,然后等待ICMP组装超时错误消息。可以对UDP 分片,也可以对TCP甚至ICMP数据包进行分片,只要不让目标主机获得完整的数据包就行了,当然,对于UDP这种非连接的不可靠协议来说,如果我们没

端口扫描器的设计与实现

河南理工大学 计算机科学与技术学院课程设计报告 2015— 2016学年第一学期 课程名称网络与信息安全 设计题目端口扫描器的设计与实现姓名范腾飞 学号311309040113 专业班级网络1301 指导教师叶青 2016 年 1 月16 日

目录 一.课程设计的目的........................................................ 二.课程设计的要求........................................................ 三.端口扫描器相关知识................................................. 3.1:端口的基本概念............................................... 3.2:常见的端口介绍............................................... 3.3:端口扫描器基本原理....................................... 3.4:端口扫描常用技术........................................... 四.实验流程.................................................................... 4.1:基本步骤............................................................. 4.2:主要函数............................................................... 4.3流程图..................................................................... 五.实验结果..................................................................... 六.总结........................................................................

端口扫描工具nmap使用实验

我们可以使用ping扫描的方法(-sP),与fping的工作方式比较相似,它发送icmp回送请求到指定范围的ip地址并等待响应。现在很多主机在扫描的时候都做了处理,阻塞icmp 请求,这种情况下。nmap将尝试与主机的端口80进行连接,如果可以接收到响应(可以是

syn/ack,也可以是rst),那么证明主机正在运行,反之,则无法判断主机是否开机或者是否在网络上互连。 扫描tcp端口 这里-sR是怎样在打开的端口上利用RPC命令来判断它们是否运行了RPC服务。 nmap可以在进行端口扫描的tcp报文来做一些秘密的事情。首先,要有一个SYN扫描(-sS),它只做建立TCP连接的前面一些工作,只发送一个设置SYN标志的TCP报文,一个RESET报文,那么nmap假设这个端口是关闭的,那么就不做任何事情了。如果接收到一个响应,它并不象正常的连接一样对这个报文进行确认,而是发送一个RET报文,TCP的三次握手还没有完成,许多服务将不会记录这次连接。 有的时候,nmap会告诉我们端口被过滤,这意味着有防火墙或端口过滤器干扰了nmap,使其不能准确的判断端口是打开还是关闭的,有的防火墙只能过滤掉进入的连接。 扫描协议 如果试图访问另一端无程序使用的UDP端口,主机将发回一个icmp“端口不可达”的提示消息,IP协议也是一样。每个传输层的IP协议都有一个相关联的编号,使用最多的是ICMP(1)、TCP(6)和UDP(17)。所有的IP报文都有一个“协议”域用于指出其中的传输层报文头所使用的协议。如果我们发送一个没有传输层报文头的原始IP报文并把其协议域编号为130[该编号是指类似IPSEC协议的被称为安全报文外壳或SPS协议],就可以判断这个协议是否在主机上实现了。如果我们得到的是ICMP协议不可达的消息,意味着该协议没有被实现,否则就是已经实现了,用法为-sO. 隐蔽扫描行为 nmap给出了几个不同的扫描选项,其中一些可以配套着隐藏扫描行为,使得不被系统日志、防火墙和IDS检测到。提供了一些随机的和欺骗的特性。具体例子如下: FTP反弹,在设计上,FTP自身存在一个很大的漏洞,当使用FTP客户机连接到FTP 服务器时,你的客户机在TCP端口21上与FTP服务器对话,这个TCP连接称为控制连接。FTP服务器现在需要另一条与客户机连接,该连接称为数据连接,在这条连接上将传送实际的文件数据,客户机将开始监听另一个TCP端口上从服务器发挥的数据连接,接下来执行一个PORT命令到服务器,告诉它建立一条数据连接到客户机的IP地址和一个新打开的端口,这种操作方法称为主动传输。许多客户机使用网络地址转换或通过防火墙与外界连接,所以主动传输FTP就不能正常工作,因为由服务器建立的客户机的连接通常不允许通过。 被动传输是大多数FTP客户机和服务器所使用的方法,因为客户机既建立控制连接又建立数据连接,这样可以通过防火墙或NAT了。

端口扫描程序的设计49681

课程设计 题目:端口扫描程序设计 院、系:计算机科学与技术学院网络工程系 班级: 学号: 姓名: 同组成员: 指导教师: 成绩:

一.系统设计的目标: 扫描器是网络信息收集的一种方法,从功能上可分为漏洞扫描器和端口扫描器。通过此次课程设计,能够掌握漏洞、端口的基础知识,掌握扫描器的基本原理并设计实现端口扫描和漏洞扫描程序。 二.系统原理: 常用的端口扫描技术有以下几种: 2.1 TCP connect()扫描: 2.1.1简介: 这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。 2.2.2优点: 不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,使用者可以通过同时打开多个套接字来加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。 2.2.3 缺点: 很容易被察觉,并且被防火墙将扫描信息包过滤掉。目标计算机的logs文件会显示一连串的连接和连接出错消息,并且能很快使它关闭。 2.2 TCP SYN扫描: 2.2.1简介: 这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP 连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态:返回RST表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。 2.2.2优点: 一般不会在目标计算机上留下记录。 2.2.3缺点: 必须要有root权限才能建立自己的SYN数据包。

目前主要端口扫描技术

目前主要端口扫描技术 目前主要的端口扫描技术有以下几种。 1.TCP connect Scan(TCP连接扫描) 这种方法也称之为“TCP全连接扫描”。它是最简单的一种扫描技术,所利用的是TCP协议的3次握手过程。它直接连到目标端口并完成一个完整的3次握手过程(SYN、SYN/ACK和ACK)。操作系统提供的“connect()”函数完成系统调用,用来与目标计算机的端口进行连接。如果端口处于侦听状态,那么“connect()”函数就能成功。否则,这个端口是不能用的,即没有提供服务。 TCP连接扫描技术的一个最大的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处是速度快。如果对每个目标端口以线性的方式,使用单独的“connect()”函数调用,那么将会花费相当长的时间,用户可以同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许用户设置一个低的时间以用尽周期,并同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。目标计算机的日志文件会显示一连串的连接和连接出错的服务消息,目标计算机用户发现后就能很快使它关闭。 2.TCP SYN Scan(TCP同步序列号扫描) 若端口扫描没有完成一个完整的TCP连接,即在扫描主机和目标主机的一指定端口建立连接的时候,只完成前两次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全建立起来,所以这种端口扫描又称为“半连接扫描”,也称为“间接扫描”或“半开式扫描”(Half Open Scan)。 SYN扫描,通过本机的一个端口向对方指定的端口,发送一个TCP的SYN 连接建立请求数据报,然后开始等待对方的应答。如果应答数据报中设置了SYN 位和ACK位,那么这个端口是开放的;如果应答数据报是一个RST连接复位数据报,则对方的端口是关闭的。使用这种方法不需要完成Connect系统调用所封装的建立连接的整个过程,而只是完成了其中有效的部分就可以达到端口扫描的目的。 此种扫描方式的优点是不容易被发现,扫描速度也比较快。同时通过对MAC地址的判断,可以对一些路由器进行端口扫描,缺点是需要系统管理员的权限,不适合使用多线程技术。因为在实现过程中需要自己完成对应答数据报的查找、分析,使用多线程容易发生数据报的串位现象,也就是原来应该这个线程接收的数据报被另一个线程接收,接收后,这个数据报就会被丢弃,而等待线程只好在超时之后再发送一个SYN数据报,等待应答。这样,所用的时间反而会增加。 3.TCP FIN Scan(TCP结束标志扫描) 这种扫描方式不依赖于TCP的3次握手过程,而是TCP连接的“FIN”(结束)位标志。原理在于TCP连接结束时,会向TCP端口发送一个设置了FIN位的连接终止数据报,关闭的端口会回应一个设置了RST的连接复位数据报;而开放的端口则会对这种可疑的数据报不加理睬,将它丢弃。可以根据是否收到RST数据报来判断对方的端口是否开放。 此扫描方式的优点比前两种都要隐秘,不容易被发现。该方案有两个缺点:首先,要判断对方端口是否开放必须等待超时,增加了探测时间,而且容易得出错误的结论;其次,一些系统并没有遵循规定,最典型的就是Microsoft公司所开发的操作系统。这些系统一旦收到这样的数据报,无论端口是否开放都会回应一个RST连接复位数据报,这样一来,这种扫描方案对于这类操作系统是无效

端口扫描程序设计与实现

端口扫描程序设计与实现

课程设计报告 ( 2014-- 2015年度第2学期) 名称:网络综合实验 题目:端口扫描程序设计与实现 院系:计算机系 班级:网络1202 学号: 学生姓名: 指导教师:李丽芬曹锦刚刘晓峰 设计周数:2周 成绩: 日期:2015 年7 月5 日

网络综合实验 任务书 一、实验名称:端口扫描程序设计与实现 二、目的与要求 1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。 2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。 3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。 4.学生人数:1人。 三、主要内容 1.编写一个端口扫描程序,能够显示某个IP 或某段IP的计算机的某一个或某些端口是否正在工作。(1) 设定好一定的端口扫描范围,并设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通;(3) 创建socket,通过socket的connect 方法来连接远程IP地址以及对应的端口;(4) 如果返回false,表示端口没有开放,否则端口开放。 四、进度计划

五、设计成果要求 1.完成规定的实验任务,保质保量; 2.完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对实验思路的归纳和对问题解决过程的总结。 六、考核方式 1.平时成绩+验收答辩+实验报告; 2.五级分制。 学生姓名:韦笑 指导教师:李丽芬曹锦刚刘晓峰 2015 年7 月5 日 一、综合实验的目的与要求 1.目的:加深对《计算机网络体系结构》课程知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,加深对JAVA编程语言的使用,促进编程能力的提高,同时为网络编程打下一个比较好的基础。同时对实验的过程要有完全的了解。 2. 要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。 二、综合实验正文 1、主要方法 TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。发送方和接

简单端口扫描程序的实现

计算机网络课程设计 论文题目:简单端口扫描程序的实现 院(部)名称:计算机科学与工程学院 学生姓名: 专业:学号: 指导教师姓名: 报告提交时间: 报告答辩时间:(不填)

目录 一、设计要求 (3) 二、开发环境与工具 (3) 三、设计原理 (3) 四、系统功能描述及软件模块划分 (3) 五、设计步骤 (5) 六、关键问题及其解决方法 (5) 七、设计结果 (15) 八、软件使用说明 (16) 九、参考资料 (16)

一、设计要求 本系统实现了一个简单的端口扫描器。 1. 使用端口扫描对一台主机进行扫描,一台主机上有哪些端口是打开的; 2. 对一个网段进行 IP 扫描,显示出一个网段内有哪些主机是开机的。 二、开发环境与工具 Windows的pc机Jdk包,:具备网络环境并连入Internet。 三、设计原理 IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端。为了获得TCP服务,必须在发送机的一个端口上和接收机的一个端口上建立连接。TCP连接用两个连接端来区别,也就是(连接端1,连接端2)。连接端互相发送数据包。 端口扫描是在应用程序运行在 TCP 或者 UDP 协议之上工作的, 这些协议是众多应用程序使用的传输机制,端口扫描是通过扫描主机确定哪一些 TCP 和UDP 端口可以访问的过程. 端口扫描常见的几种类型: TCP Connect()扫描 SYN 扫描 NULL 扫描 ACK 扫描 Xmas-Tree Dumb 扫描。 Ping命令经常用来对TCP/IP网络进行诊断。通过目标计算机发送一个数据包,让它将这个数据包反送回来,如果返回的数据包和发送的数据包一致,那就是说你的PING命令成功了。通过这样对返回的数据进行分析,就能判断计算机是否开着,或者这个数据包从发送到返回需要多少时间。 Tracert命令用来跟踪一个消息从一台计算机到另一台计算机所走的路径, rusers和finger 通过这两个命令,你能收集到目标计算机上的有关用户的消息。 扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。 总之,端口扫描”通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。“端口扫描”行为的一个重要特征,是在短时期内有很多来自相同的信源地址,传向不同的目的、地端口的包。对于用端口扫描进行攻击的人来说,攻击者总是可以做到在获得扫描结果的同时,使自己很难被发现或者说很难被逆向寻踪。为了隐藏攻击,攻击者可以慢慢地进行扫描。除非目标系统通常闲着(这样对一个没有listen()端口的数据包都会引起管理员的注意),有很大时间间隔的端口扫描是很难被识别的。隐藏源地址的方法是发送大量的欺骗性的端口扫描数据包(如1 000个),其中只有一个是从真正的源地址来的。这样即使全部数据包都被察觉,被记录下来,也没有人知道哪个是真正的信源地址。能发现的仅仅是“曾经被扫描过”的地址。也正因为这样,那些黑客们才乐此不疲地继续大量使用,这种端口扫描技术,来达到他们获取目标计算机信息,并进行恶意攻击的目的。

端口扫描程序设计与实现

端口扫描程序设计 与实现

课程设计报告 ( -- 第2学期) 名称:网络综合实验 题目:端口扫描程序设计与实现 院系:计算机系 班级:网络1202 学号: 学生姓名: 指导教师:李丽芬曹锦刚刘晓峰 设计周数: 2周 成绩: 日期:年 7 月 5 日

网络综合实验 任务书 一、实验名称:端口扫描程序设计与实现 二、目的与要求 1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP 的计算机的端口工作情况。 2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。 3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。 4.学生人数:1人。 三、主要内容 1.编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。(1) 设定好一定的端口扫描范围,并设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通;(3) 创立socket,经过socket的connect方法来连接远程IP地址以及对应的端口;(4) 如果返回false,表示端口没有开放,否则端口开放。 四、进度计划

五、设计成果要求 1.完成规定的实验任务,保质保量; 2.完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对实验思路的归纳和对问题解决过程的总结。 六、考核方式 1.平时成绩+验收答辩+实验报告; 2.五级分制。 学生姓名:韦笑 指导教师:李丽芬曹锦刚刘晓峰 年7 月 5 日 一、综合实验的目的与要求 1.目的:加深对《计算机网络体系结构》课程知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,加深对JAVA编程语言的使用,促进编程能力的提高,同时为网络编程打下一个比较好的基础。同时对实验的过程要有完全的了解。

相关文档
最新文档