15

我想用 C# 编写一个端口扫描器,但我不能使用 SocketType.Raw,因为原始套接字是从桌面版本的 Windows 中取出的。我不能使用 SharpPcap 或 Winpcap 的其他包装器,因为我使用 PPPoE 进行互联网连接,而 Winpcap 不支持 PPP 设备。

我需要使用一个实现原始套接字并且不依赖于 winpcap 的库。

有任何想法吗?基本上我需要发送 SYN,接收 SYN/ACK 或 RST 但不要发回 ACK。

编辑:

对于不相信 RAW 套接字从桌面版本的 Windows 中消失的人,请参阅此处:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms740548 (v=vs.85).aspx

在 Windows 7、Windows Vista、带有 Service Pack 2 (SP2) 的 Windows XP 和带有 Service Pack 3 (SP3) 的 Windows XP 上,通过原始套接字发送流量的能力受到以下几种方式的限制:

  • TCP 数据不能通过原始套接字发送。
  • 无法通过原始套接字发送具有无效源地址的 UDP 数据报。任何传出 UDP 数据报的 IP 源地址必须存在于网络接口上,否则数据报将被丢弃。进行此更改是为了限制恶意代码创建分布式拒绝服务攻击的能力,并限制发送欺骗数据包(具有伪造源 IP 地址的 TCP/IP 数据包)的能力。
  • 不允许使用协议bind的原始套接字调用函数。注意带有原始套接字 的函数允许用于其他协议(例如、或)。IPPROTO_TCP
    bindIPPROTO_IPIPPROTO_UDPIPPROTO_SCTP
4

3 回答 3

2

请注意 nmap 是如何做到的,现在我相信您的选择是在以太网框架上进入较低级别。

“Nmap 仅支持以太网接口(包括大多数 802.11 无线网卡和许多 VPN 客户端)进行原始数据包扫描。除非您使用 -sT -Pn 选项,否则不支持 RAS 连接(例如 PPP 拨号)和某些 VPN 客户端。此支持微软在 Windows XP SP2 中删除了原始 TCP/IP 套接字支持时被删除。现在 Nmap 必须发送较低级别的以太网帧。

所以 - 这让我们:

http://www.codeproject.com/KB/IP/sendrawpacket.aspx

于 2011-09-23T20:44:35.727 回答
0

像这样:

http://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8h.html

另外,它是在什么时候从 Windows 中删除的?上周我为一个朋友做了一个聊天客户端;同样, http: //msdn.microsoft.com/en-us/library/system.net.sockets.sockettype.aspx仍然将其列为活动。

于 2011-09-23T18:28:59.427 回答
-9

尝试以管理员身份运行 Visual Studio

右键--->以管理员身份运行

然后使用原始套接字执行程序..

于 2014-01-21T06:22:29.027 回答