实验三 端口扫描实验
1 实验类型
验证型实验
2 实验目的
1.了解端口扫描的基本概念和工作原理;
3 背景知识
1. 端口扫描原理
在“计算机网络”课程中,我们知道完成一次TCP 连接需要完成三次握手才能建立。端
口扫描正是利用了这个原理,通过假冒正常的连接过程,依次向目标主机的各个端口发送连
接请求,并根据目标主机的应答情况判断目标主机端口的开放情况,从而分析并对一些重要
端口实施攻击。
端口扫描的方式有两种,一种称为完整扫描,一次连接过程如下图所示:
完整扫描连接过程示意图
另一种扫描方式称为半开扫描,出于欺骗的目的,半开扫描在收到服务端的应答信号(SYN+ACK)后,不再发送响应信号(ACK)。一次连接过程如下图所示:
半开扫描连接过程示意图
4 实验内容
1、编写一个利用全连接的端口扫描程序,能显示目标主机的端口开放情况。要求能在命令
行输入要扫描的目标主机和端口范围。比如:scan ... nnnn-mmmm。
代码如下:
#include<stdio.h>
#include<WINSOCK2.H>
#include<string.h>
#include<iphlpapi.h>
#pragma comment(lib,"WS2_32.lib")
int main(){
WSADATA WSAData;
sockaddr_in addr; //用来创建socket的结构体
char IpAddress[100]; //待扫描的主机IP地址
char startPort[10],endPort[10]; //开始和结束的端口号
printf("请输入要扫描的主机IP地址:");
gets(IpAddress);
printf("请输入开始扫描的端口号:");
gets(startPort);
printf("请输入开始结束的端口号:");
gets(endPort);
if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){ //初始化Winsock2