端口扫描报告.docx

上传人:b****1 文档编号:14894942 上传时间:2023-06-28 格式:DOCX 页数:22 大小:152.96KB
下载 相关 举报
端口扫描报告.docx_第1页
第1页 / 共22页
端口扫描报告.docx_第2页
第2页 / 共22页
端口扫描报告.docx_第3页
第3页 / 共22页
端口扫描报告.docx_第4页
第4页 / 共22页
端口扫描报告.docx_第5页
第5页 / 共22页
端口扫描报告.docx_第6页
第6页 / 共22页
端口扫描报告.docx_第7页
第7页 / 共22页
端口扫描报告.docx_第8页
第8页 / 共22页
端口扫描报告.docx_第9页
第9页 / 共22页
端口扫描报告.docx_第10页
第10页 / 共22页
端口扫描报告.docx_第11页
第11页 / 共22页
端口扫描报告.docx_第12页
第12页 / 共22页
端口扫描报告.docx_第13页
第13页 / 共22页
端口扫描报告.docx_第14页
第14页 / 共22页
端口扫描报告.docx_第15页
第15页 / 共22页
端口扫描报告.docx_第16页
第16页 / 共22页
端口扫描报告.docx_第17页
第17页 / 共22页
端口扫描报告.docx_第18页
第18页 / 共22页
端口扫描报告.docx_第19页
第19页 / 共22页
端口扫描报告.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

端口扫描报告.docx

《端口扫描报告.docx》由会员分享,可在线阅读,更多相关《端口扫描报告.docx(22页珍藏版)》请在冰点文库上搜索。

端口扫描报告.docx

端口扫描报告

 

杭州电子科技大学软件学院

网络工程试验报告

端口扫描报告

09109146

王子龙

 

1.端口及端口扫描技术简介

根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。

计算机之间相互通信的时候,分为两种方式:

一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。

对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。

主机不只是靠IP地址来区分网络服务,因为IP地址与网络服务的关系是一对多的关系。

实际上是通过“IP地址+端口号”来区分不同的服务的。

 一个端口就是一个潜在的通信通道,也就是一个入侵通道。

对目标计算机进行端口扫描,能得到许多有用的信息。

进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。

  在手工进行扫描时,需要熟悉各种命令。

对命令执行后的输出进行分析。

用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。

  通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。

2.对现有端口扫描工具程序的理解

该程序是有C++编写的。

C++是一种使用非常广泛的计算机编程语言。

C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。

它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

该程序能够扫描主机IP的某一个端口,或者是扫描该主机IP某一范围内的端口。

并且提供多次扫描功能。

如果要扫描的端口很多,在扫描过程中可以暂停扫描。

扫描结果在界面的下方显示。

主要显示内容有IP地址、端口号、端口状态、连接次数及备注。

主界面

本机ip地址为169.254.103.168

用端口扫描工具扫描135端口,135端口处于打开状态

扫描处于某一范围内的端口号,比如80—90,任务进展将在界面下方显示,

并且提示当前扫描哪一个端口及尝试扫描次数。

最终的扫描结果可以通过txt文本导出

3.核心代码

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CPortScanView

IMPLEMENT_DYNCREATE(CPortScanView,CFormView)

BEGIN_MESSAGE_MAP(CPortScanView,CFormView)

//{{AFX_MSG_MAP(CPortScanView)

ON_WM_CTLCOLOR()

ON_WM_SHOWWINDOW()

ON_BN_CLICKED(IDC_RADIO_SINGLE,OnRadioSingle)

ON_BN_CLICKED(IDC_RADIO_RANGE,OnRadioRange)

ON_BN_CLICKED(IDC_BUTTON_SCAN,OnButtonScan)

ON_BN_CLICKED(IDC_BUTTON_STOP,OnButtonStop)

ON_COMMAND(ID_FILE_SAVE,OnFileSave)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CPortScanViewconstruction/destruction

CPortScanView:

:

CPortScanView()

