当前位置:七道奇文章资讯安全技术网络技术
日期:2009-03-01 10:58:00  来源:本站整理

C语言实现端口扫描[网络技术]

赞助商链接



  本文“C语言实现端口扫描[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
早期学习的时刻写的, 初学者可以参考一下.
复制代码
  1. #include <winsock2.h>
  2. #include <stdio.h> //printf函数要用的头文件
  3. #pragma comment(lib,"ws2_32.lib")
  4. void Help(); //申明帮忙函数
  5. int main(int argc, char* argv[])
  6. {
  7. //申明变量
  8. WORD wVersion = MAKEWORD(2,0); //socket的版本
  9. WSADATA wsaData;
  10. //sockaddr_in构造
  11. struct sockaddr_in sin;
  12. int iFromPort; //开始端口
  13. int iToPort; //完毕端口
  14. int iNowPort; //正在扫描的端口
  15. char* cHost; //要扫描的主机
  16. SOCKET s; //保存成立socket时的返回值
  17. int iOpenPort; //开放端口个数
  18. iOpenPort = 0;
  19. //假如号令行下参数不是4个(包含portscan.exe本身),提醒精确的用法
  20. if(argc != 4)
  21. {
  22.   Help(); //给出帮忙
  23.   return -1;
  24. }
  25. //保存用户输入的要扫描的起始端口和完毕端口
  26. //由于用户输入的是char型,所以要先转成int型
  27. iFromPort = atoi(argv[2]);
  28. iToPort = atoi(argv[3]);
  29. cHost = argv[1];
  30. //对用户输入的端口举行判断
  31. if(iFromPort > iToPort || iFromPort < 0 || iFromPort >65535 || iToPort <0 || iToPort >65535)
  32. {
  33.   printf("起始端口不能大于完毕端口,且范围为:1-65535!\n");
  34.   return 0;
  35. }
  36. if (WSAStartup(wVersion , &wsaData))
  37. {
  38.   printf("初始化失利!");
  39.   return -1;
  40. }
  41. printf("======= 开始扫描 =======\n");
  42. //循环连结端口,以判断端口能否开放
  43. for(iNowPort = iFromPort; iNowPort <= iToPort; iNowPort++)
  44. {
  45.   s = socket(AF_INET,SOCK_STREAM,0);
  46.   if(s == INVALID_SOCKET)
  47.   {
  48.    printf("成立socket()失利!\n");
  49.    WSACleanup();  
  50.   }
  51.   
  52.   //给结构成员赋值
  53.   sin.sin_family = AF_INET;
  54.   sin.sin_port = htons(iNowPort);
  55.   sin.sin_addr.S_un.S_addr = inet_addr(cHost);
  56.   
  57.   //成立连结
  58.   if(connect(s,(struct sockaddr*)&sin,sizeof(sin)) == SOCKET_ERROR)
  59.   {
  60.    printf("%s -> %d:未开放\n",cHost,iNowPort);  
  61.    closesocket(s);
  62.   }
  63.   else
  64.   {
  65.    printf("%s -> %d:开放\n",cHost,iNowPort);
  66.    iOpenPort ++;
  67.    closesocket(s);
  68.   }  
  69. }
  70. printf("======= 扫描后果 =======\n");
  71. printf("主机:%s 扫描到%d个端口开放",cHost,iOpenPort);
  72. //关闭socket
  73. closesocket(s);
  74. WSACleanup();
  75. return 0;
  76. }
  77. //以下为帮忙函数内容
  78. void Help()
  79. {
  80. printf("\nPortScan V1.0 by:∮明天去要饭\n");
  81. printf("Usage:\n");
  82. printf("  PortScan.exe <TargetIP> <BeginPort> <EndPort>\n");
  83. printf("Example:\n");
  84. printf("  PortScan.exe 127.0.0.1 135 445\n");  
  85. }

  以上是“C语言实现端口扫描[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>linux下C语言实现ARP数据包发送</b>
  • C语言实现端口扫描
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .