2010-01-04 20 views
6

Tôi đang cố gắng viết một máy quét cổng trong C#. Tôi đã thực hiện một số nghiên cứu về phương pháp quét cổng.Thực hiện tất cả các kỹ thuật portscanning trong C#/Tạo các gói cấp thấp thô trong C#

Nếu bạn quan tâm, đó là những liên kết tôi thấy hữu ích:

  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. (cũ) NMAP - The Art of Cảng quét: http://nmap.org/nmap_doc.html
  4. Kỹ thuật quét cổng: http://nmap.org/book/man-port-scanning-techniques.html
  5. Ví dụ tương tác quét trên cổng: http://www.osischool.com/concept/communication/port-scanning

Đến với câu hỏi của tôi. Đây là những phương pháp quét cổng:

  1. TCP Connect() Quét
  2. TCP SYN Scan
  3. TCP FIN Scan
  4. TCP XMAS Scan
  5. TCP NULL Scan
  6. TCP Window Scan
  7. Quét UDP

Nhưng tôi đã triển khai chỉ TCP Connect() Scan (hiển thị here). Nhưng điều này là chết chậm (lấy> 0.5 giây để kiểm tra mỗi cổng). Để thực hiện phần còn lại của các phương thức, tôi cần truy cập mức gói. Tôi cần tạo các gói dữ liệu thô. Có thể làm điều đó trong C#? Nếu vậy làm thế nào để làm điều đó?

+0

Tôi sẽ bị hấp dẫn để xem cách điều này xuất hiện, nếu nguồn có sẵn. –

Trả lời

1

Bạn sẽ phải có trình điều khiển (NDIS) hoặc một cái gì đó tương tự để truy cập các gói dữ liệu thô. Bạn cũng có thể cần sử dụng Native Win32 API và sử dụng P/Invoke.

Dưới đây là một cái gì đó để giúp đỡ: http://www.codeproject.com/KB/IP/sendrawpacket.aspx

+0

Trình điều khiển được sử dụng phổ biến nhất để truy cập gói cấp thấp hơn đi kèm với WinPcap. –

2

này dường như là một wrapper tốt xung quanh thư viện WinPcap tuyệt vời khi tôi đã sử dụng nó trong một thời gian dài trước:

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

tôi chắc chắn rằng nó tốt hơn hiện nay.

+0

Giờ tốt hơn nhiều. API cuối cùng đã đạt được sự trưởng thành nên các phương thức của nó được thiết lập khá nhiều trong đá và việc phân tích cú pháp đã được chuyển ra khỏi SharpPcap đến dự án Packet.Net. Nó dễ sử dụng hơn nhiều so với trước đây. –

Các vấn đề liên quan