Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 确定IP是否被阻止_C++_Windows_Security_Networking - Fatal编程技术网

C++ 确定IP是否被阻止

C++ 确定IP是否被阻止,c++,windows,security,networking,C++,Windows,Security,Networking,有人知道是否有可能可靠地确定C/C++。。。Windows PC上是否安装了防火墙或IP过滤软件?我需要检测主机操作系统是否正在阻止客户端软件中的某个服务器IP 在这种情况下,我不需要担心外部硬件防火墙,因为我完全可以控制它。我只关心软件防火墙。我的希望是,我可以迭代windows网络堆栈或NDIS接口,并确定您必须从C进行翻译,但这篇博文解释了如何检查windows防火墙是否已启用: 您必须从C翻译过来,但这篇博文解释了如何检查Windows防火墙是否已启用: 如果该IP在其外部防火墙硬件上被

有人知道是否有可能可靠地确定C/C++。。。Windows PC上是否安装了防火墙或IP过滤软件?我需要检测主机操作系统是否正在阻止客户端软件中的某个服务器IP


在这种情况下,我不需要担心外部硬件防火墙,因为我完全可以控制它。我只关心软件防火墙。我的希望是,我可以迭代windows网络堆栈或NDIS接口,并确定您必须从C进行翻译,但这篇博文解释了如何检查windows防火墙是否已启用:

您必须从C翻译过来,但这篇博文解释了如何检查Windows防火墙是否已启用:

如果该IP在其外部防火墙硬件上被阻止?要知道为什么某个给定的主机无法访问是绝对不可能的。

如果该IP在他们的外部防火墙硬件上被阻止了呢?要知道给定主机无法访问的原因是绝对不可能的。

一种可能的解决方案是利用防火墙不会阻止对端口80的访问,但会阻止对其他端口的访问这一事实。因此,您可以尝试连接到端口80,如果成功,则通过一个通常被阻止的端口进行连接。一个可能的解决方案是利用防火墙不会阻止对端口80的访问,但会阻止对其他端口的访问这一事实。因此,您可以尝试连接到端口80,如果成功,则通过一个通常被阻止的端口进行连接

您无法真正判断IP是否被阻止,至少在不知道您正在寻找什么防火墙软件并进行专门检查的情况下是这样。一些想法:

检查特定防火墙,例如Windows防火墙已启用或阻止服务器 检查主机文件中是否有阻止服务器IP的条目 通过一个或多个代理进行连接,查看他们是否可以在客户端无法访问的情况下访问IP。 测试服务器,看看它是否可以访问,毕竟,这才是您真正测试的目的,对吗?查看是否可以与服务器通信?。如果服务器端出现实际中断,那么多次/定期测试这一点可能是有意义的。
你无法真正判断IP是否被阻止,至少在不知道你在寻找什么防火墙软件并进行专门检查的情况下是这样。一些想法:

检查特定防火墙,例如Windows防火墙已启用或阻止服务器 检查主机文件中是否有阻止服务器IP的条目 通过一个或多个代理进行连接,查看他们是否可以在客户端无法访问的情况下访问IP。 测试服务器,看看它是否可以访问,毕竟,这才是您真正测试的目的,对吗?查看是否可以与服务器通信?。如果服务器端出现实际中断,那么多次/定期测试这一点可能是有意义的。
尝试调用Ping。

尝试调用Ping。

如果您可以假设以下情况,则可能会出现黑客攻击:

允许传出HTTP连接

您可以在另一台服务器上运行自己的服务,监听端口80

将您的服务编码为接受IP[和端口或url]。它必须返回是否能够连接到IP

通过这种方式,您可以了解实际服务器是否已启动并正在运行。如果服务器无法直接使用,您可以断定它已被防火墙阻止


如果您不想编码/运行自己的服务,您可能可以使用internet上提供的网络状态web服务之一。

如果您可以假设以下情况,则可能会发生黑客攻击:

允许传出HTTP连接

您可以在另一台服务器上运行自己的服务,监听端口80

将您的服务编码为接受IP[和端口或url]。它必须返回是否能够连接到IP

通过这种方式,您可以了解实际服务器是否已启动并正在运行。如果服务器无法直接使用,您可以断定它已被防火墙阻止


如果您不想编写/运行自己的服务,您可以使用internet上提供的一个网络状态web服务。

我建议您在。。。但通常当有这样一个命令行应用程序时,它后面会有一个库

看这张照片。我不能说这会解决你的具体问题,但似乎有可能


用于检查是否允许使用特定端口。。。显示所需的标题

我打算建议在。。。但通常当有这样一个命令行应用程序时,它后面会有一个库

看这张照片。我不能说这会解决你的具体问题,但似乎有可能


用于检查是否允许使用特定端口。。。显示所需的标题

