端口扫描实验总结报告文档格式.docx

上传人:b****4 文档编号:17617989 上传时间:2022-12-07 格式:DOCX 页数:12 大小:40.55KB
下载 相关 举报
端口扫描实验总结报告文档格式.docx_第1页
第1页 / 共12页
端口扫描实验总结报告文档格式.docx_第2页
第2页 / 共12页
端口扫描实验总结报告文档格式.docx_第3页
第3页 / 共12页
端口扫描实验总结报告文档格式.docx_第4页
第4页 / 共12页
端口扫描实验总结报告文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

端口扫描实验总结报告文档格式.docx

《端口扫描实验总结报告文档格式.docx》由会员分享,可在线阅读,更多相关《端口扫描实验总结报告文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

端口扫描实验总结报告文档格式.docx

1.了解熟悉MFC及的基本原理和方法。

2.加深对tcp的理解,学习端口扫描技术和,原理熟悉socket编程。

3.通过自己编程实现简单的IP端口扫描器模型。

4.通过端口扫描了解目标主机开放的端口和服务程序。

三、实验环境

Windows操作系统

VC++6.0开发环境

四、实验设计

实验原理

通过调用socket函数connect()连接到目标计算机上,完成一次完整的三次握手过程,如果端口处于侦听状态,那么connect()就可以成功返回,否则这个端口不可用,即没有提供服务。

实验内容

1. 

设计实现端口扫描器 

2. 

IP地址、端口范围可以用户输入。

3. 

要求有有好的可视化操作界面。

实验步骤:

1、用户界面:

使用vc6.0里的MFC来开发用户界面 

2、端口扫描:

使用socket函数中的connect()连接计算机来判定目标计算机是否开放了要测试的端口

五、代码实现

#include<

afxext.h>

winsock.h>

#pragmacomment(lib,"

wsock32.lib"

#defineZERO(fd_set*)0

intmaxth,scanok,scannum;

intportip,hoststart,hoststop,startport,endport;

longsearchnum,searched;

voidusage(char*);

voidplayx(int);

voidsetip2(char*);

voidcustomport(char*,char*,char*);

voidportscannow(int);

intmain(intargc,char*argv[])

{

WSADATAwsadata;

system("

cls.exe"

);

printf("

\r\n==============命令行端口扫描器PortScannerV1.0=============="

if((argc<

3)||(argc>

4))

usage(argv[0]);

return-1;

}

if(!

(stricmp(strlwr(argv[1]),"

-p"

)==0))

if(WSAStartup(MAKEWORD(1,1),&

wsadata)!

=0)

\r\nWsatartuperror"

if(argc==3)

setip2(argv[2]);

else

if(argc==4)

customport(argv[0],argv[2],argv[3]);

portscannow(argc);

WSACleanup();

return0;

voidusage(char*prog)

Usage:

%s<

Option>

"

prog);

\r\n\n<

:

\r\n-p[Port|StartPort-EndPort]<

HostName|IP|StartIP-EndIP>

\r\n\nExample:

"

\r\n%s-p192.168.0.1"

\r\n%s-p192.168.0.1-192.168.0.254"

\r\n%s-p21-80192.168.0.1"

\r\n%s-p21-80192.168.0.1-192.168.0.254\r\n"

return;

voidplayx(intplay=0)

char*plays[12]=

|"

"

/"

-"

\\"

};

if(searchnum!

=0)

for(inti=0;

i<

=3;

i++)

printf("

=%s=%d%sCompleted.\r"

plays,searched*100/(searchnum+1),"

%"

Sleep(5);

=%s=\r"

plays[play]);

Sleep(10);

voidsetip2(char*cp)

inthost;

structhostent*testhost;

char*startip="

*endip="

;

if(strstr(cp,"

-"

)&

&

strlen(cp)>

15&

strlen(cp)<

32)

endip=strchr(cp,'

-'

)+1;

strncpy(startip,cp,strlen(cp)-strlen(strchr(cp,'

)));

hoststart=ntohl(inet_addr(startip));

hoststop=ntohl(inet_addr(endip));

testhost=gethostbyname(startip);

if(!

testhost)

WSACleanup();

\r\nCan'

tgetipof:

%s"

cp);

exit(-1);

memcpy(&

host,testhost->

h_addr,4);

hoststop=hoststart=ntohl(host);

voidTestThread(intthread=200)

