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

时间:2010-01-04 18:35:07

标签: c# .net sockets network-programming port-scanning

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

  

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

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

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

  
      
  1. TCP Connect()扫描
  2.   
  3. TCP SYN扫描
  4.   
  5. TCP FIN扫描
  6.   
  7. TCP XMAS扫描
  8.   
  9. TCP空闲扫描
  10.   
  11. TCP窗口扫描
  12.   
  13. UDP扫描
  14.   

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

2 个答案:

答案 0 :(得分:2)

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

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

我相信现在好多了。

答案 1 :(得分:1)

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

这是有所帮助的: http://www.codeproject.com/KB/IP/sendrawpacket.aspx