网络程序之端口扫描技术

        网络程序之端口扫描技术

   端口扫描是是网络安全软件中所必须有的一个功能.这个功能模块其实就是探测目地方主机已开放的端口.这样能检测一些漏洞,防止一些损失.其实探测对方主机端口有时我们用dos中自带的工具就可以.

你比如:进入cmd下.输入telnet www.sina.com.cn 80这个指令后,就能看到新浪的这个80端口是不是开放了.

   具体到用高级语言如何实现这一功能呢?首先我们要理解它的原理.一台机器中它的端口如果开放,我们可以认为它正在侦听到来的连接,也就是说我们可以连接到它.网络库中提供了这么一个函数.connect().用这个函数我们来个循环探测从1到65535.分析其返回值.这样就能知道对方开放了几个端口.如果我们在创建套接字时也指定是UDP,那么我们也能探测UDP端口对方开了几个.但要注意UDP这个方式有一定的漏洞.因为UDP不是面向连接的.另外在这个编程中我们最好用到多线程方式,以便于操作.

  下面是代码:

 #include<winsock2.h>
#include<stdio.h>
#include <iostream.h>

void main()
{
 WSADATA wsaData;
    SOCKET sClient;
    struct sockaddr_in server;

    if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
 {
  printf("加载套接字失败/n");
  return ;
 }
   
 sClient=socket(AF_INET,SOCK_STREAM,0);

 if(sClient==INVALID_SOCKET)
 {
  printf("创建套接字失败:%d/n",WSAGetLastError());
 // return ;
 }

 for(int iPort = 1 ;iPort <82 ; iPort ++)
 {
  server.sin_family=AF_INET;
     server.sin_port=htons(iPort);
     server.sin_addr.s_addr=inet_addr("127.0.0.1");
     if(connect(sClient,(struct sockaddr *)&server,sizeof(server))==INVALID_SOCKET)
  {
    
      printf("端口没有开放%d/n",iPort);
  
  }
     else
  {
          printf("端口开放%d/n",iPort);
  }
 }
}

 

当然不要忘了加载ws2_32.lib这个网络库

 

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值