簡體   English   中英

在C#中使用原始套接字

[英]Using raw sockets with C#

我想用C#寫一個端口掃描器,我不能使用SocketType.Raw,因為原始套接字是從Windows桌面版本中取出的。 我不能將SharpPcap或其他包裝用於Winpcap,因為我將PPPoE用於互聯網連接,並且Winpcap不支持PPP設備。

我需要使用一個實現原始套接字並且不依賴winpcap的庫。

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

編輯:

對於那些不相信RAW套接字已從Windows桌面版本中消失的人們,請參見此處: http : //msdn.microsoft.com/zh-cn/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數據包)的能力。
  • 不允許使用帶有原始套接字的IPPROTO_TCP協議調用bind函數。
    注意其他協議(例如IPPROTO_IPIPPROTO_UDPIPPROTO_SCTP )允許使用帶有原始套接字的bind功能。

請注意nmap的操作方式,現在,我相信您的選擇是在以太網框架上降至更低的水平。

“ Nmap僅支持以太網接口(包括大多數802.11無線卡和許多VPN客戶端)進行原始數據包掃描。除非您使用-sT -Pn選項,否則不支持RAS連接(例如PPP撥號)和某些VPN客戶端。此支持當Microsoft在Windows XP SP2中刪除了原始的TCP / IP套接字支持時,它被丟棄。現在Nmap必須發送較低級別的以太網幀。

因此-這使我們能夠:

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

像這樣:

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

另外,在什么時候從Windows中刪除了它? 上周我為一個朋友做了一個聊天客戶端。 同樣, http://msdn.microsoft.com/en-us/library/system.net.sockets.sockettype.aspx仍將其列為活動狀態。

嘗試以管理員身份運行Visual Studio

右鍵單擊--->以管理員身份運行

然后使用raW套接字執行程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM