收藏 分享(赏)

主机端口扫描程序说明书.pdf

上传人:精品资料 文档编号:10748736 上传时间:2020-01-07 格式:PDF 页数:15 大小:244.73KB
下载 相关 举报
主机端口扫描程序说明书.pdf_第1页
第1页 / 共15页
主机端口扫描程序说明书.pdf_第2页
第2页 / 共15页
主机端口扫描程序说明书.pdf_第3页
第3页 / 共15页
主机端口扫描程序说明书.pdf_第4页
第4页 / 共15页
主机端口扫描程序说明书.pdf_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、基于MFC的主机端口扫描程序这是第七章这是第七章这是第七章这是第七章P127.3练习题练习题练习题练习题程序具体步骤如下:1.创建一个工程运行MicrosoftVisualC+后,单击“文件”中的“新建”一个应用程序生成向导(FCAppWizardex)创建一个基于对话框的工程,该工程的“工程名称”为103140003,如下所示:单击确定,然后选择“基本对话框“,点击下一步,再在WindowsSockets前打上勾,支持Winsock编程,点击“完成”后,“确定”即可。2.设计程序对话框(1)首先把VC+自动生成的对话框中的“TOD:在这里设置对话控制”剪切掉,将“取消“按钮的“属性“中的“标

2、题“改为退出,将“确定“按钮的“属性“中的“标题“改为TCP扫描,ID改为IDTCPSAN,添加一个“按钮“,将该按钮的“属性“中的“标题“改为UP扫描,I改为IDUPSCAN,添加3个“组框“,并将其“属性“中的“标题“分别改为IP地址、端口号、扫描结果,添加3个“编辑框“并将其“属性“中的ID分别改为IDPORT1、IDPORT2、IDSTAUS,添加“静态文本框“,并将其“属性“中的“标题“分别改为From、To,添加IP地址框,并将其“属性“中的ID改为IDM_IP,添加“静态文本框“,并将其“属性“中的“标题“别改为作者信息,如图所示:(2)按Ctrl+W打开ClasWizard(类

3、向导),在Mem berVaribles中为090114073Dlg类添加4个变量,这4个变量的名称分别为m _Ip、m _Port1、m _Port2、m _Staus点击“确定”按钮。(3)在类函数OnInitDialog()中/TOD:Addextrainitializationhere下添加m _ip.setwindowtext(“127.0.0.1“)(4)在类CMy090114073Dlg中添加私有变量WSADTAWSADat、SOCKETSocket、CStringIp、intip、sockaddr_inDestHost、CStringPort:(5)在设计的对话框中分别双击TC

4、P扫描按钮和UP扫描按钮,添加类函数OnTcpscan()和OnUdpscan(),并在类函数OnTcpscan()下添加如下代码:/TOD:AdyourcontrolnotifcationhandlercodehreUpdateDat(true);if(m _Port1=“)|(m _Port2=“)MesageBox(“您没有输入正确的端口号“);return;if(atoi(m _Port1)atoi(m _Port2)MesageBox(“请将小的端口号输在前面“);return;/初始化套节口if(WSAtartup(MAKEWORD(2,),UpdateDat(false);ret

5、urn;m _Staus+=“初始化Winsock成功!rn“;/创建连接套接字Socket=socket(AF_INET,SOCK_STREAM,0);if(Socket=INVALID_SOCKET)m _Staus+=“创建Socket失败!rn“;UpdateDat(false);WSACleanup();return;m _Staus+=“创建Socket成功!rn“;/转换IP地址格式m _Ip.GetWindowText(Ip);/判断域名或IP地址ip=inet_adr(Ip);if(ip=INADR_NOE)hostent*pHostent=gethostbynam e(Ip

6、);if(pHostent)ip=(*in_adr*)pHostent-h_adr_list).S_un.S_adr;/定义目的主机地址m em st(DestHost.in_fam ily=AF_INET;DestHost.in_adr.S_un.S_adr=ip;/循环扫描套接口for(intm _Port=atoi(m _Port1);m _Portatoi(m _Port2)MesageBox(“请将小的端口号输在前面“);return;/初始化套节口if(WSAtartup(MAKEWORD(2,2),UpdateDat(false);return;m _Staus+=“初始化Win

7、sock成功!rn“;/创建连接套接字Socket=socket(AF_INET,SOCK_DGRAM,0);if(Socket=INVALID_SOCKET)m _Staus+=“创建Socket失败!rn“;UpdateDat(false);WSACleanup();return;m _Staus+=“创建Socket成功!rn“;/设置非阻塞模式intnIotrl;unsignedlongFlag=1;nIotrl=ioctlsocket(Socket,FIONBIO,if(nIotrl=SOCKET_ERR)m _Staus+=“设置Socket非阻塞模式失败!rn“;closesoc

8、ket(Socket);WSACleanup();return;/判断域名或IP地址ip=inet_addr(Ip);if(ip=INADR_NONE)hostent*pHostent=gethostbynam e(Ip);if(pHostent)ip=(*(in_addr*)pHostent-h_addr_list).S_un.S_addr;/定义目的主机地址m em st(estost.sin_fam ily=AF_INET;DestHost.sin_addr.S_un.S_addr=ip;/循环扫描套接口for(intm _Port=atoi(m _Port1);m _Port=atoi

9、(m _Port2);m _Port+)DestHost.sin_port=htons(m _Port);/转换端口号为字符串Port.Form at(“%5d“,m _Port);/定义接收缓冲区char*SendBuf;SendBuf=newchar2;m em st(SendBuf,0,2);/发送UDP数据包intnc;nc = sendto(Socket,SendBuf,1,0,(structsockaddr*)if(nc=SOCKET_EROR)m _Staus+=“UDP包发送失败!rn“;closesocket(Socket);WSACleanup();return;Slep(

10、500);/定义源主机地址sockaddr_inSourceHost;intSourceSize;SourceSize=sizeof(SourceHost);m em st(/定义接收缓冲区char*RecvBuf;RecvBuf=newchar2;m em st(RecvBuf,0,2);/接收UDP数据包intnr;nr = recvfrom(Socket,RecvBuf,1,0,(structsockaddr*)if(nr=SOCKET_EROR)/RecvFrom错误类型intErorCode=GetLastEror();if(ErorCode=10054)m _Staus+=Ip;m

11、 _Staus+=“t;m _Staus+=“UDPort:“;m _Staus+=Port;m _Staus+=“t;m _Staus+=“Closern“;if(ErorCode=10035)m _Staus+=Ip;m _Staus+=“t;m _Staus+=“UDPort:“;m _Staus+=Port;m _Staus+=“t;m _Staus+=“Openrn“;elsm _Staus+=Ip;m _Staus+=“t;m _Staus+=“TCPort:“;m _Staus+=Port;m _Staus+=“t;m _Staus+=“Openrn“;UpdateDat(false);closesocket(Socket);WSACleanup();执行结果:错误情况:(a)(b)Tcp扫描:(c)Udp扫描:(d)点退出,即可退出了。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报