网络攻防课程设计检查应用程序端口.docx

上传人:b****4 文档编号:4724283 上传时间:2023-05-07 格式:DOCX 页数:25 大小:118.73KB
下载 相关 举报
网络攻防课程设计检查应用程序端口.docx_第1页
第1页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第2页
第2页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第3页
第3页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第4页
第4页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第5页
第5页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第6页
第6页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第7页
第7页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第8页
第8页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第9页
第9页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第10页
第10页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第11页
第11页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第12页
第12页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第13页
第13页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第14页
第14页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第15页
第15页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第16页
第16页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第17页
第17页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第18页
第18页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第19页
第19页 / 共25页
网络攻防课程设计检查应用程序端口.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

网络攻防课程设计检查应用程序端口.docx

《网络攻防课程设计检查应用程序端口.docx》由会员分享,可在线阅读,更多相关《网络攻防课程设计检查应用程序端口.docx(25页珍藏版)》请在冰点文库上搜索。

网络攻防课程设计检查应用程序端口.docx

网络攻防课程设计检查应用程序端口

目录

一.设计题目1

1.1课题背景1

二.设计要求

三.设计内容1

3.1整体设计框架1

3.2查看程序端口2

3.3端口分类

四.设计过程级说明

4.1开发环境3

4.2程序流程图说明

4.3涉及的头文件

4.4主要类的说明5

4.5代码的说明6

4.6调试及说明...............................................8

五.附录........................................................9

六.设计总结..................................................19

七.参考文献20

一、设计题目

检查应用程序端口

 

1.1课题背景

在21世纪的今天,计算机发展日新月异,伴随着网络技术的飞速更新,网络规模迅速增长和计算机系统的日益复杂,导致新的系统漏洞层出不穷,一些别有用心的人或者木马程序要想顺利的渗透一台联网的计算机,无论使用何种技术,首先必然要寻找计算机的漏洞来为自己的入侵打开大门。

检查应用程序端口是一把双刃剑,检查应用程序端口的产生可以使网络中的计算机及时的发现主机的开放与未开放的端口状态。

计算机的端口扫描技术是一种基于主动防御型的策略的重要技术手段。

本课题通过对计算机端口扫描器的研究来提高对网络中计算机的安全的认识。

检查应用程序端口采用Java语言和JavaSocket编程原理开发,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机的此端口在规定时间内有回复,则说明该端口是开放的。

利用多线程技术实现了对一目标IP进行设定数目的端口的检查。

这种扫描器可以在输入IP的情况下,对指定的端口范围进行扫描。

二、设计要求

1.学生能够较深入的理解网络编成的设计方法,并在所要求的设计时间内,利用自己所熟悉的语言完成本题目的程序编制。

2.程序要能正确运行,完成预功能。

3.要求设计清晰、美观的用户界面,当操作出错时,程序要有出错提示信息。

4.计程序实现每10秒检查一次与端口关联的应用程序

5.上交设计报告。

重点阐述程序的有关算法说明、程序的流程图以及子程序的功能和参数的说明及程序代码。

 

三、设计内容

3.1整体设计框架

经过大量的分析与调研,进而设计出由以下几个模块组成的简单网络检查程序端口器。

整个端口检查的核心部分是扫描模块,它是由很多子模块组成的,其结构如下图所示:

 

图1各个模块的结构图

3.2查看程序端口

在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令:

依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。

在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态。

3.3端口分类

逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:

1.按端口号分布划分

(1)知名端口(Well-Known Ports)

  知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。

比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

(2)动态端口(Dynamic Ports)  动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。

只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。

比如1024端口就是分配给第一个向系统发出申请的程序。

在关闭程序进程后,就会释放所占用的端口号。

  

不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。

2. 按协议类型划分  按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。

下面主要介绍TCP和UDP端口:

(1)TCP端口

TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。

常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。

(2)UDP端口  

UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。

常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。

四.设计过程及说明

4.1开发环境

本检查应用程序端口,是在window7使用visualstudio2008设计编译的

4.2程序流程图的描述:

 

图2

 

4.3涉及的头文件

//testDlg.h:

头文件

#pragmaonce

#include"afxcmn.h"4.4主要类的说明

#include"resource.h"

#include"targetver.h"

#endif

#include"afxres.h"

//test.cpp:

定义应用程序的类行为。

//

