Vb.net 使用.net的防火墙

Vb.net 使用.net的防火墙,vb.net,Vb.net,我计划在.net中开发一个windows应用程序,它将充当防火墙/代理服务器。但我没有iea从哪里开始。有什么帮助吗 基本上,我希望通过我的计算机监控所有传出的HTTP流量。名称空间可能是一个很好的起点。名称空间可能是一个很好的起点。我可能错了,因为您对需要做什么的定义有些模糊,但是我担心你会对.NET感到失望:你将不得不把你的手放在非托管代码的肮脏世界中,因为在这里没有.NET包装所需的功能 事实上,它远比这糟糕:没有“官方”win32包装所需的功能;您必须对系统调用进行一些丑陋/有风险的篡改

我计划在.net中开发一个windows应用程序,它将充当防火墙/代理服务器。但我没有iea从哪里开始。有什么帮助吗


基本上,我希望通过我的计算机监控所有传出的HTTP流量。

名称空间可能是一个很好的起点。

名称空间可能是一个很好的起点。

我可能错了,因为您对需要做什么的定义有些模糊,但是我担心你会对.NET感到失望:你将不得不把你的手放在非托管代码的肮脏世界中,因为在这里没有.NET包装所需的功能

事实上,它远比这糟糕:没有“官方”win32包装所需的功能;您必须对系统调用进行一些丑陋/有风险的篡改,或者使用第三方工具代表您对系统调用进行丑陋/有风险的篡改(我说的是继续存储系统调用的地址并更改地址以指向您的函数)


我一直在寻找windows的iptables之类的东西,但没有找到;我研究了免费软件和商业软件的代码(当然,我没有尝试所有可用的软件,但我花了相当长的时间研究),它们都通过做肮脏的事情来实现挂钩。

我可能错了,因为您对需要做什么的定义有些模糊,但是我担心你会对.NET感到失望:你将不得不把你的手放在非托管代码的肮脏世界中,因为在这里没有.NET包装所需的功能

事实上,它远比这糟糕:没有“官方”win32包装所需的功能;您必须对系统调用进行一些丑陋/有风险的篡改,或者使用第三方工具代表您对系统调用进行丑陋/有风险的篡改(我说的是继续存储系统调用的地址并更改地址以指向您的函数)


我一直在寻找windows的iptables之类的东西,但没有找到;我研究了免费软件和商业软件的代码(当然,我没有尝试所有可用的软件,但我花了相当长的时间研究),它们都通过做肮脏的事情来实现挂钩。

要监控所有流量,你必须插入一个具有你想要的功能的分层服务提供商(LSP)。用C写一个,即使写得很好的LSP看起来也像垃圾。我也听到winsock团队的人抱怨这些事情。我知道System.Net实际上没有任何东西可以直接让您这样做(我是编写System.Net的团队中的一员,所以请相信我)。您可以使用system.Net.NetworkInformation查询系统中的网络信息,如打开的连接、使用的地址、网络接口的枚举等,但这不允许您监视流量


如果您只想编写一个代理服务器,那么System.Net可能与您能找到的任何其他服务器一样有用,但您必须实现除读取请求和写入响应之外的所有代理功能。

要监视所有流量,您必须插入分层服务提供商(LSP)它具有您想要的功能。用C写一个,即使写得很好的LSP看起来也像垃圾。我也听到winsock团队的人抱怨这些事情。我知道System.Net实际上没有任何东西可以直接让您这样做(我是编写System.Net的团队中的一员,所以请相信我)。您可以使用system.Net.NetworkInformation查询系统中的网络信息,如打开的连接、使用的地址、网络接口的枚举等,但这不允许您监视流量


如果您只想编写一个代理服务器,那么System.Net可能与您能找到的其他任何东西一样有用,但除了自己读取请求和编写响应之外,您还必须实现所有代理功能。

关于如何实现这一点的最佳解释请参见“Microsoft Windows网络编程”作者:安东尼·琼斯和吉姆·奥伦德(安东尼是微软winsock开发部的现任主管)。它已经绝版了,但你仍然可以找到副本:示例代码有一个框架LSP实现,你可以根据自己的目的进行破解,因为大多数人都是这么做的。关于如何做到这一点,最好的解释是Anthony Jones和Jim Ohlund(Anthony是微软目前的winsock开发主管)撰写的“Microsoft Windows网络编程”。它已经绝版了,但您仍然可以找到副本:示例代码有一个框架LSP实现,您可以根据自己的目的进行破解,因为大多数人都是这样做的。