欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

简单C语言扫描器源码

简单C语言扫描器源码

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
//本源码由Willix独家提供......
void Help()
{
  printf("使用方法(qq:515984350):\n   dos中输入:scan 127.0.0.1 135 445\n");
}
int main(int argc,char* argv[])
{
  //申明变量
  WORD wVersion = MAKEWORD(2,0);  //socket的版本
  WSADATA wsaData;
  //sockaddr_in结构
  struct sockaddr_in sin;
  int iFromPort;  //开始端口
  int iToPort;  //结束端口
  int iNowPort;  //正在扫描的端口
  char* cHost;  //要扫描的主机
  SOCKET s;    //保存创建socket时返回的值
  int iOpenPort;  //开放端口的个数
  iOpenPort=0;
  //如果命令行下参数不是4个(包括程序本身),提示正确的用法
  if(argc != 4)
  {
    //printf("参数的错误\n");
    Help();
    return -1;
  }
  //保存用户输入的要扫面的开始端口和结束端口
  //由于用户输入的是char型,所以要转换成int型号
  iFromPort = atoi(argv[2]);
  iToPort = atoi(argv[3]);
  cHost = argv[1];
  //对用户输入的端口进行判断
  if(iFromPort>iToPort || iFromPort<0 || iFromPort>65535 || iToPort<0 || iToPort>65535)
  {
    printf("错误的端口号\n");
    return 0;
  }
  if(WSAStartup(wVersion,&wsaData))
  {
    printf("初始化失败\n");
    return -1;
  }
  printf("==========================开始扫描==============================\n");
  
  //循环连接端口,判断端口是否开放
  for(iNowPort = iFromPort;iNowPort <= iToPort;iNowPort++)
  {
    s=socket(AF_INET,SOCK_STREAM,0);
    if(s == INVALID_SOCKET)
    {
      printf("创建socket失败\n");
      WSACleanup();
    }
    //给结构成员赋值
    sin.sin_family = AF_INET;
    sin.sin_port = htons(iNowPort);
    sin.sin_addr.S_un.S_addr = inet_addr(cHost);
    //建立连接
    if(connect(s,(struct sockaddr*)&sin,sizeof(sin)) == SOCKET_ERROR)
    {
      printf("%s->%d:未开放\n",cHost,iNowPort);
      closesocket(s);
    }
    else
    {
      printf("%s->%d开放\n",cHost,iNowPort);
      iOpenPort++;
      closesocket(s);
    }
  }
  printf("==========================结束扫描==============================\n");
  printf("主机:%s扫描到%d个端口开放",cHost,iOpenPort);
  //关闭socket
  closesocket(s);
  WSACleanup();
  return 0;
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功