文档库 最新最全的文档下载
当前位置:文档库 › 多线程端口扫描—李梦然

多线程端口扫描—李梦然

多线程端口扫描—李梦然
多线程端口扫描—李梦然

计算机网络课程课程设计任务书

计算机网络设计说明书

学院名称:计算机与信息工程学院

班级名称:网络工程122班

学生姓名:李梦然

学号:2012211428

题目:基于多线程的端口扫描程序

指导教师

姓名:张燕玲

起止日期:2014年6月13日至2014年6月20日

一、选题背景

随着互联网的飞速发展,网络入侵行为日益严重,网络安全成为人们关注的焦点。端口扫描技术是网络安全扫描技术的重要技术之一。对目标系统进行端口扫描,是网络系统入侵者进入目标系统的第一步。网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。

现实世界中的很多过程都具有多条线索同时动作的特性。Java语言的一大特性就是内置对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。

端口是由计算机的通信协议TCP/IP协议定义的。其中规定,有IP地址和端口号作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机的进程。

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

利用TCP connect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。利用多线程技术实现了对一目标IP进行设定数目的端口扫描,对多IP段的特定端口进行扫描。

二、方案设计

多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小。线程数为0~200之间的一个数。点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。

本系统要实现的功能:

①端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台。

②图像显示功能:显示图形界面,以及显示扫描结果。

③多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。

④异常抛出功能:对于明显的数据错误,能提示出错误的类型并阻止程序的运行。

流程图:

三、详细设计

本程序是由3 模块组成的:图形界面,按钮的监听及数据检验,端口扫描

(1)图形用户界面是软件产品和用户交互的接口,是软件产品中用户直接可以看到并直接操作的部分。

