久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5261|回復: 0
收起左側

TCP端口掃描C++源程序

[復制鏈接]
ID:208997 發表于 2017-6-7 22:13 | 顯示全部樓層 |閱讀模式
目的:掃描目的的主機端口,來探測看目的主機各個端口的情況。
0.png

c++源程序如下:
  1. #include <string.h>
  2. #include <WinSock.h>
  3. #include <iostream>
  4. #include<string>
  5. using namespace std;
  6. /*
  7. // SCAN.cpp : Defines the entry point for the console application.
  8. //

  9. #include "stdafx.h"
  10. #ifndef _INIT_SCOK
  11. #define _INIT_SCOK

  12. #include <stdlib.h>
  13. #include <winsock2.h>
  14. #pragma comment(lib,"WS2_32")
  15. #include <Mswsock.h>
  16. #pragma comment(lib,"mswsock")
  17. #include <Ws2tcpip.h>
  18. #include <MSTcpIP.h>
  19. #endif
  20. typedef struct tagParam
  21. {
  22. DWORD  dwDesIp;
  23. USHORT nDesPort;
  24. static LONG nThread;
  25. }ScanParam,*pScanParam;

  26. LONG ScanParam::nThread = 0;


  27. DWORD WINAPI ScanPort(LPVOID lpParam);



  28. int main(int argc, char* argv[])
  29. {
  30. DWORD dwAddr = 0;
  31. LONG  nStart = 0,nEnd = 0,nThread = 0;

  32. char buf[MAX_BUF_LEN];
  33. WSADATA wsaData;
  34. BYTE minorVer = 2;
  35. BYTE majorVer = 2;
  36. WORD sockVersion = MAKEWORD(majorVer,majorVer);
  37. if(::WSAStartup(sockVersion,&wsaData)!=0)
  38. {
  39. exit(0);
  40. }
  41. do
  42. {
  43. printf("請輸入需要掃描的IP地址:");
  44. gets(buf);
  45. }
  46. while((strcmp(buf,"") == 0));

  47. dwAddr = ::inet_addr(buf);
  48. do
  49. {
  50. printf("請輸入掃描的起始端口:");
  51. scanf("%d",&nStart);
  52. }
  53. while (nStart < 0);

  54. do
  55. {
  56. printf("請輸入掃描的結束端口:");
  57. scanf("%d",&nEnd);
  58. }
  59. while (nStart > nEnd);

  60. do
  61. {
  62. printf("請輸入掃描的最大線程數:");
  63. scanf("%d",&nThread);
  64. }
  65. while (nThread < 0);


  66. printf("正在掃描中......\r\n");
  67. for (USHORT nPort = (USHORT)nStart;nPort != (USHORT)nEnd;++nPort)
  68. {
  69. pScanParam pData = new ScanParam();
  70. pData->dwDesIp = dwAddr;
  71. pData->nDesPort = nPort;
  72. if (CreateThread(NULL, 0, ScanPort, (LPVOID)pData, 0, NULL) != NULL)
  73. {
  74. ::Sleep(10);
  75. }
  76. while(ScanParam::nThread >= nThread)
  77. {
  78. ::Sleep(10);
  79. }
  80. }
  81. while(ScanParam::nThread > 0)
  82. {
  83. ::Sleep(10);
  84. }
  85. printf("掃描完成!\r\n");
  86. system("pause");
  87. ::WSACleanup();
  88. return 0;
  89. }


  90. DWORD WINAPI ScanPort(LPVOID lpParam)
  91. {
  92. pScanParam pData = (pScanParam)lpParam;
  93. if(pData == NULL)
  94. return -1;

  95. ScanParam::nThread++;
  96. // 創建套節字
  97. SOCKET s = NULL;
  98. // 填寫遠程地址信息
  99. sockaddr_in remote;
  100. remote.sin_family = AF_INET;
  101. remote.sin_addr.S_un.S_addr = pData->dwDesIp;
  102. remote.sin_port = ::htons(pData->nDesPort);

  103. if((s = ::socket(AF_INET,SOCK_STREAM, IPPROTO_IP)) == INVALID_SOCKET)
  104. {
  105. printf("Failed socket() %d \n", ::WSAGetLastError());
  106. return -1;
  107. }
  108. printf("%s端口[%d]是否打開 \n",inet_ntoa(remote.sin_addr),::ntohs(remote.sin_port));
  109. if(::connect(s,(SOCKADDR*)&remote,sizeof(SOCKADDR))!= SOCKET_ERROR)
  110. {
  111. printf("%s端口[%d]已打開\r\n",inet_ntoa(remote.sin_addr),::ntohs(remote.sin_port));
  112. }
  113. ::closesocket(s);

  114. ScanParam::nThread--;

  115. DEL_P(pData);
  116. return 1;
  117. }

  118. */
  119. #pragma comment(lib,"ws2_32.lib")
  120. int main()
  121. {
  122.         //初始化Windows Sockets 動態庫

  123.         WSADATA wsaData;
  124.         if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
  125.         {
  126.                 cout << "失敗:WSAStartup" << endl;
  127.                 return 1;
  128.         }
  129.        
  130.         //連接服務器
  131.          char IP[100];
  132.         int star_host, end_host;
  133.         cout << "請輸入目標主機+開始端口+終止端口 " << endl;
  134.         cin >> IP >> star_host >> end_host;
  135.          
  136.         SOCKADDR_IN addrServ;
  137.         addrServ.sin_family = AF_INET;
  138.         addrServ.sin_addr.S_un.S_addr = inet_addr(IP);
  139.         if (star_host > end_host)
  140.         {
  141.                 cout << "終止端口應該大于等于起始端口" << endl;
  142.                 return 0;
  143.         }

  144.         for (int now_host = star_host; now_host <= end_host; now_host++)
  145.         {
  146.                 addrServ.sin_port = htons(now_host);

  147.                 //創建套接字
  148.                 SOCKET sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  149.                 if (sClient == INVALID_SOCKET)
  150.                 {
  151.                         cout << "失敗:創建socket!" << endl;
  152.                         return 1;
  153.                 }
  154.                 if (connect(sClient, (sockaddr *)&addrServ, sizeof(sockaddr)) == SOCKET_ERROR)
  155.                 {
  156.                         cout << "關閉:" << now_host << endl;
  157.                 }
  158.                 else
  159.                         cout << "開放:" << now_host << endl;

  160.                 closesocket(sClient);
  161.         }

  162.         //關閉套接字,釋放資源
  163.         //closesocket(sClient);
  164.         WSACleanup();

  165.         return 0;
  166. }