:

CFormView(CPortScanView:

:

IDD)

{

//{{AFX_DATA_INIT(CPortScanView)

//}}AFX_DATA_INIT

//TODO:

addconstructioncodehere

m_pBrush=newCBrush;

ASSERT(m_pBrush);

//m_clrBk=RGB(0x00,0x00,0x77);

m_clrText=RGB(0xff,0xff,0x00);

//m_pBrush->CreateSolidBrush(m_clrBk);

m_pColumns=newCStringList;

ASSERT(m_pColumns);

m_bSinglePort=TRUE;

m_nMaxAttempts=1;//defaultvalue,Thisvaluehasbeensetonthewindow

m_pStatusList=newCPtrList;

ASSERT(m_pStatusList);

}

CPortScanView:

:

~CPortScanView()

{

if(m_pStatusList)

{

//FirstEmptytheportstatuslist:

POSITIONp=m_pStatusList->GetHeadPosition();

while(p)

{

POSITIONtemp=p;

DATA*pNode=(DATA*)m_pStatusList->GetNext(p);

m_pStatusList->RemoveAt(temp);

if(pNode)

deletepNode;

}

//Thenremoveitfromheap:

deletem_pStatusList;

}

if(m_pBrush)

deletem_pBrush;

}

voidCPortScanView:

:

DoDataExchange(CDataExchange*pDX)

{

CFormView:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CPortScanView)

DDX_Control(pDX,IDC_PROGRESS,m_cProgress);

DDX_Control(pDX,IDC_EDIT_ATTEMPTS,m_cAttempts);

DDX_Control(pDX,IDC_BUTTON_STOP,m_cBtnStop);

DDX_Control(pDX,IDC_LIST_RESULT,m_cResult);

DDX_Control(pDX,IDC_BUTTON_SCAN,m_cBtnScan);

DDX_Control(pDX,IDC_IP_ADDRESS,m_cIP);

DDX_Control(pDX,IDC_EDIT_SINGLE_PORT_TO,m_cPortTo);

DDX_Control(pDX,IDC_EDIT_SINGLE_PORT_FROM,m_cPortFrom);

DDX_Control(pDX,IDC_EDIT_SINGLE_PORT,m_cSinglePort);

//}}AFX_DATA_MAP

}

BOOLCPortScanView:

:

PreCreateWindow(CREATESTRUCT&cs)

{

//TODO:

ModifytheWindowclassorstylesherebymodifying

//theCREATESTRUCTcs

returnCFormView:

:

PreCreateWindow(cs);

}

voidCPortScanView:

:

OnInitialUpdate()

{

CFormView:

:

OnInitialUpdate();

GetParentFrame()->RecalcLayout();

ResizeParentToFit(FALSE);

ResizeParentToFit();

ShowHeaders();

CheckRadioButton(IDC_RADIO_SINGLE,IDC_RADIO_RANGE,IDC_RADIO_SINGLE);

m_cSinglePort.EnableWindow();

m_cPortFrom.EnableWindow(FALSE);

m_cPortTo.EnableWindow(FALSE);

m_parent=(CMainFrame*)GetParent();

ASSERT(m_parent);

//m_cBtnStop.EnableWindow(FALSE);

m_cAttempts.SetWindowText(_T("1"));

}

/////////////////////////////////////////////////////////////////////////////

//CPortScanViewdiagnostics

#ifdef_DEBUG

voidCPortScanView:

:

AssertValid()const

{

CFormView:

:

AssertValid();

}

voidCPortScanView:

:

Dump(CDumpContext&dc)const

{

CFormView:

:

Dump(dc);

}

CPortScanDoc*CPortScanView:

:

GetDocument()//non-debugversionisinline

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPortScanDoc)));

return(CPortScanDoc*)m_pDocument;

}

#endif//_DEBUG

/////////////////////////////////////////////////////////////////////////////

//CPortScanViewmessagehandlers

HBRUSHCPortScanView:

:

OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)