#include"stdafx.h"

#include"test.h"

#include"testDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#include//MFC自动化类

#ifndef_AFX_NO_OLE_SUPPORT

#include//MFC对InternetExplorer4公共控件的支持

#endif

#ifndef_AFX_NO_AFXCMN_SUPPORT

#include//MFC对Windows公共控件的支持

#endif//_AFX_NO_AFXCMN_SUPPORT

#include//MFCsupportforribbonsandcontrolbars

#include"Iphlpapi.h"

#pragmacomment(lib,"Iphlpapi.lib")

 

4.4适用情况的说明

//以下宏定义要求的最低平台。

要求的最低平台

//是具有运行应用程序所需功能的Windows、InternetExplorer等产品的

//最早版本。

通过在指定版本及更低版本的平台上启用所有可用的功能,宏可以

//正常工作。

//如果必须要针对低于以下指定版本的平台,请修改下列定义。

//有关不同平台对应值的最新信息,请参考MSDN。

#ifndefWINVER//指定要求的最低平台是WindowsVista。

#defineWINVER0x0600//将此值更改为相应的值,以适用于Windows的其他版本。

#endif

#ifndef_WIN32_WINNT//指定要求的最低平台是WindowsVista。

#define_WIN32_WINNT0x0600//将此值更改为相应的值,以适用于Windows的其他版本。

#endif

#ifndef_WIN32_WINDOWS//指定要求的最低平台是Windows98。

#define_WIN32_WINDOWS0x0410//将此值更改为适当的值,以适用于WindowsMe或更高版本。

#endif

#ifndef_WIN32_IE//指定要求的最低平台是InternetExplorer7.0。

#define_WIN32_IE0x0700//将此值更改为相应的值,以适用于IE的其他版本。

#endif

4.5.1应用程序对话框

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//对话框数据

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

END_MESSAGE_MAP()

//CtestDlg对话框

4.5.2窗口模块

BOOLCtestDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//将“关于...”菜单项添加到系统菜单中。

//IDM_ABOUTBOX必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动

//执行此操作

SetIcon(m_hIcon,TRUE);//设置大图标

SetIcon(m_hIcon,FALSE);//设置小图标

//TODO:

在此添加额外的初始化代码

m_list.InsertColumn(0,"041140413许振文",0,280);

returnTRUE;//除非将焦点设置到控件,否则返回TRUE

}

4.6运行结果

1.先确定是要是使用哪种协议是udp还是tcp!

图3编译及运行出的结果

2.如果确定了是tcp则:

会得到的结果如下:

图4编译及运行结果

3.如过使用的是udp则会有如下结果

图5编译及运行结果

 

五附录

//stdafx.cpp:

只包括标准包含文件的源文件

//test.pch将作为预编译头

//stdafx.obj将包含预编译类型信息

#include"stdafx.h"

 

//stdafx.h:

标准系统包含文件的包含文件,

//或是经常使用但不常更改的

//特定于项目的包含文件

#pragmaonce

#ifndef_SECURE_ATL

#define_SECURE_ATL1

#endif

#ifndefVC_EXTRALEAN

#defineVC_EXTRALEAN//从Windows头中排除极少使用的资料

#endif

#include"targetver.h"

#define_ATL_CSTRING_EXPLICIT_CONSTRUCTORS//某些CString构造函数将是显式的

//关闭MFC对某些常见但经常可放心忽略的警告消息的隐藏

#define_AFX_ALL_WARNINGS

#include//MFC核心组件和标准组件

#include//MFC扩展

 

#include//MFC自动化类

 

#ifndef_AFX_NO_OLE_SUPPORT

#include//MFC对InternetExplorer4公共控件的支持

#endif

#ifndef_AFX_NO_AFXCMN_SUPPORT

#include//MFC对Windows公共控件的支持

#endif//_AFX_NO_AFXCMN_SUPPORT

#include//MFCsupportforribbonsandcontrolbars

 

#include"Iphlpapi.h"

#pragmacomment(lib,"Iphlpapi.lib")

 

#ifdef_UNICODE

#ifdefined_M_IX86

#pragmacomment(linker,"/manifestdependency:

\"type='win32'name='Microsoft.Windows.Common-

Controls'version='6.0.0.0'processorArchitecture='x86'publicKeyToken='6595b64144ccf1df'

language='*'\"")

#elifdefined_M_IA64