復制代碼

所有資料51hei提供下載:
掃描目的主機端口.zip (4.76 KB, 下載次數: 14)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区色淫影院 | 三级特黄特色视频 | 欧美精品久久久 | 免费精品视频在线观看 | xx视频在线观看 | 国产精品爱久久久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 成年人在线观看视频 | 亚洲一区二区三区高清 | 国产日韩欧美中文字幕 | 久久久久久高潮国产精品视 | hitomi一区二区三区精品 | 免费在线观看av网站 | 国产日韩亚洲欧美 | 日本特黄特色aaa大片免费 | 在线观看欧美一区 | 91在线视频网址 | 久久精品91久久久久久再现 | 青青草在线视频免费观看 | 日韩中文字幕在线观看视频 | 看a网站| 国产视频一区在线 | 欧美二区乱c黑人 | 手机日韩 | 国产精品综合网 | 夜夜骑首页 | 狠狠ri| 少妇久久久久 | 欧美激情一区二区三区 | 91原创视频 | 激情av在线 | 国产精品成人一区二区三区 | 日韩精品成人免费观看视频 | 五月天婷婷久久 | 91精品国产自产精品男人的天堂 | 区一区二区三在线观看 | 日韩成人影院 | 四虎影视免费观看 | 成人亚洲综合 | 97精品一区二区 | 免费成人午夜 |