在C#中实现所有端口扫描技术/在C#中创建原始低级别数据包

cla*_*aws 6 .net c# sockets network-programming port-scanning

我正在尝试用C#编写端口扫描程序.我做了一些关于端口扫描方法的研究.

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

  1. http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/Probing/index.html ^ PPT Presentation ^
  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.osischool.com/concept/communication/port-scanning

来到我的问题.这些是端口扫描方法:

  1. TCP连接()扫描
  2. TCP SYN扫描
  3. TCP FIN扫描
  4. TCP XMAS扫描
  5. TCP空闲扫描
  6. TCP窗口扫描
  7. UDP扫描

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

Ton*_*ion 1

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

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