{

HBRUSHhbr=CFormView:

:

OnCtlColor(pDC,pWnd,nCtlColor);

//breakstatementmustbeignored:

switch(nCtlColor)

{

caseCTLCOLOR_BTN:

caseCTLCOLOR_STATIC:

pDC->SetBkColor(m_clrBk);

pDC->SetTextColor(m_clrText);

caseCTLCOLOR_DLG:

returnstatic_cast(m_pBrush->GetSafeHandle());

}

//TODO:

Returnadifferentbrushifthedefaultisnotdesired

returnCFormView:

:

OnCtlColor(pDC,pWnd,nCtlColor);

}

 

BOOLCPortScanView:

:

AddColumn(LPCTSTRstrItem,intnItem,intnSubItem,intnMask,intnFmt)

{

LV_COLUMNlvc;

lvc.mask=nMask;

lvc.fmt=nFmt;

lvc.pszText=(LPTSTR)strItem;

lvc.cx=m_cResult.GetStringWidth(lvc.pszText)+25;

if(nMask&LVCF_SUBITEM)

{

if(nSubItem!

=-1)

lvc.iSubItem=nSubItem;

else

lvc.iSubItem=nItem;

}

returnm_cResult.InsertColumn(nItem,&lvc);

}

BOOLCPortScanView:

:

AddItem(intnItem,intnSubItem,LPCTSTRstrItem,intnImageIndex)

{

LV_ITEMlvItem;

lvItem.mask=LVIF_TEXT;

lvItem.iItem=nItem;

lvItem.iSubItem=nSubItem;

lvItem.pszText=(LPTSTR)strItem;

if(nImageIndex!

=-1)

{

lvItem.mask|=LVIF_IMAGE;

lvItem.iImage|=LVIF_IMAGE;

}

if(nSubItem==0)

returnm_cResult.InsertItem(&lvItem);

returnm_cResult.SetItem(&lvItem);

}

voidCPortScanView:

:

AddHeader(LPTSTRhdr)

{

if(m_pColumns)

m_pColumns->AddTail(hdr);

}

voidCPortScanView:

:

ShowHeaders()

{

intnIndex=0;

POSITIONpos=m_pColumns->GetHeadPosition();

while(pos)

{

CStringhdr=(CString)m_pColumns->GetNext(pos);

AddColumn(hdr,nIndex++);

}

}

 

voidCPortScanView:

:

OnShowWindow(BOOLbShow,UINTnStatus)

{

CFormView:

:

OnShowWindow(bShow,nStatus);

AddHeader(_T("IP地址"));

AddHeader(_T("端口号"));

AddHeader(_T("端口状态"));

AddHeader(_T("连接次数"));

AddHeader(_T("备注"));

}

voidCPortScanView:

:

OnRadioSingle()

{

m_bSinglePort=TRUE;

m_cSinglePort.EnableWindow();

m_cPortFrom.EnableWindow(FALSE);

m_cPortTo.EnableWindow(FALSE);

}

voidCPortScanView:

:

OnRadioRange()

{

m_bSinglePort=FALSE;

m_cSinglePort.EnableWindow(FALSE);

m_cPortFrom.EnableWindow();

m_cPortTo.EnableWindow();

m_cBtnStop.EnableWindow(FALSE);

}

//开始扫描按钮处理程序

voidCPortScanView:

:

OnButtonScan()