在阅读了您的一些回复后 对于其他答案,我认为这实际上可能更接近你想要的。它可能无法捕获每种类型的防火墙,但任何主要的防火墙供应商都应该向安全中心注册,并因此使用此方法进行检测。您还可以将此与此处的其他一些答案结合起来,为自己提供第二级验证

这是一个专家的交换帖子,所以你可能无法阅读该帖子。以防万一,我已经复制并粘贴了相关信息。它在VBScript中,但它应该为您指出可以使用的WMI名称空间的正确方向

凯马尔鲁日:我刚刚在一位专家的帮助下解决了这个问题 同事他给我指出了一篇知识库文章的方向, 指出该信息存储在WMI数据库中

基本上,可以在几行代码中查询WMI以 了解正在由监控的防火墙/防病毒软件 安全中心,以及此软件的状态,即是否启用

无论如何,如果你感兴趣的话,这里有一些我用来测试的VB代码 您需要对Microsoft WMI脚本V1.2库的引用:


在阅读了你对其他答案的一些回复后,我认为这实际上可能更接近你所寻找的。它可能无法捕获每种类型的防火墙,但任何主要的防火墙供应商都应该向安全中心注册,并因此使用此方法进行检测。您还可以将此与此处的其他一些答案结合起来,为自己提供第二级验证

这是一个专家的交换帖子,所以你可能无法阅读该帖子。以防万一,我已经复制并粘贴了相关信息。它在VBScript中,但它应该为您指出可以使用的WMI名称空间的正确方向

凯马尔鲁日:我刚刚在一位专家的帮助下解决了这个问题 同事他给我指出了一篇知识库文章的方向, 指出该信息存储在WMI数据库中

基本上,可以在几行代码中查询WMI以 了解正在由监控的防火墙/防病毒软件 安全中心,以及此软件的状态,即是否启用

无论如何,如果你感兴趣的话,这里有一些我用来测试的VB代码 您需要对Microsoft WMI脚本V1.2库的引用:


在这种情况下,我实际上不需要担心外部防火墙硬件,因为我完全可以控制它。我只关心软件防火墙。我的希望是,我可以迭代windows网络堆栈或NDIS接口,并确定这一点。您希望实现的具体目标是什么?也许我们可以从那里开始工作。在这种情况下,我实际上不需要担心外部防火墙硬件,因为我完全可以控制它。我只关心软件防火墙。我的希望是,我可以迭代windows网络堆栈或NDIS接口,并确定这一点。您希望实现的具体目标是什么?也许我们可以从那里开始工作。杰,谢谢你的帖子。这是迄今为止最接近的解决方案。感谢分享此解决方案。不幸的是,Windows防火墙并没有作为Firewall产品出现,因为那时你只需要WMI的东西:-/Jay,谢谢你的这篇文章。这是迄今为止最接近的解决方案。感谢分享此解决方案。不幸的是,Windows防火墙没有显示为Firewall产品,因为那时您只需要WMI功能:-/如果服务器上禁用或阻止了此功能,该怎么办?如果服务器上禁用或阻止了此功能,该怎么办?
Private Sub DumpFirewallInfo()

Dim oLocator    As WbemScripting.SWbemLocator
Dim oService    As WbemScripting.SWbemServicesEx
Dim oFirewalls  As WbemScripting.SWbemObjectSet
Dim oFirewall   As WbemScripting.SWbemObjectEx
Dim oFwMgr      As Variant
   
   
    Set oFwMgr = CreateObject("HNetCfg.FwMgr")
   
    Debug.Print "Checking the Windows Firewall..."
    Debug.Print "Windows Firewal Enabled: " & oFwMgr.LocalPolicy.CurrentProfile.FirewallEnabled
    Debug.Print ""
   
    Set oFwMgr = Nothing
   
   
    Debug.Print "Checking for other installed firewalls..."
   
    Set oLocator = New WbemScripting.SWbemLocator
    Set oService = oLocator.ConnectServer(".", "root\SecurityCenter")
    oService.Security_.ImpersonationLevel = 3

    Set oFirewalls = oService.ExecQuery("SELECT * FROM FirewallProduct") ' This could also be "AntivirusProduct"
   
    For Each oFirewall In oFirewalls
        Debug.Print "Company:       " & vbTab & oFirewall.CompanyName
        Debug.Print "Firewall Name: " & vbTab & oFirewall.DisplayName
        Debug.Print "Enabled:       " & vbTab & Format$(oFirewall.Enabled)
        Debug.Print "Version:       " & vbTab & oFirewall.versionNumber
        Debug.Print ""
    Next oFirewall
   
    Set oFirewall = Nothing
    Set oFirewalls = Nothing
    Set oService = Nothing
    Set oLocator = Nothing

End Sub