界面如下:

主要代码如下:

  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 ThreadCSocketScan(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() % );
  14. }
  15.  
  16. CSocket sock;
  17. CString strTemp;
  18. if (sock.Create())
  19. {
  20. if (sock.Connect(strIP, uPort))
  21. {
  22. if (uPort < )
  23. {
  24. struct servent *se;
  25. se = getservbyport(htons(uPort), _T("tcp"));
  26. if (se != NULL)
  27. {
  28. strTemp.Format(_T("%d %s"), uPort, se->s_name);
  29. }
  30. else
  31. {
  32. strTemp.Format(_T("%d"), uPort);
  33. }
  34. }
  35. else
  36. {
  37. strTemp.Format(_T("%d %s"), uPort, ptr->GetPortName(uPort, TRUE));
  38. }
  39.  
  40. ptr->m_wndTreeResult.InsertItem(strTemp, , , TreeItem);
  41. sock.ShutDown();
  42. }
  43. sock.Close();
  44. }
  45.  
  46. g_iTotalThreadCount--;
  47. return ;
  48. }
  1. CString CPortScan_TCPDlg::GetPortName(UINT uPort, BOOL bIsTCP)
  2. {
  3. CString strRet;
  4. if (bIsTCP)
  5. {
  6. switch (uPort)
  7. {
  8. case :
  9. case :
  10. case :strRet = _T("常用动态分配的TCP端口"); break;
  11. case :strRet = _T("WinGate,IRC等防火墙管道"); break;
  12. case :strRet = _T("Sub-7木马"); break;
  13. case :strRet = _T("MSSQL数据库服务端口"); break;
  14. case :strRet = _T("ingreslock后门"); break;
  15. case :strRet = _T("NFS程序常用端口"); break;
  16. case :strRet = _T("Squid HTTP代理服务器"); break;
  17. case :strRet = _T("MySQL数据库服务端口"); break;
  18. case :strRet = _T("pcAnywere常用端口"); break;
  19. case :strRet = _T("Back Orifice"); break;
  20. default:strRet = _T(""); break;
  21. }
  22. }
  23. else
  24. {
  25. switch (uPort)
  26. {
  27. case :
  28. case :
  29. case :strRet = _T("常用动态分配的UDP端口"); break;
  30. case :strRet = _T("Hack-a-tack远程访问木马"); break;
  31. default:strRet = _T(""); break;
  32. }
  33. }
  34. return strRet;
  35. }

下载地址见后续博文。

CSocket实现端口扫描的更多相关文章

  1. ★Kali信息收集★8.Nmap :端口扫描

    ★Kali信息收集~ 0.Httrack 网站复制机 http://www.cnblogs.com/dunitian/p/5061954.html ★Kali信息收集~ 1.Google Hackin ...

  2. Python3实现TCP端口扫描

    在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可以了解到目标主机都开放了哪些服务,甚至能根据服务猜测可能存在某些漏洞. TCP端 ...

  3. 端口扫描base

    #coding:utf8 import os import socket import sys def IsOpen(ip,port): s = socket.socket(socket.AF_INE ...

  4. Android NDK学习之第一个实例---端口扫描

    为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们来练习.扫描服务端端口的方式有许多种,最简单的就是直接 ...

  5. 端口扫描之王——nmap入门精讲(一)

    端口扫描在百度百科上的定义是: 端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关),但是端口扫描不但可以为黑客所利 ...

  6. 使用Metasploit进行端口扫描

    Metasploit中不仅能够使用第三方扫描器Nmap等,在其辅助模块中也包含了几款内建的端口扫描器. 查看Metasploit框架提供的端口扫描工具: msf > search portsca ...

  7. 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描

    端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相 ...

  8. 『安全工具』Nmap 强悍的端口扫描工具

    作为时下流行的端口扫描工具,Nmap有因其扫描的隐密性有“端口扫描之王”之称 上图是黑客帝国(The Matrix)中崔妮蒂用Nmap入侵核发电站的能源管理系统 0x 01 Nmap介绍 Nmap是一 ...

  9. Hacker(16)----防范端口扫描与嗅探

    端口扫描与嗅探都是黑客常用的招数,其目的是定位目标计算机和窃取隐私信息.为确保自己计算机的安全,用户需要掌握防范嗅探与端口扫描的常见措施,保障个人隐私信息安全. 一.掌握防范端口扫描的常用措施 防范端 ...

随机推荐

  1. 深入Lazy<T>——.NET Framework 4.0

    .NET Framework 4 在一次次跳票中终于发布了,在一次偶然的机会,我看到了 Anytao 的 [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T>点滴 . ...

  2. Java native代码编译步骤简书

    Java native代码编译步骤简书 目的:防止java代码反编译获取密码算法 (1)编写实现类com.godlet.PasswordAuth.java (2)编译java代码javac Passw ...

  3. pycharm输出乱码如\xe9\x9d\x92\xe8\x9b\x99\xe7\x8e\x8b\xe5\xad\x90转成中文

    转自:https://blog.csdn.net/baidu_19473529/article/details/54949453 利用Python解决unicode编码问题,有些json在控制台打印也 ...

  4. ActiveReports 报告应用程序教程 (2)---上市类报告

     大多数数字在报告中系统类报告列表.实例:客户名单.产品列表.设备清单.采购清单.优惠券.商品发票.工作人员清点等..根据报告,查看类别列表相对简单.但,分丰富,在清单类报表中能够增加数据统计.数 ...

  5. python 简单的Socket编程

    python 编写server的步骤: 1第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket(family, type ) family参数代表 ...

  6. B 维背包+完全背包 Hdu2159

    <span style="color:#3333ff;">/* ---------------------------------------------------- ...

  7. Frequentist 观点和 Bayesian 观点

    1. Frequentist view Frequentist approach views the model parameters as unknown constants(未知的常数,而不是一个 ...

  8. 探索jquery方法中empty,remove与detach的区别

    最近一直疑惑此三种方法的具体区别在于何处,随即想弄明白其具体的区别,看了一些说明,也依照官方文档,终于把这三个方法弄明白了,果然功夫不负有心人,继续努力. 上正文,先简单介绍下这三种方法 .empty ...

  9. 谷歌推出备份新工具:Google Drive将同步计算机文件

    Google 正在将云端硬盘 Drive 转变成更强大的文件备份工具.很快,Google Drive 将能监测并备份你电脑上的(几乎)所有文件,只要是你勾选的文档,Drive 就能同步至云端. 具体来 ...

  10. 合并 && 还原属性链

    效果 原数据 { "id": 10, "text": { "title": "title", "content ...