logo资料库

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

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
1、端口的基本概念
2、端口的分类
二、端口扫描的基本原理
1、基本原理
2、基于JAVA语言实现的核心代码
三、端口扫描器视图
1、工作窗口
2、异常窗口
3、窗口核心代码
四、多线程快速扫描
1、多线程机制
2、多线程核心代码
五、用户使用方法
1、页面说明
2、按主机名扫描
3、按IP地址扫描
六、常用端口
七、异常检测
结语
计算机科学与工程学院 课程设计报告 班号: 职称: 姓名: 题目全称: 课 程: 学生学号: 指导老师: 指导老师评语: 课程设计成绩: 签字: 设计过程表现 设计报告质量 总分
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 前言 网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外 完全开放,有的却是紧锁城门。入侵者们是如何找到,并打开它们的 城门的呢?这些城门究竟通向城堡的何处呢?在网络技术中,把这些 城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜集信 息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的 身份和意图。一般来说,扫描端口有如下目的: ·判断目标主机上开放了哪些服务; ·判断目标主机的操作系统; 如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他 们就能够使用相应的手段实现入侵,本课程设计将会通过用 JAVA 语 言实现一个小的端口扫描软件,详细描述端口扫描的原理,分析端口 扫描所涉及的问题,以便更加清楚地了解入侵者如何扫描目标主机的 端口,同时掌握如何确保本机的安全性,为将来设计更为安全的系统 打下牢固基础。 第 页 共 13 页 2
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 目录 一、网络基础知识.....................................................................................4 1、端口的基本概念.............................................................................4 2、端口的分类.....................................................................................4 二、端口扫描的基本原理.........................................................................4 1、基本原理.........................................................................................4 2、基于 JAVA 语言实现的核心代码................................................. 5 三、端口扫描器视图.................................................................................6 1、工作窗口.........................................................................................6 2、异常窗口.........................................................................................6 3、窗口核心代码.................................................................................6 四、多线程快速扫描.................................................................................7 1、多线程机制.....................................................................................7 2、多线程核心代码.............................................................................8 五、用户使用方法.....................................................................................9 1、页面说明.........................................................................................9 2、按主机名扫描.................................................................................9 3、按 IP 地址扫描............................................................................... 9 六、常用端口.............................................................................................9 七、异常检测...........................................................................................10 结语........................................................................................................... 13 第 页 共 13 页 3
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 一、网络基础知识 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、基本原理 端口扫描的原理其实非常简单,只是简单的利用 JAVA 提供库函数 Socket 进 第 页 共 13 页 4
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 行调用,与每一个感兴趣的目标计算机的端口进行连接。如果对方端口处于监听 状态,那么连接就能成功。否则,这个端口不能用,既没有提供服务。这个技术 的一个最大的优点是,不需要任何权限,系统中的任何用户都有权利使用这个调 用。 引入多线程机制,利用多线程扫描的好处就是速度快,如果对每个目标端口 以线性的方式使用单独的连接调用,那么将会花费相当长的时间。多线程同时打 开多个套接字,从而加速扫描。在本设计中用户可以自定义线程的个数。此处用 户还可以自定义扫描方式。 2、基于 JAVA 语言实现的核心代码 //在多线程的控制下,利用for循环对端口逐一扫描 for (i =XXXXXX; i
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 三、端口扫描器视图 1、工作窗口 这是用 JAVA 语言实现的一个简单的端口扫描器软件,主页面视图如下: 2、异常窗口 当用户操用不当,例如输入的 IP 地址超过 255,或者端口范围大于 65535 时, 用户点击“开始扫描”按钮都会抛出相应的异常,并提示错误原因。如下图示例: 3、窗口核心代码 public class ThreadScan{ public static JFrame main=new JFrame("网络与信息安全课程设计·端口扫描 器·刘纪生"); public static void main(String[] args){ Submit.addActionListener(new SubmitAction()); 第 页 共 13 页 6
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 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,则其扫描过程如下所示 第 页 共 13 页 7
信息安全·课程设计 2706001012 周勇 信息安全专业 2 班 例如,假设用户填写的线程数为 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
分享到:
收藏