zoukankan      html  css  js  c++  java
  • Socket2实现tcp端口扫描

    主要的界面如下:

    主要代码如下:

    1 //对于每一个线程,传过去的参数
    2 typedef struct ThreadParamStruct
    3 {
    4     CString strIP;            //要扫描的IP地址
    5     UINT  uPort;            //要扫描的端口
    6     BOOL  bNoOrder;            //是否按照随机的顺序扫描
    7     CPortScan_TCPDlg *ptr;    //指向父线程的对话框
    8     HTREEITEM TreeItem;        //指向结果要显示的树型控件节点
    9 }THREADPARAM;
     1 UINT ThreadCSocket2Scan(LPVOID pParam)
     2 {
     3     THREADPARAM *threadparam = (THREADPARAM*)pParam;
     4     CString strIP = threadparam->strIP;
     5     UINT uPort = threadparam->uPort;
     6     CPortScan_TCPDlg *ptr = threadparam->ptr;
     7     HTREEITEM TreeItem = threadparam->TreeItem;
     8     BOOL bNoOrder = threadparam->bNoOrder;
     9     
    10     g_iTotalThreadCount++;
    11     if (bNoOrder)
    12     {
    13         Sleep(rand() % 3000);
    14     }
    15 
    16     SOCKET sock = -1;
    17     sock = socket(AF_INET, SOCK_STREAM, 0);
    18     if (sock == SOCKET_ERROR)
    19     {
    20         return 1;
    21     }
    22 
    23     int iTimeOut = 1000;
    24     if (SOCKET_ERROR == setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (TCHAR*)&iTimeOut, sizeof(iTimeOut)))
    25     {
    26         g_iTotalThreadCount--;
    27         closesocket(sock);
    28         return 2;
    29     }
    30     iTimeOut = 1000;
    31     if (SOCKET_ERROR == setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (TCHAR*)&iTimeOut, sizeof(iTimeOut)))
    32     {
    33         g_iTotalThreadCount--;
    34         closesocket(sock);
    35         return 3;
    36     }
    37 
    38     SOCKADDR_IN addr_remote;
    39     addr_remote.sin_family = AF_INET;
    40     addr_remote.sin_addr.S_un.S_addr = inet_addr(strIP);
    41     addr_remote.sin_port = htons(uPort);
    42     if (0 != connect(sock, (PSOCKADDR)&addr_remote, sizeof(addr_remote)))
    43     {
    44         g_iTotalThreadCount--;
    45         closesocket(sock);
    46         return 4;
    47     }
    48 
    49     CString strTemp;
    50     if (uPort < 1024)
    51     {
    52         struct servent *se;
    53         se = getservbyport(htons(uPort), _T("tcp"));
    54         if (se != NULL)
    55         {
    56             strTemp.Format(_T("%d %s"), uPort, se->s_name);
    57         }
    58         else
    59         {
    60             strTemp.Format(_T("%d"), uPort);
    61         }
    62     }
    63     else
    64     {
    65         strTemp.Format(_T("%d %s"), uPort, ptr->GetPortName(uPort, TRUE));
    66     }
    67     ptr->m_wndTreeResult.InsertItem(strTemp, 2, 2, TreeItem);
    68 
    69     shutdown(sock, 2);
    70     closesocket(sock);
    71     g_iTotalThreadCount--;
    72     return 0;
    73 }
     1 CString CPortScan_TCPDlg::GetPortName(UINT uPort, BOOL bIsTCP)
     2 {
     3     CString strRet;
     4     if (bIsTCP)
     5     {
     6         switch (uPort)
     7         {
     8         case 1024:
     9         case 1025:
    10         case 1026:strRet = _T("常用动态分配的TCP端口"); break;
    11         case 1080:strRet = _T("WinGate,IRC等防火墙管道"); break;
    12         case 1243:strRet = _T("Sub-7木马"); break;
    13         case 1433:strRet = _T("MSSQL数据库服务端口"); break;
    14         case 1524:strRet = _T("ingreslock后门"); break;
    15         case 2049:strRet = _T("NFS程序常用端口"); break;
    16         case 3128:strRet = _T("Squid HTTP代理服务器"); break;
    17         case 3306:strRet = _T("MySQL数据库服务端口"); break;
    18         case 5632:strRet = _T("pcAnywere常用端口"); break;
    19         case 31337:strRet = _T("Back Orifice"); break;
    20         default:strRet = _T(""); break;
    21         }
    22     }
    23     else
    24     {
    25         switch (uPort)
    26         {
    27         case 1024:
    28         case 1025:
    29         case 1026:strRet = _T("常用动态分配的UDP端口"); break;
    30         case 31789:strRet = _T("Hack-a-tack远程访问木马"); break;
    31         default:strRet = _T(""); break;
    32         }
    33     }
    34     return strRet;
    35 }

    下载地址见后续博文。

  • 相关阅读:
    代码规范
    今日头条广告投放
    网络广告计费方式CPM、CPA、CPS、CPT、CPC及比较分析
    dedecms arclist分页
    nginx配置http访问自动跳转到https
    阿里云《nginx服务器配置SSL证书》 配置参数
    JavaScript 通过身份证号获取出生日期、年龄、性别 、籍贯
    Bootstrap自适应各种设备
    css3动画大全
    golang
  • 原文地址:https://www.cnblogs.com/qiyueliuguang/p/3496595.html
Copyright © 2011-2022 走看看