端口扫描报告
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
2. 对现有端口扫描工具程序的理解
该程序是有 C++编写的。C++是一种使用非常广泛的计算机编程语言。C++是一种静态 数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽 象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
该程序能够扫描主机 IP 的某一个端口,或者是扫描该主机 IP 某一范围内的端口。并且 提供多次扫描功能。如果要扫描的端口很多,在扫描过程中可以暂停扫描。扫描结果在界面 的下方显示。主要显示内容有 IP 地址、端口号、端口状态、连接次数及备注。
主界面
本机 ip 地址为 169.254.103.168
用端口扫描工具扫描 135 端口,135 端口处于打开状态
扫描处于某一范围内的端口号,比如 80—90,任务进展将在界面下方显示, 并且提示当前扫描哪一个端口及尝试扫描次数。
最终的扫描结果可以通过 txt 文本导出
3. 核心代码
#ifdef _DEBUG #define new DEBUG_NEW
//////////////////////////////////////////////////// ///////////////////////// // CPortScanView diagnostics
#ifdef _DEBUG void CPortScanView::AssertValid() const
杭州电子科技大学软件学院 网络工程试验报告 端口扫描报告 09109146 王子龙
1. 端口及端口扫描技术简介 ...............................................................................................2 2. 对现有端口扫描工具程序的理解 ...................................................................................2
}
void CPortScanView::DoDataExchange(CDataExchange*
pDX) {
CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPortScanView) DDX_Control(pDX, IDC_PROGRESS,
// CPortScanView message handlers
HBRUSH CPortScanView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
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,
1. 端口及端口扫描技术简介
根据提供服务类型的不同,端口分为两种,一种是 TCP 端口,一种是 UDP 端口。计算 机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也 就是有应答的方式,这种方式大多采用 TCP 协议;一种是发送以后就不管了,不去确认信息 是否到达,这种方式大多采用 UDP 协议。对应这两种协议的服务提供的端口,也就分为 TCP 端口和 UDP 端口。
主界面 ...................................................................................................................................3 3. 核心代码 ...........................................................................................................................6 4. 个人总结 .........................................................................................................................13
一台拥有 IP 地址的主机可以提供许多服务,比如 Web 服务、FTP 服务、SMTP 服务等, 这些服务完全可以通过 1 个 IP 地址来实现。主机不只是靠 IP 地址来区分网络服务,因为 IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP 地址+端口号”来区分不同的服 务的。 一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描, 能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软 件进行。 在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进 行扫描时,许多扫描器软件都有分析数据的功能。 通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。
CPortScanView::CPortScanView() : CFormView(CPortScanView::IDD)
{
//{{AFX_DATA_INIT(CPortScanView) //}}AFX_DATA_INIT
// TODO: add construction code here m_pBrush = new CBrush; ASSERT(m_pBrush);
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,
(DATA*)m_pStatusList->GetNext(p); m_pStatusList->RemoveAt(temp); if (pNode) delete pNode; } //Then remove it from heap: delete m_pStatusList; }
if (m_pBrush) delete m_pBrush;
void CPortScanView::OnInitialUpdate() {
CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout();
ResizeParentToFit(FALSE); ResizeParentToFit(); ShowHeaders();
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()
//////////////////////////////////////////////////// /////////////////////////
// CPortScanView construction/destruction
//m_clrBk = RGB(0x00,0x00,0x77); m_clrText = RGB(0xff,0xff,0x00); //m_pBrush->CreateSolidBrush(m_clrBk); m_pColumns = new CStringList;
ASSERT(m_pColumns); m_bSinglePort = TRUE; m_nMaxAttempts = 1; //default value, This value has been set on the window m_pStatusList = new CPtrList; ASSERT(m_pStatusList);
CheckRadioButton(IDC_RADIO_SINGLE,IDC_RA DIO_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")); }