#pragmacomment(linker,"/manifestdependency:

\"type='win32'name='Microsoft.Windows.Common-

Controls'version='6.0.0.0'processorArchitecture='ia64'publicKeyToken='6595b64144ccf1df'

language='*'\"")

#elifdefined_M_X64

#pragmacomment(linker,"/manifestdependency:

\"type='win32'name='Microsoft.Windows.Common-

Controls'version='6.0.0.0'processorArchitecture='amd64'publicKeyToken='6595b64144ccf1df'

language='*'\"")

#else

#pragmacomment(linker,"/manifestdependency:

\"type='win32'name='Microsoft.Windows.Common-

Controls'version='6.0.0.0'processorArchitecture='*'publicKeyToken='6595b64144ccf1df'

language='*'\"")

#endif

#endif

//test.cpp:

定义应用程序的类行为。

//

#include"stdafx.h"

#include"test.h"

#include"testDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

 

//CtestApp

BEGIN_MESSAGE_MAP(CtestApp,CWinAppEx)

ON_COMMAND(ID_HELP,&CWinApp:

:

OnHelp)

END_MESSAGE_MAP()

 

//CtestApp构造

CtestApp:

:

CtestApp()

{

//TODO:

在此处添加构造代码,

//将所有重要的初始化放置在InitInstance中

}

 

//唯一的一个CtestApp对象

CtestApptheApp;

 

//CtestApp初始化

BOOLCtestApp:

:

InitInstance()

{

//如果一个运行在WindowsXP上的应用程序清单指定要

//使用ComCtl32.dll版本6或更高版本来启用可视化方式,

//则需要InitCommonControlsEx()。

否则,将无法创建窗口。

INITCOMMONCONTROLSEXInitCtrls;

InitCtrls.dwSize=sizeof(InitCtrls);

//将它设置为包括所有要在应用程序中使用的

//公共控件类。

InitCtrls.dwICC=ICC_WIN95_CLASSES;

InitCommonControlsEx(&InitCtrls);

CWinAppEx:

:

InitInstance();

AfxEnableControlContainer();

//标准初始化

//如果未使用这些功能并希望减小

//最终可执行文件的大小,则应移除下列

//不需要的特定初始化例程

//更改用于存储设置的注册表项

//TODO:

应适当修改该字符串,

//例如修改为公司或组织名

SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

CtestDlgdlg;

m_pMainWnd=&dlg;

INT_PTRnResponse=dlg.DoModal();

if(nResponse==IDOK)

{

//TODO:

在此放置处理何时用

//“确定”来关闭对话框的代码

}

elseif(nResponse==IDCANCEL)

{

//TODO:

在此放置处理何时用

//“取消”来关闭对话框的代码

}

//由于对话框已关闭,所以将返回FALSE以便退出应用程序,

//而不是启动应用程序的消息泵。

returnFALSE;

}

//test.h:

PROJECT_NAME应用程序的主头文件

//

#pragmaonce

#ifndef__AFXWIN_H__

#error"在包含此文件之前包含“stdafx.h”以生成PCH文件"

#endif

#include"resource.h"//主符号

 

//CtestApp:

//有关此类的实现,请参阅test.cpp

//

classCtestApp:

publicCWinAppEx

{

public:

CtestApp();

//重写

public:

virtualBOOLInitInstance();

//实现

DECLARE_MESSAGE_MAP()

};

externCtestApptheApp;

//testDlg.cpp:

实现文件

//

#include"stdafx.h"

#include"test.h"

#include"testDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

 

//用于应用程序“关于”菜单项的CAboutDlg对话框

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//对话框数据

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

END_MESSAGE_MAP()

 

//CtestDlg对话框

 

CtestDlg:

:

CtestDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CtestDlg:

:

IDD,pParent)

{

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCtestDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

DDX_Control(pDX,IDC_LIST1,m_list);

}

BEGIN_MESSAGE_MAP(CtestDlg,CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_BUTTON1,&CtestDlg:

:

OnBnClickedButton1)

ON_BN_CLICKED(IDC_BUTTON2,&CtestDlg:

:

OnBnClickedButton2)

END_MESSAGE_MAP()

 

//CtestDlg消息处理程序

BOOLCtestDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//将“关于...”菜单项添加到系统菜单中。

//IDM_ABOUTBOX必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->A

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2