获取系统当前打开的端口

获取系统当前打开的端口(tcp。udp)状态,以及连接方的ip。端口

--------------------------------------------------------------------------------

一、监控 TCP连接
 
实时监控所有端口的连接情况、及时对异常连接发出警告并提示用户删除异常连接,就可以有效地达到防黑目的。
使用微软的IP助手库函数(iphlpapi.dll)是一个捷径。其中的 GetTcpTable函数能返回当前系统中全部有效的 TCP连接。其定义为


DWORD GetTcpTable(
PMIB_TCPTABLE pTcpTable, // buffer for the connection table
PDWORD pdwSize, // size of the buffer
BOOL bOrder // sort the table?
);
 
其中参数一是 TCP连接表缓冲区的指针,参数二是缓冲区大小(当缓冲区不够大时,该参数返回实际需要的大小),参数三指示连接

表是否需要按“Local IP”、“Localport”、“Remote IP”、“Remote port”依次进行排序。
对于监控 UDP连接表,可使用 GetUdpTable函数完成。由于在使用上完全类似,这里略去讨论(后面的实例程序中也相应地略去了对

UDP的监控)。
二、异常警告及删除连接
 
通过定时比较前后两个 TCP连接表,我们可以立即发现异常并发出警告。后面的实例程序用声音和报警标志提醒用户注意可能的外界

入侵。
收到警告信号后,我们应首先将可疑连接删除掉,然后再仔细查找系统中是否有安全漏洞或有可疑进程在工作。IP助手库函数中的
SetTcpEntry函数可以帮助我们删除可疑连接。其定义为:
DWORD SetTcpEntry(
PMIB_TCPROW pTcpRow // pointer to struct. with new state info 
);
在调用此函数之前,应将欲删连接的状态置为 MIB_TCP_STATE_DELETE_TCB(删除)。MIB_TCP_STATE_DELETE_TCB也是目前唯一可在

运行时设置的状态。
 


//MSDN的例子
//link Iphlpapi.lib

#include <windows.h>
#include <Iphlpapi.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
 PMIB_TCPTABLE pTcpTable;

 pTcpTable = (MIB_TCPTABLE*) malloc(sizeof(MIB_TCPTABLE));
 DWORD dwSize = 0;
 DWORD dwRetVal = 0;

 // Make an initial call to GetTcpTable to
 // get the necessary size into the dwSize variable
 //查看MSDN得知,如果错误返回ERROR_INSUFFICIENT_BUFFER,说明没有足够的空间初始化pTcpTable,GetTcpTable把需要

的大小赋给dwSize

 if (GetTcpTable(pTcpTable, &dwSize, TRUE) == ERROR_INSUFFICIENT_BUFFER)
 {
  //这里一定要再为pTcpTable申请一次空间,因为原来申请的空间已经不够了,用新获得大小申请
  GlobalFree(pTcpTable);
  pTcpTable = (MIB_TCPTABLE*) malloc ((UINT) dwSize);
 }


 // Make a second call to GetTcpTable to get
 // the actual data we require
 //得到dwSize之后在调用一次GetTcpTable填充pTcpTable
 if ((dwRetVal = GetTcpTable(pTcpTable, &dwSize, TRUE)) == NO_ERROR)
 {
  for (int i = 0; i < (int) pTcpTable->dwNumEntries; i++)
  {
   printf("State: %ld/n", pTcpTable->table[i].dwState); // pTcpTable->table[i]记录了
  }
 }
 else
 {
  printf("/tCall to GetTcpTable failed./n");

  LPVOID lpMsgBuf;

  if (FormatMessage(
   FORMAT_MESSAGE_ALLOCATE_BUFFER |
   FORMAT_MESSAGE_FROM_SYSTEM |
   FORMAT_MESSAGE_IGNORE_INSERTS,
   NULL,
   dwRetVal,
   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
   (LPTSTR) &lpMsgBuf,
   0,
   NULL ))
  {
   printf("/tError: %s", lpMsgBuf);
  }
  LocalFree( lpMsgBuf );
 }
 return 0;
}

-------参考了 康帕斯(中国)国际信息服务有限公司 马文骞 的文章

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值