for(;

playx();

if(maxth>

thread)

Sleep(100);

elsebreak;

voidWaitThreadEnd()

Sleep(6000);

\r\r\n"

Wait(%d)Threadend...\r\n"

maxth);

for(;

0)

playx();

continue;

\r\n"

voidcustomport(char*cp,char*cp2,char*cp3)

intintport;

char*checker;

startport=atoi(cp2);

endport=atoi(cp2);

if(strstr(cp2,"

))

intport=atoi(checker=strchr(cp2,'

)+1);

if(intport>

0&

intport<

65536)

endport=intport;

if(startport<

0||startport>

65536||endport<

0||endport>

65535)

usage(cp);

exit(-1);

setip2(cp3);

UINTportscan(LPVOIDport)

intaddr=portip;

intsock;

structfd_setmask;

structtimevaltimeout;

structsockaddr_inserver;

unsignedlongflag=1;

sock=socket(AF_INET,SOCK_STREAM,0);

if(sock==INVALID_SOCKET)

\r\nSockError:

%s"

WSAGetLastError());

maxth--;

server.sin_family=AF_INET;

server.sin_addr.s_addr=htonl(addr);

server.sin_port=htons(short(port));

if(ioctlsocket(sock,FIONBIO,&

flag)!

closesocket(sock);

connect(sock,(structsockaddr*)&

server,sizeof(server));

timeout.tv_sec=18;

timeout.tv_usec=0;

FD_ZERO(&

mask);

FD_SET(sock,&

switch(select(sock+1,ZERO,&

mask,ZERO,&

timeout))

case-1:

\r\nSelect()error"

maxth--;

return-1;

case0:

closesocket(sock);

default:

if(FD_ISSET(sock,&

mask))

shutdown(sock,0);

[Found:

]%sPort:

%dopen.\r\n"

inet_ntoa(server.sin_addr),ntohs(server.sin_port));

scanok++;

return1;

voidportscannow(intxp)

intsport;

char*timenow,timebuf[32];

char*ports[32]={

21"

22"

23"

25"

53"

79"

80"

110"

111"

113"

123"

135"

139"

143"

443"

512"

513"

514"

515"

540"

1080"

1433"

1521"

1524"

3306"

3389"

5631"

6000"

6112"

8000"

8080"

12345"

timenow=_strtime(timebuf);

\r\nPortScanStartTime:

%s\r\n\n"

timenow);

maxth=0;

scanok=0;

scannum=0;

searched=0;

searchnum=hoststop-hoststart+1;

if(xp==3)

searchnum=searchnum*32;

if(xp==4)

searchnum=searchnum*(endport-startport+1);

for(portip=hoststart;

portip<

=hoststop;

portip++,scannum++)

if((portip%256)==0||(portip%256)==255)

if(xp==3)

searchnum=searchnum-32;

if(xp==4)

searchnum=searchnum-(endport-startport+1);

scannum--;

if(xp==3)

for(sport=0;

sport<

32;

sport++,maxth++,searched++)

{

TestThread(180);

CWinThread*pthread=AfxBeginThread(portscan,LPVOID(atoi((char*)ports[sport])));

Sleep(120);

}

if(xp==4)

{

sport=endport-startport;

if(sport>

500)

for(sport=startport;

=endport;

TestThread(2000);

CWinThread*pthread=AfxBeginThread(portscan,LPVOID(sport));

else

TestThread(250);

WaitThreadEnd();

\r\nPortScanEndTime:

timenow);

\r\nScan%dHostscompleted.Open%dPorts!

scannum,scanok);

6、代码实现

在刚开始的时候编译是成功的,但是build是有错误的,如图:

在网上找解决的方法,发现是MFC连接的问题,在工程—>

设置—>

microsoft基础类中不使用MFC改成使用MFC作为静态链接库,确定后再次build。

Build成功后代码能够成功运行,端口扫描成功

八、实验总结

1.实验中的遇到的问题:

刚开始老师布置作业的时候完全不知道怎么做,在网上找了一些资料和借鉴同学的实验过程才完成了这个实验,着实不易。

2.实验中的收获:

一定程度上加深了对MFC和socket编程的的理解,对课程学习打下了一个比较好的基础;

用一些设计模式在一定程度能提高开发效能,降低开发的复杂度,并且深刻地认识到实践才能出真知这个硬道理。

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

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1