获取程序想要连接的 IP 地址
get IP addresses a program wants to connect to
我的目标是我的代码 (C#) 输出另一个程序尝试连接的 IP 地址。
示例:我的 browser.exe 想要连接到 12.34.567.89 的网站,因此我的代码将输出该 IP。
注意:我的主要问题是还要列出不成功的连接尝试,因为我发现的其他所有内容似乎只适用于已建立的连接。
我没有很多经验,这是我的第一次 post 所以任何事情都可以提供帮助。
提前致谢
此答案不是纯 C#,而是指向用 C# 编写的示例调用的链接。
通常在 MS Windows 平台上,问题中的许多任务都可以使用 WMI in WQL 语言执行。
要实现请求,可以查询 MSFT_NetTCPConnection class 并使用属性 OwningProcess
和 RemoteAddress
select OwningProcess, RemoteAddress from MSFT_NetTCPConnection
您可以使用 ManagementObjectSearcher. See examples here and here
对 WMI 执行查询
如果需要获取进程详细信息 - 另一个查询可以提供帮助
select * from Win32_Process where ProcessID = PID_FROM_NET_TCP_CONNECTION
遗憾的是,无法在 WQL 中连接表,但可以创建和注册自己的 WMI class 结合类似于连接行为的所需值。例如 here。或者只是在您的代码中处理它。
我认为 Raw Sockets 非常适合这些目的。
new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
尝试查看 that 原始套接字示例(您需要将 _fcaptureIp 替换为您的 ip)
我的目标是我的代码 (C#) 输出另一个程序尝试连接的 IP 地址。 示例:我的 browser.exe 想要连接到 12.34.567.89 的网站,因此我的代码将输出该 IP。
注意:我的主要问题是还要列出不成功的连接尝试,因为我发现的其他所有内容似乎只适用于已建立的连接。
我没有很多经验,这是我的第一次 post 所以任何事情都可以提供帮助。 提前致谢
此答案不是纯 C#,而是指向用 C# 编写的示例调用的链接。
通常在 MS Windows 平台上,问题中的许多任务都可以使用 WMI in WQL 语言执行。
要实现请求,可以查询 MSFT_NetTCPConnection class 并使用属性 OwningProcess
和 RemoteAddress
select OwningProcess, RemoteAddress from MSFT_NetTCPConnection
您可以使用 ManagementObjectSearcher. See examples here and here
对 WMI 执行查询如果需要获取进程详细信息 - 另一个查询可以提供帮助
select * from Win32_Process where ProcessID = PID_FROM_NET_TCP_CONNECTION
遗憾的是,无法在 WQL 中连接表,但可以创建和注册自己的 WMI class 结合类似于连接行为的所需值。例如 here。或者只是在您的代码中处理它。
我认为 Raw Sockets 非常适合这些目的。
new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
尝试查看 that 原始套接字示例(您需要将 _fcaptureIp 替换为您的 ip)