6

我正在尝试用 C# 编写端口扫描器。我对端口扫描方法做了一些研究。

如果您有兴趣,这些是我发现有用的链接:

  1. http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/Probing/index.html ^ PPT 演示^
  2. http://www.auditmypc.com/freescan/readingroom/port_scanning.asp
  3. (旧)NMAP - 端口扫描的艺术:http: //nmap.org/nmap_doc.html
  4. 端口扫描技术: http: //nmap.org/book/man-port-scanning-techniques.html
  5. 端口扫描交互示例:http ://www.osisschool.com/concept/communication/port-scanning

来回答我的问题。这些是端口扫描方法:

  1. TCP Connect() 扫描
  2. TCP SYN 扫描
  3. TCP FIN 扫描
  4. TCP XMAS 扫描
  5. TCP NULL 扫描
  6. TCP 窗口扫描
  7. UDP扫描

但我只实现了TCP Connect() Scan(如图所示。但这太慢了(测试每个端口需要 >0.5 秒)。为了实现其余的方法,我需要数据包级别的访问。我需要创建原始数据包。有可能在 C# 中做到这一点吗?如果是这样怎么做?

4

2 回答 2

2

当我很久以前使用它时,这似乎是对伟大的 WinPCap 库的一个很好的包装:

http://sourceforge.net/projects/sharppcap/

我确定现在好多了。

于 2010-01-04T18:52:34.280 回答
1

您必须有一个驱动程序 (NDIS) 或类似的东西才能访问原始数据包。您可能还需要使用本机 Win32 API 并使用 P/Invoke。

这里有一些帮助: http: //www.codeproject.com/KB/IP/sendrawpacket.aspx

于 2010-01-04T18:41:01.180 回答