public static JFrame main=new JFrame("基于JAVA的多线程TCP端口扫描程序

\\李梦然");

public static JTextArea Result=new JTextArea("",4,44);

public static JTextField hostname=new JTextField("localhost",8);

public static JTextField minPort=new JTextField("0",4);

public static JTextField maxPort=new JTextField("1000",4);

public static JTextField maxThread=new JTextField("100",3);

public static JDialog DLGError=new JDialog(main,"错误!");

public static Label DLGINFO=new Label("");

public static Label status=new Label("扫描状态:未开始");

public Scanner()

{

main.setSize(500,220);

main.setLocation(350,300);

main.setResizable(false);

DLGError.setSize(300,100);

DLGError.setLocation(450,400);

Result.setBackground(Color.pink);

JPanel mainPanel = new JPanel();

Label H=new Label("ip:");

Label P1=new Label("端口范围:");

Label P2=new Label("—");

Label TNUM=new Label("线程数:");

Label RST=new Label("扫描结果: ");

Result.setLineWrap(true);

Result.setEditable(false);

JButton OK = new JButton("确定");

JButton Submit = new JButton("确定");

JButton Cancel = new JButton("取消");

Container mPanel = main.getContentPane();

Container dPanel = DLGError.getContentPane();

mPanel.setLayout(new FlowLayout(FlowLayout.LEFT));

dPanel.setLayout(new FlowLayout(FlowLayout.CENTER));

mPanel.add(H);

mPanel.add(hostname);

mPanel.add(P1);

mPanel.add(minPort);

mPanel.add(P2);

mPanel.add(maxPort);

mPanel.add(TNUM);

mPanel.add(maxThread);

mPanel.add(RST);mPanel.add(Result);

mPanel.add(status);

mPanel.add(Submit);

mPanel.add(Cancel);

dPanel.add(DLGINFO);

dPanel.add(OK);

main.setVisible(true);

Submit.addActionListener(new SubmitAction());

Cancel.addActionListener(new CancleAction());

OK.addActionListener(new OKAction());

(2)按钮监听是整个程序的时间驱动设计部分。并且显示运行结果。数据处理是对用户输入的数据进行检验是否错误,来进行报错处理。

class CancleAction implements ActionListener

{

public void actionPerformed (ActionEvent e)

{

System.exit(1);

}

}

class SubmitAction implements ActionListener

{

public void actionPerformed (ActionEvent a)

{

int min;

int max;

int num;

try

{

min=Integer.parseInt(Scanner.minPort.getText());

max=Integer.parseInt(Scanner.maxPort.getText());

num=Integer.parseInt(Scanner.maxThread.getText());

}

catch(NumberFormatException e)

{

Scanner.DLGINFO.setText("错误的端口号或线程数!端口号和线程数

必须为整数!");

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

try

{

Saomiao.hostAddress=InetAddress.getByName(Scanner.hostname.getTex

t());

}

catch(UnknownHostException e)

{

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

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

if(min<0 || min>65535 || min>max)

{

Scanner.DLGINFO.setText("最小端口必须是0-65535并且小于最大

端口的整数!");

Scanner.DLGError.setVisible(true);

return;

}

else

Saomiao.minport=min;

if(max<0 || max>65535 || max

{

Scanner.DLGINFO.setText("最大端口必须是0-65535并且大于最小

端口的整数!");

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

else

Saomiao.maxport=max;

if(num<1 || num>200)

{

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

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

Scanner.Result.setText("");

Scanner.Result.append("正在扫描

"+Scanner.hostname.getText()+" 线程数

"+Scanner.maxThread.getText()+"\n");

Scanner.Result.append("开放端口: ");

for(int i=0;i

{

new Saomiao(i).start();

}

}

}

class OKAction implements ActionListener

{

public void actionPerformed (ActionEvent e)

{

Scanner.DLGError.dispose();

}

}

(3)端口扫描程序主要运用Socket编程。其工作过程包含以下四个基本步骤:创建通信双方的socket链接,即分别为服务器和客户端创建Socket对象,建立Socket连接;打开连接到Socket的输入流和输出流;按照一定的协议对Socket进行读/写操作;关闭连接。

static class Saomiao extends Thread

{

public static InetAddress hostAddress;

public static int minport;

public static int maxport;

private int threadnum;

public Saomiao(int threadnum)

{

this.threadnum = threadnum;

}

public void run()

{

int i;

Socket theTCPsocket;

for (i = minport+threadnum; i < maxport; i +=

Integer.parseInt(Scanner.maxThread.getText()))

{

Scanner.status.setText("扫描状态:正在扫描 "+i+" 端口");

try

{

theTCPsocket=new Socket(hostAddress,i);

theTCPsocket.close();

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

switch(i)

{

case 21:

S canner.Result.append("(FTP)");

break;

case 23:

Scanner.Result.append("(TELNET)");

break;

case 25:

Scanner.Result.append("(SMTP)");

break;

case 80:

Scanner.Result.append("(HTTP)");

break;

case 110:

Scanner.Result.append("(POP)");

break;

case 139:

Scanner.Result.append("(netBIOS)");

break;

case 161:

Scanner.Result.append("(SNMP)");

break;

case 443:

Scanner.Result.append("(HTTPS)");

break;

case 1433:

Scanner.Result.append("(SQL)");

break;

case 8000:

Scanner.Result.append("(OICQ)");

break;

}

Scanner.Result.append(",");

}catch (IOException e){}

}

if (i==maxport)

{

Scanner.Result.append("\n"+"扫描完成...");

Scanner.status.setText("扫描状态:完成!");

}

}

}

四、结果分析

运行要求与环境

(1)性能要求

实时性好、可靠性强、不占用系统太多的内存和存储空间。

(2)设计约束

开发工具:J2SDK 1.6.0 Eclipse

运行环境:Windows 8

能实现用户所定义的各项需求。

运行程序流程图:

(1)Eclipse界面:

(2)程序初始界面:

(3)程序运行结果:

(4)IP地址报错:

(5)端口范围报错:

(6)线程数报错:

五、结论

在此次课程设计中,遇到了一些问题,如:程序功能不能完全实现,对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,以前只学习到了一些最基本的知识,要在短时间内用Java语言来开发软件是一个较大的挑战;对于开发软件的流程不熟悉,适应起来比较慢,编写需求说明书和设计规格说明书时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。

对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,多看些项目的源代码。对于书上以及网站上下载的资料中的Java实例必须理解,还有多跟精通Java语言的老师和同学请教和交流,取其精华。对于实际动手能力与软件开发的流程的适应,必须多进行实际的练习与操作,才能有所进步。

这次课程设计令我感受很多。从拿到题目到编写Java程序;然后请教别人慢慢研究琢磨;从理论到实践;从失败到成功;忘不了我坐在电脑前苦苦思

索,高温下熬夜地编程的疲惫;忘不了因沉迷于编程却耽误了吃饭时间而挨饿辛酸;忘不了……这其中了不少的东西,磨砺了我的意志;同时还巩固了以前所学的知识,学到了不少书本上没有的知识;学到了很多Java编程知识,并学会了简单的使用Eclipse来开发Java程序的一些使用技巧这次课程设计是对我本学期所学的知识的检验,由此我发现了不少的问题。可以说它给了我一次自我评估的机会。通过设计让我知道了那些方面我还是有欠缺的,促使我花时间弥补。

临近考试,时间太紧迫,致使程序实现的功能在方法上也许不是很完美,但我以后会多向老师请教,自己也要加强对Java 的学习。努力进一步提高自己的编程水平。

此次的课程设计,对我来说撰写文档似乎是一个更大的挑战。撰写文档不仅要求我们要对自己程序非常熟悉:程序的总体框架,功能,如何实现,存在什么问题等,同时还要求我们有清晰的思维和准确的表达能力以及严密的逻辑性。因此,写完这篇文档对于我们自身来说自然是获益匪浅的。

参考文献

[1] 赵生慧.Java面向对象程序设计.北京:中国水利水电出版社,2010。

[2] 谢希仁.计算机网络(第五版).北京:电子工业出版社,2011。

[3] 杨静宇. Java程序设计与应用开发(第2版) [M]. 北京: 清华大学出版社, 2009。

学生签名:填表日期:年月日

附件

/*基于多线程端口扫描程序源代码*/

import https://www.wendangku.net/doc/b78353192.html,.*;

import java.io.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Scanner

{

public static JFrame main=new JFrame("基于JAVA的多线程TCP端口扫描程序\\李梦然");

public static JTextArea Result=new JTextArea("",4,44);

public static JTextField hostname=new JTextField("localhost",8);

public static JTextField minPort=new JTextField("0",4);

public static JTextField maxPort=new JTextField("1000",4);

public static JTextField maxThread=new JTextField("100",3);

public static JDialog DLGError=new JDialog(main,"错误!");

public static Label DLGINFO=new Label("");

public static Label status=new Label("扫描状态:未开始");

public Scanner()

{

main.setSize(500,220);

main.setLocation(350,300);

main.setResizable(false);

DLGError.setSize(300,100);

DLGError.setLocation(450,400);

Result.setBackground(Color.pink);

JPanel mainPanel = new JPanel();

Label H=new Label("ip:");

Label P1=new Label("端口范围:");

Label P2=new Label("—");

Label TNUM=new Label("线程数:");

Label RST=new Label("扫描结果: ");

Result.setLineWrap(true);

Result.setEditable(false);

JButton OK = new JButton("确定");

JButton Submit = new JButton("确定");

JButton Cancel = new JButton("取消");

Container mPanel = main.getContentPane();

Container dPanel = DLGError.getContentPane();

mPanel.setLayout(new FlowLayout(FlowLayout.LEFT));

dPanel.setLayout(new FlowLayout(FlowLayout.CENTER));

mPanel.add(H);

mPanel.add(hostname);

mPanel.add(P1);

mPanel.add(minPort);

mPanel.add(P2);

mPanel.add(maxPort);

mPanel.add(TNUM);

mPanel.add(maxThread);

mPanel.add(RST);mPanel.add(Result);

mPanel.add(status);

mPanel.add(Submit);

mPanel.add(Cancel);

dPanel.add(DLGINFO);

dPanel.add(OK);

main.setVisible(true);

Submit.addActionListener(new SubmitAction());

Cancel.addActionListener(new CancleAction());

OK.addActionListener(new OKAction());

}

public static void main(String[] args){

new Scanner();

}

class CancleAction implements ActionListener

{

public void actionPerformed (ActionEvent e)

{

System.exit(1);

}

}

class SubmitAction implements ActionListener

{

public void actionPerformed (ActionEvent a)

{

int min;

int max;

int num;

try

{

min=Integer.parseInt(Scanner.minPort.getText());

max=Integer.parseInt(Scanner.maxPort.getText());

num=Integer.parseInt(Scanner.maxThread.getText());

}

catch(NumberFormatException e)

{

Scanner.DLGINFO.setText("错误的端口号或线程数!端口号和线程数

必须为整数!");

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

try

{

Saomiao.hostAddress=InetAddress.getByName(Scanner.hostname.getTex

t());

}

catch(UnknownHostException e)

{

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

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

if(min<0 || min>65535 || min>max)

{

Scanner.DLGINFO.setText("最小端口必须是0-65535并且小于最大

端口的整数!");

Scanner.DLGError.setVisible(true);

return;

}

else

Saomiao.minport=min;

if(max<0 || max>65535 || max

{

Scanner.DLGINFO.setText("最大端口必须是0-65535并且大于最小

端口的整数!");

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

else

Saomiao.maxport=max;

if(num<1 || num>200)

{

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

Scanner.DLGError.setVisible(true);

Scanner.status.setText("扫描状态:未开始");

return;

}

Scanner.Result.setText("");

Scanner.Result.append("正在扫描

"+Scanner.hostname.getText()+" 线程数

"+Scanner.maxThread.getText()+"\n");

Scanner.Result.append("开放端口: ");

for(int i=0;i

{

new Saomiao(i).start();

}

}

}

class OKAction implements ActionListener

{

public void actionPerformed (ActionEvent e)

{

Scanner.DLGError.dispose();

}

}

static class Saomiao extends Thread

{

public static InetAddress hostAddress;

public static int minport;

public static int maxport;

private int threadnum;

public Saomiao(int threadnum)

{

this.threadnum = threadnum;

}

public void run()

{

int i;

Socket theTCPsocket;

for (i = minport+threadnum; i < maxport; i +=

Integer.parseInt(Scanner.maxThread.getText()))

{

Scanner.status.setText("扫描状态:正在扫描 "+i+" 端口");

try

{

theTCPsocket=new Socket(hostAddress,i);

theTCPsocket.close();

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

switch(i)

{

case 21:

S canner.Result.append("(FTP)");

break;

case 23:

Scanner.Result.append("(TELNET)");

break;

case 25:

Scanner.Result.append("(SMTP)");

break;

case 80:

Scanner.Result.append("(HTTP)");

break;

case 110:

Scanner.Result.append("(POP)");

break;

case 139:

Scanner.Result.append("(netBIOS)");

break;

case 161:

Scanner.Result.append("(SNMP)");

break;

case 443:

Scanner.Result.append("(HTTPS)");

break;

case 1433:

Scanner.Result.append("(SQL)");

break;

case 8000:

Scanner.Result.append("(OICQ)");

break;

}

Scanner.Result.append(",");

}catch (IOException e){}

}

if (i==maxport)

{

Scanner.Result.append("\n"+"扫描完成...");

Scanner.status.setText("扫描状态:完成!");

}

}

}

}

实验2-网络端口的扫描

南昌航空大学实验报告 二〇一三年十一月八日 课程名称:信息安全实验名称:实验网络端口扫描 班级:姓名:同组人: 指导教师评定:签名: 一、实验目的 通过练习使用网络端口扫描器,可以了解目标主机开放的端口和服务程序,从而获取系统的有用信息,发现网络系统的安全漏洞。在实验中,我们将在操作系统下使用进行网络端口扫描实验,通过端口扫描实验,可以增强学生在网络安全方面的防护意识。利用综合扫描软件“流光”扫描系统的漏洞并给出安全性评估报告。 二、实验原理 .端口扫描的原理 对网络端口的扫描可以得到目标计算机开放的服务程序、运行的系统版本信息,从而为下一步的入侵做好准备。对网络端口的扫描可以通过执行手工命令实现,但效率较低;也可以通过扫描工具实现,效率较高。 扫描工具根据作用的环境不同,可分为两种类型:网络漏洞扫描工具和主机漏洞扫描工具。 .端口的基础知识 为了了解扫描工具的工作原理,首先简单介绍一下端口的基本知识。 端口是协议中所定义的,协议通过套接字()建立起两台计算机之间的网络连接。套接字采用[地址:端口号]的形式来定义,通过套接字中不同的端口号可以区别同一台计算机上开启的不同和连接进程。对于两台计算机间的任意一个连接,一台计算机的一个[地址:端口]套接字会和另一台计算机的一个[地址:端口]套接字相对应,彼此标识着源端、目的端上数据包传输的源进程和目标进程。这样网络上传输的数据包就可以由套接字中的地址和端口号找到需要传输的主机和连接进程了。由此可见,端口和服务进程一一对应,通过扫描开放的端口,就可以判断出计算机中正在运行的服务进程。 /的端口号在~范围之内,其中以下的端口保留给常用的网络服务。例如,端口为服务,端口为服务,端口为服务,端口为服务,端口为服务等。 .扫描的原理 扫描的方式有多种,为了理解扫描原理,需要对协议简要介绍一下。 一个头的数据包格式如图所示。它包括个标志位,其中:、、、。 图数据包格式 根据上面介绍的知识,下面我们介绍基于和协议的几种端口扫描方式。

网络安全实验---NMAP扫描

一、实验目的和要求 了解信息搜集的一般步骤 学会熟练使用ping命令 学会利用Nmap等工具进行信息搜集 二、实验内容和原理 1.信息搜集的步骤 攻击者搜集目标信息一般采用七个基本的步骤: (1)找到初始信息,比如一个IP地址或者一个域名; (2)找到网络地址范围,或者子网掩码; (3)找到活动机器; (4)找到开放端口和入口点; (5)弄清操作系统; (6)弄清每个端口运行的是哪种服务; (7)画出网络结构图。 2.ping命令探测技巧 使用ping可以测试目标主机名称和IP地址,验证与远程主机的连通性,通过将ICMP 回显请求数据包发送到目标主机,并监听来自目标主机的回显应答数据包来验证与一台或多台远程主机的连通性,该命令只有在安装了TCP/IP协议后才可以使用。 ping命令格式:ping [选项] 目标主机。常用选项见表19-1-1。 表19-1-1 ping命令常用选项

生存时间(TTL):指定数据报被路由器丢弃之前允许通过的网段数量。TTL是由发送主机设置的,以防止数据包在网络中循环路由。转发IP数据包时,要求路由器至少将TTL 减小1。 TTL字段值可以帮助我们猜测操作系统类型,如表19-1-2所示。 表19-1-2 各操作系统ICMP回显应答TTL对照 3.Nmap介绍 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取哪台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口映射),碎片扫描,以及灵活的目标和端口设定。 nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。 根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP

基于多线程的端口扫描程序

计算机网络课程课程设计任务书

计算机网络设计说明书 学院名称:计算机与信息工程学院 班级名称:网络工程122班 学生姓名: 学号: 题目:基于多线程的端口扫描程序 指导教师 姓名: 起止日期:2015年6月13日至2015年6月20日

一、选题背景 随着互联网的飞速发展,网络入侵行为日益严重,网络安全成为人们关注的焦点。端口扫描技术是网络安全扫描技术的重要技术之一。对目标系统进行端口扫描,是网络系统入侵者进入目标系统的第一步。网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。 现实世界中的很多过程都具有多条线索同时动作的特性。Java语言的一大特性就是内置对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。 端口是由计算机的通信协议TCP/IP协议定义的。其中规定,有IP地址和端口号作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机的进程。 可见端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,就可以判断出目标计算机有哪些通信进程正在等待连接。 利用TCP connect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。利用多线程技术实现了对一目标IP进行设定数目的端口扫描,对多IP段的特定端口进行扫描。 二、方案设计 多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小。线程数为0~200之间的一个数。点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。 本系统要实现的功能: ①端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台。 ②图像显示功能:显示图形界面,以及显示扫描结果。 ③多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。 ④异常抛出功能:对于明显的数据错误,能提示出错误的类型并阻止程序的运行。 流程图:

网络扫描实验

实验一:网络扫描实验 【实验目的】 了解扫描的基本原理,掌握基本方法,最终巩固主机安全 【实验内容】 1、学习使用Nmap的使用方法 2、学习使用漏洞扫描工具 【实验环境】 1、硬件PC机一台。 2、系统配置:操作系统windows XP以上。 【实验步骤】 1、端口扫描 解压并安装ipscan15.zip,扫描本局域网内的主机 【实验背景知识】 1、扫描及漏洞扫描原理见第四章黑客攻击技术.ppt NMAP使用方法 扫描器是帮助你了解自己系统的绝佳助手。象Windows 2K/XP这样复杂的操作系统支持应用软件打开数百个端口与其他客户程序或服务器通信,端口扫描是检测服务器上运行了哪些服务和应用、向Internet或其他网络开放了哪些联系通道的一种办法,不仅速度快,而且效果也很不错。 Nmap被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务。它支持多种协议的扫描如UDP,TCP connect(),TCP SYN (half open), ftp proxy (bounce attack),Reverse-ident, ICMP (ping sweep), FIN, ACK sweep,X

mas Tree, SYN sweep, 和Null扫描。你可以从SCAN TYPES一节中察看相关细节。nmap还提供一些实用功能如通过tcp/ip来甄别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。 图1 图2

图3 1)解压nmap-4.00-win32.zip,安装WinPcap 运行cmd.exe,熟悉nmap命令(详见“Nmap详解.mht”)。 图4

基于多线程的端口、漏洞扫描工具的设计毕业设计

目录 1 引言 1.1课题的来源、意义和目的 (1) 1.2完成的内容与设计结果 (1) 1.2.1 设计内容 (1) 1.2.2 设计结果 (2) 2 总体设计与实施方案 2.1总体设计 (3) 2.1.1 设计目标 (3) 2.1.2 系统结构 (4) 2.2实施方案 (4) 2.2.1 开发平台和工具的选择 (4) 2.2.2 方案实施步骤 (4) 2.2.3 关键技术介绍 (5) 3 系统的实现 3.1准备阶段 (7) 3.2主要功能、界面的设计 (7) 3.2.1 系统菜单界面、功能的设计 (8) 3.2.2 扫描系统界面、功能的设计 (10) 3.2.3 端口扫描模块设计 (13) 3.2.4 漏洞扫描模块设计 (21) 3.2.5 弱口令扫描模块设计 (26) 3.2.6 本地系统监控模块设计 (31) 3.2.7 日志查询模块设计 (34) 3.2.8 DOS工具集界面、功能的设计 (36) 3.2.9 字典管理界面、功能的设计 (39) 4 程序调试 5 设计结果与改进要求 5.1设计结果 (42) 5.2改进要求及目标 (42) 参考文献 (43) 致谢 (44)

1 引言 1.1 课题的来源、意义和目的 随着科学技术的发展,21世纪的人类已经生活在信息时代,计算机技术与网络技术已经深入到人类社会的各个方面。近年来网络的迅速发展,给人们的生活带来了新的感受,同时人类社会对于网络的依赖性也越来越强。信息技术的飞速发展给人们带来了极大的便利,同时也引入了巨大的安全隐患。因此,网络安全问题越来越引起人们的广泛关注,并成为当今网络技术领域研究的重点。 目前,大多数的网络攻击,如:黑客攻击、木马、病毒都是通过安全漏洞侵入目标主机的。如果我们能够根据具体的应用环境,尽可能早地通过网络扫描来发现这些漏洞,并及时采取适当的措施进行修补,就可以预防安全威胁的发生。因此,网络安全管理者需要一套工具能够发现网络主机的脆弱性。端口、漏洞扫描技术能够检测出网络中潜在的安全漏洞,从而使网络管理者一目了然,了解自身网络系统存在的问题。 根据当前网络安全现状和现有扫描技术的不足,本文提出了基于多线程的端口、漏洞扫描器的设计,来实现端口扫描、漏洞扫描、弱口令破解、日志分析等一系列功能,辅助网络管理者了解自身系统的安全现状。 1.2 完成的内容与设计结果 1.2.1 设计内容 本系统是根据当今网络中主机的脆弱性进行需求分析后,再开发设计的,具体实现的功能和要求如下: (1)对本地主机的进程进行监控,并能够管理; (2)对本地主机的实时信息做全面收集,并呈现出来; (3)利用多线程技术,对远程主机的端口进行扫描,包括:基本端口扫描、自定义端口扫描、网段存活扫描; (4)对远程主机的弱口令进行猜解,包括:FTP弱口令扫描、POP3弱口令扫描; (5)对远程主机的常见威胁、漏洞进行扫描评估; (6) 对扫描结果进行存储,提供丰富的日志分析;

实验3综合扫描及攻击工具的使用

实验3 综合扫描及攻击工具的使用 1 实验目的 1、通过使用综合扫描工具,扫描系统的漏洞并给出安全性评估报告,加深对系统漏洞的理解。 2、通过使用攻击工具了解远程攻击的方法,理解远程攻击的步骤和手段。 2 实验环境 VMware中预装Windows XP/7/2003/2008R2的计算机,X-Scan,Nmap,Winshell和NC等工具。 3 实验原理或背景知识 3.1 扫描工具的工作原理 综合扫描工具是一种自动检测系统和网络安全弱点的程序。其工作原理是,首先获得主机系统在网络服务、版本信息、Web应用等方面的相关信息,然后采用模拟攻击的方法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱口令等,如果模拟攻击成功,则视为漏洞存在。此外,也可以根据系统事先定义的系统安全漏洞库,对系统可能存在的、已知的安全漏洞逐项进行扫描和检查,按照规则匹配的原则将扫描结果与安全漏洞库进行对比,如满足匹配条件,则视为漏洞存在。 3.2 X-Scan简介 1、版本介绍 X-Scan是一个完全免费漏洞扫描软件,由“安全焦点”开发。对于黑客们来讲,X-Scan 是一款非常优秀的扫描器,现在的版本为X-Scan v3.3。从3.0及后续版本X-Scan提供了简单的插件开发包,便于有编程基础的朋友自己编写或将其他调试通过的代码修改为X-Scan插件。 2、X-Scan的使用 运行解压文件夹下的xscan_gui,即进入X-Scan,首先可以通过“普通信息”查看X-Scan 的使用,如图1所示。

上面是非常简洁的GUI界面。菜单栏如图2所示: 图2 菜单栏 我们点击第一个按钮,在弹出的“扫描参数”中,有如下几个参数可选: (1)检测范围:该模块指定您要扫描的对象,本地服务器还是网络中的计算机。默认 是localhost,这意味着你扫描的是本地计算机。范围也可以是1个IP段,方式如下: 223.221.21.0-223.221.21.100 这就说明你扫描的范围是在这两个IP范围内所有的计算机。 (2)全局设置 该功能模块包括以下4种功能子模块:扫描模块、并发扫描、扫描报告以及其他设置。 扫描模块:该列表包含了你所要扫描的项目、开放服务、NT-SERVER弱口令、NETBIOS 信息、SNMP信息等等的20个选项。 并发扫描:该模块限制了并发扫描的主机数量以及并发线程数量。 扫描报告:该功能模块是在您完成您的扫描后,X-Scan将以什么样的形式反馈扫描报 告。有3种文件参数:HTML,XML,TXT。默认的为localhost_report.HTML。 其他设置:该功能可以帮助您处理一些扫描过程中的问题,包括跳过没有响应主机,无 条件扫描等等。 (3)插件设置 该项目包括了端口相关设置,SNMP相关设置,NETBIOS相关设置,漏洞检测脚本设置, CGI相关设置,字典文件设置这6项设置。 端口相关设置:该模块将根据您的要求设置扫描的端口以及扫描方式。默认的端口扫描 参数为:7,9,13,19,21,22,23,25,53,79,80,110,111,119,135,139,143,

网络扫描及安全评估实验报告

一、实验目的 ●掌握网络端口扫描器的使用方法,熟悉常见端口和其对应的服务程序,掌 握发现系统漏洞的方法。 ●掌握综合扫描及安全评估工具的使用方法,了解进行简单系统漏洞入侵的 方法,了解常见的网络和系统漏洞以及其安全防护方法。 二、实验原理 ●端口扫描原理 ●端口扫描向目标主机的TCP/IP服务端口发送探测数据包,并记录 目标主机的响应。通过分析响应来判断服务端口是打开还是关闭, 就可以得知端口提供的服务或信息。 ●端口扫描主要有经典的扫描器(全连接)、SYN(半连接)扫描器、 秘密扫描等。 ●全连接扫描:扫描主机通过TCP/IP协议的三次握手与目标主机的 指定端口建立一次完整的连接。建立连接成功则响应扫描主机的 SYN/ACK连接请求,这一响应表明目标端口处于监听(打开)的 状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送 RST的响应。 ●半连接(SYN)扫描:若端口扫描没有完成一个完整的TCP连接, 在扫描主机和目标主机的一指定端口建立连接时候只完成了前两 次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全 建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。 ●TCP FIN(秘密)扫描:扫描方法的思想是关闭的端口会用适当的 RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数 据包的回复。 ●综合扫描和安全评估技术工作原理 ●获得主机系统在网络服务、版本信息、Web应用等相关信息,然后 采用模拟攻击的方法,对目标主机系统进行攻击性的安全漏洞扫 描,如果模拟攻击成功,则视为漏洞存在。最后根据检测结果向系 统管理员提供周密可靠的安全性分析报告。

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

滁州学院 课程设计报告 课程名称: 设计题目:基于多线程的端口扫描程序 院部:计算机与信息工程学院 专业:网络工程 组别:第六组 起止日期: 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 方法可以将组件一一放在每个表格

端口扫描实验报告

综合实验报告 ( 2010 -- 2011 年度第二学期) 名称:网络综合实验 题目:端口扫描程序 院系:信息工程系 班级: 学号: 学生姓名: 指导教师:鲁斌李莉王晓霞张铭泉设计周数: 2 周 成绩: 日期:2011年7月1日

一、综合实验的目的与要求 1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。 2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。 3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。 4.学生要求人数:1人。 二、综合实验正文 1.端口扫描器功能简介:服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如远程系统是否支持匿名登陆、是否存在可写的FTP目录、是否开放TELNET 服务和HTTPD服务等。 2.实验所用的端口扫描技术:端口扫描技术有TCP connect()扫描、TCP SYN扫描、TCP FIN 扫描、IP段扫描等等。本次实验所用的技术是TCP connect()扫描,这是最基本的TCP 扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。 3.实验具体实现方案:编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。基本工作过程如下: (1) 设定好一定的端口扫描范围; (2) 设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通; (3) 创建socket,通过socket的connect方法来连接远程IP地址以及对应的端口; (4) 如果返回false,表示端口没有开放,否则端口开放。 4.有关TCP/IP的知识: 4.1套接字概念 1)在网络中要全局地标识一个参与通信的进程,需要采用三元组:协议、主机IP地址、端口号。

目前主要端口扫描技术

目前主要端口扫描技术 目前主要的端口扫描技术有以下几种。 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连接复位数据报,这样一来,这种扫描方案对于这类操作系统是无效

端口扫描工具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了。

端口扫描实验报告

网络端口扫描实验报告 一、网络端口扫描简介 TCP/IP协议在网络层是无连接的,而“端口”,就已经到了传输层。端口便是计算机与外部通信的途径。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。在手工进行扫描时,需要熟悉各种命令,对命令执行后的输析出进行分,效率较低。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。扫描工具根据作用的环境不同可分为:网络漏洞扫描工具和主机漏洞扫描工具。前者指通过网络检测远程目标网络和主机系统所存在漏洞的扫描工具。后者指在本机运行的检测本地系统安全漏洞的扫描工具。本实验主要针对前者。 端口是TCP协议中定义的,TCP协议通过套接字(socket)建立起两台计算机之间的网络连接。它采用【IP地址:端口号】形式定义,通过套接字中不同的端口号来区别同一台计算机上开启的不同TCP和UDP连接进程。端口号在0~~65535之间,低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。这些常见的服务可以划分为使用TCP端口(面向连接如打电话)和使用UDP端口

(无连接如写信)两种。端口与服务进程一一对应,通过扫描开放的端口就可以判断计算机中正在运行的服务进程。 二、实验目的 1.了解熟悉MFC及的基本原理和方法。 2.加深对tcp的理解,学习端口扫描技术和,原理熟悉socket编程。 3.通过自己编程实现简单的IP端口扫描器模型。 4.通过端口扫描了解目标主机开放的端口和服务程序。 三、实验环境 Windows操作系统 VC++6.0开发环境 四、实验设计 实验原理 通过调用socket函数connect()连接到目标计算机上,完成一次完整的三次握手过程,如果端口处于侦听状态,那么connect()就可以成功返回,否则这个端口不可用,即没有提供服务。 实验内容 1. 设计实现端口扫描器 2. IP地址、端口范围可以用户输入。 3. 要求有有好的可视化操作界面。 实验步骤: 1、用户界面:使用vc6.0里的MFC来开发用户界面 2、端口扫描:使用socket函数中的connect()连接计算机来判定目标计算机是否开放了要测试的端口 五、代码实现 #include #include #pragma comment(lib,"wsock32.lib") #define ZERO (fd_set *)0 int maxth, scanok, scannum; int portip, hoststart, hoststop, startport, endport; long searchnum, searched; void usage(char *); void playx(int); void setip2(char *); void customport(char *, char *, char *); void portscannow(int); int main(int argc, char *argv[]) { WSADATA wsadata; system("cls.exe"); printf("\r\n============== 命令行端口扫描器PortScanner V1.0 ==============");

实验报告-网络扫描与监听

信息安全实验报告 学号: 学生姓名: 班级:

实验一网络扫描与监听 一、实验目的 网络扫描是对整个目标网络或单台主机进行全面、快速、准确的获取信息的必要手段。通过网络扫描发现对方,获取对方的信息是进行网络攻防的前提。该实验使学生了解网络扫描的内容,通过主机漏洞扫描发现目标主机存在的漏洞,通过端口扫描发现目标主机的开放端口和服务,通过操作系统类型扫描判断目标主机的操作系统类型。 通过该实验,了解网络扫描的作用,掌握主机漏洞扫描、端口扫描、操作系统类型扫描软件的使用的方法,能够通过网络扫描发现对方的信息和是否存在漏洞。要求能够综合使用以上的方法来获取目标主机的信息。 而网络监听可以获知被监听用户的敏感信息。通过实验使学生了解网络监听的实现原理,掌握网络监听软件的使用方法,以及对网络中可能存在的嗅探结点进行判断的原理。掌握网络监听工具的安装、使用,能够发现监听数据中的有价值信息,了解网络中是否存在嗅探结点的判断方法及其使用。 二、实验要求 基本要求了解网络扫描的作用,掌握主机漏洞扫描、端口扫描、操作系统类型扫描软件的使用的方法,能够通过网络扫描发现对方的信息和是否存在漏洞。掌握网络监听工具的安装、使用,能够发现监听数据中的有价值信息等。提高要求能够对网络中可能存在的嗅探结点进行判断的方法及工具使用等。 三、实验步骤 1)扫描软件X-Scan 和Nmap 以及WinPcap 驱动安装包并安装。 2)打开X-Scan,如下图所示。 3)点击“设置”->“扫描参数”,弹出扫描参数设置对话框,在“指定IP 范围”输入被扫描的IP 地址或地址范围。在“全局设置”的“扫描模块”设置对话框中选择需要检测的模块。其他可以使用默认的设置,也可以根据实际需要进行选择。最后点击“确定”回到主界面。

网络端口扫描实验指导汇总

《网络端口扫描》实验指导 一、实验目的 1、学习端口扫描技术的基本原理,理解端口扫描技术在网络攻防中的应用; 2、通过上机实验,熟练掌握目前最为常用的网络扫描工具Nmap的使用,并能利用工具扫描漏洞,更好地弥补安全不足。 二、实验预习提示 1、网络扫描概述 扫描是通过向目标主机发送数据报文,然后根据响应获得目标主机的情况。根据扫描对象的不同,可以分为基于主机的扫描和基于网络的扫描2种,其中基于主机的扫描器又称本地扫描器,它与待检查系统运行于同一节点,执行对自身的检查。通常在目标系统上安装了一个代理(Agent)或者是服务(Services),以便能够访问所有的文件与进程,它的主要功能为分析各种系统文件内容,查找可能存在的对系统安全造成威胁的漏洞或配置错误;而基于网络的扫描器又称远程扫描器,一般它和待检查系统运行于不同的节点上,通过网络来扫描远程计算机。根据扫描方式的不同,主要分为地址扫描、漏洞扫描和端口扫描3类。 (1)地址扫描 地址扫描是最简单、最常见的一种扫描方式,最简单的方法是利用Ping程序来判断某个IP地址是否有活动的主机,或者某个主机是否在线。其原理是向目标系统发送ICMP回显请求报文,并等待返回的ICMP回显应答。 传统的Ping扫描工具一次只能对一台主机进行测试,效率较低,现在如Fping(Fast ping)等工具能以并发的形式向大量的地址发出Ping请求,从而很快获得一个网络中所有在线主机地址的列表。但随着安全防范意识的提供,很多路由器和防火墙都会进行限制,只要加入丢弃ICMP回显请求信息的相关规则,或者在主机中通过一定的设置禁止对这样的请求信息应答,即可对ICMP回显请求不予响应, (2)漏洞扫描 漏洞扫描是使用漏洞扫描器对目标系统进行信息查询,检查目标系统中可能包含的已知漏洞,从而发现系统中存在的不安全地方。其原理是采用基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统安全配置的实际经验,形成一套标准的网络系统漏洞库,然后在此基础上构成相应的匹配规则,通过漏洞库匹配的方法来检查目标设备是否存在漏洞。在端口扫描后,即可知道目标主机开启的端口以及端口上提供的网络服务,将这些相关信息与漏洞库进行匹配,即可查看是否有满足匹配条件的漏洞存在。漏洞扫描大体包括CGI、POP3、FTP、HTTP和SSH漏洞扫描等。漏洞扫描的关键是所使用的漏洞库,漏洞库信息的完整性和有效性决定了漏洞扫描器的性能,漏洞库的修订和更新的性能也会影响漏洞扫描器运行的时间。 (3)端口扫描 端口是网络连接的附着点,不同的应用进程使用不同的端口,如果一个应用程序希望提供某种服务,它将自己附着在端口上等待客户请求的到来(即对端口进行监听),希望使用此服务的客户则在本地主机分配一个端口,与远程主机的服务端口连接,客户通过联系这些特殊的端口来获取特殊的服务。在网络连接中,服务器端的进程需要一直处于监听状态,并且持续使用相同端口;而客户端的进程则只需要在和服务器建立连接时动态地创建一个端口,并在连接结束后立即释放。一般来说,端口扫描的对象是前者,即作为网络服务开放的

Nmap扫描原理与用法

[+] Nmap扫描原理与用法 2012年6月16日 1Nmap介绍 Nmap基本命令和典型用法 ?全面进攻性扫描(包括各种主机发现、端口扫描、版本扫描、OS扫描及默认脚本扫描): nmap -A -v targetip ?Ping扫描: nmap -sn -v targetip ?快速端口扫描: nmap -F -v targetip ?版本扫描: nmap -sV -v targetip ?操作系统扫描: nmap -O -v targetip 2

Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。最新版的Nmap6.0在2012年5月21日发布,详情请参见:https://www.wendangku.net/doc/b78353192.html,。 一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap 可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。 Nmap的优点: 1. 灵活。支持数十种不同的扫描方式,支持多种目标对象的扫描。 2. 强大。Nmap可以用于扫描互联网上大规模的计算机。 3. 可移植。支持主流操作系统:Windows/Linux/Unix/MacOS等等;源码开放,方便移植。 4. 简单。提供默认的操作能覆盖大部分功能,基本端口扫描nmap targetip,全面的扫描nmap –A targetip。 5. 自由。Nmap作为开源软件,在GPL License的范围内可以自由的使用。 6. 文档丰富。Nmap官网提供了详细的文档描述。Nmap作者及其他安全专家编写了多部Nmap 参考书籍。 7. 社区支持。Nmap背后有强大的社区团队支持。 8. 赞誉有加。获得很多的奖励,并在很多影视作品中出现(如黑客帝国2、Die Hard4等)。 9. 流行。目前Nmap已经被成千上万的安全专家列为必备的工具之一。 1.1 Zenmap

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

滁州学院 课程设计报告课程名称: 设计题目:基于多线程的端口扫描程序 院部:计算机与信息工程学院 专业:网络工程 组别:第六组 起止日期: 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端口的分配。这就能让我们间接的或直观的了解到远程主机所存在的安全问题。为了保证网络中计算机的安全性,必须采取主动策略,快速、及时、准

相关文档
相关文档 最新文档