{

CStringbtnTxt,IP;

UINTnSinglePort;

BYTEf1,f2,f3,f4;

TCHARtemp[10]="\0";

m_cProgress.SetPos(0);

m_cResult.DeleteAllItems();

//清空列表框

POSITIONp=m_pStatusList->GetHeadPosition();

while(p)

{

POSITIONtemp=p;

DATA*pNode=(DATA*)m_pStatusList->GetNext(p);

m_pStatusList->RemoveAt(temp);

//循环删除

if(pNode)

deletepNode;

}

//验证IP地址是否为空

if(m_cIP.IsBlank())

{

MessageBox(_T("请输入IP地址."),

_T("Error"),

MB_OK|MB_ICONEXCLAMATION);

return;

}

//验证IP地址是否正确

if(m_cIP.GetAddress(f1,f2,f3,f4)<4)

{

MessageBox(_T("请确认IP地址."),

_T("InvalidIPaddress"),MB_OK|MB_ICONEXCLAMATION);

return;

}

//进行IP地址转化

IP=_itoa(f1,temp,10);

IP+=_T('.');

IP+=_itoa(f2,temp,10);

IP+=_T('.');

IP+=_itoa(f3,temp,10);

IP+=_T('.');

IP+=_itoa(f4,temp,10);

m_cBtnStop.EnableWindow();

m_cBtnScan.EnableWindow(FALSE);

//是否是单个端口扫描

if(m_bSinglePort)

{

CStringport;

m_cSinglePort.GetWindowText(port);

m_minPort=m_maxPort=nSinglePort=atoi(port);

}

else

{

CStringport1,port2;

m_cPortFrom.GetWindowText(port1);

m_cPortTo.GetWindowText(port2);

m_minPort=atoi(port1);

m_maxPort=atoi(port2);

m_cProgress.SetRange32(0,m_maxPort-m_minPort+1);

m_cProgress.SetStep

(1);

}

if(!

m_bSinglePort&&m_maxPort

{

MessageBox(_T("最大端口要大于最小端口."),

_T("Caution"),

MB_OK|MB_ICONINFORMATION);

return;

}

UINTm_nMaxAttempts=GetDlgItemInt(IDC_EDIT_ATTEMPTS);

for(m_nCounter=m_minPort;m_nCounter<=m_maxPort;m_nCounter++)

{

BOOLbIsOpen=FALSE;

UINTnAttempt=1;

while(nAttempt<=m_nMaxAttempts&&!

bIsOpen)

{

TCHARtemp[10]="\0";

CStringstr=_T("连接端口#");

#ifdef_UNICODE

str+=_itow(m_nCounter,temp,10);

#else

str+=itoa(m_nCounter,temp,10);

#endif

str+=_T(",IP地址=");

str+=IP;

str+=_T(",Attempt=");

#ifdef_UNICODE

str+=_itow(nAttempt,temp,10);

#else

str+=itoa(nAttempt,temp,10);

#endif

//设定状态栏

m_parent->SetStatusBarText(str);

str.Empty();

//打开连接

bIsOpen=TestConnection(IP,m_nCounter);

//判断是否打开

if(bIsOpen)

{

DATA*pNode=newDATA;

ASSERT(pNode);

strcpy(pNode->IPAddress,IP.GetBuffer(IP.GetLength()));

strcpy(pNode->port,_itoa(m_nCounter,temp,10));

pNode->bStatus=1;//open

pNode->nAttempts=nAttempt;

m_pStatusList->AddTail(pNode);

}

//试图连接次数

nAttempt++;

}

//如果还是无法扫描成功

if(!

bIsOpen)

{

DATA*pNode=newDATA;

ASSERT(pNode);

strcpy(pNode->IPAddress,IP.GetBuffer(IP.GetLength()));

strcpy(pNode->port,_itoa(m_nCounter,temp,10));

pNode->bStatus=0;//关闭状态

pNode->nAttempts=nAttempt-1;

m_pStatusList->AddTail(pNode);

}

MSGmessage;

if(:

:

PeekMessage(&message,NULL,0,0,PM_REMOVE))

{

:

:

TranslateMessage(&message);

:

:

DispatchMessage(&message);

}

m_cProgress.StepIt();

}

//设定状态栏

m_parent->SetStatusBarText((CString)_T("完毕"));

m_cBtnScan.EnableWindow();

m_cBtnStop.EnableWindow(FALSE);

//填充报表视图

UINTnIndex=0;

POSITI

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

当前位置:首页 > 自然科学 > 物理

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

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