C# 有可能让TCPListener处于混乱状态吗?

C# 有可能让TCPListener处于混乱状态吗?,c#,tcplistener,promiscuous-mode,C#,Tcplistener,Promiscuous Mode,我使用arp欺骗将tcp连接请求转发到我的计算机,wireshark在混杂模式下批准SYN数据包到达我的计算机。我使用TCPListener接收连接,但无法使用不属于我的PC的IP地址打开TCPListener实例。TCPListener类似乎无法接受目标IP地址与本地接口不同的数据包。 如何执行此任务?您需要实际添加一个网络接口,该接口假装为所讨论的IP地址,否则网络堆栈将丢弃这些数据包,而不会将它们转发到用户模式应用程序。您可以想象使用原始套接字来读取它们(而不是TcpListener),但

我使用arp欺骗将tcp连接请求转发到我的计算机,wireshark在混杂模式下批准SYN数据包到达我的计算机。我使用TCPListener接收连接,但无法使用不属于我的PC的IP地址打开TCPListener实例。TCPListener类似乎无法接受目标IP地址与本地接口不同的数据包。
如何执行此任务?

您需要实际添加一个网络接口,该接口假装为所讨论的IP地址,否则网络堆栈将丢弃这些数据包,而不会将它们转发到用户模式应用程序。您可以想象使用原始套接字来读取它们(而不是
TcpListener
),但这本身并不能提供有效的TCP连接,因此您也必须自己进行所有握手,而且我不确定内核是否会过早地跳出连接。如果无法提前预测源地址,这仍然是一条路。@jeroen mostert如果我将IP地址更改为该IP地址,那么就会出现IP冲突。已经存在IP冲突——是你通过ARP欺骗设计的。现在网络上实际上有两台机器使用相同的IP地址。Windows目前并没有检测到这种冲突——我完全忘记了它是如何做到这一点的。但是是的,如果你不能绕过它,你就必须自己进行TCP握手,而且你不能使用
TcpListener
。没有人说过这很容易。