其實我有三個問題:C#我將如何攔截所有數據包並通過掛接找出IP?
1根據Nazar Grynko答案,難道只有攔截三大功能(發送,recv的,並連接)將幫助我預期在我的機器上的所有數據包?
2-如果我鉤了三個函數,如何獲得一個IntPtr指向一個P /調用本機函數的sockaddr結構?
3-發送,和recv沒有sockaddr,所以如何找出地址?
預先感謝您。
其實我有三個問題:C#我將如何攔截所有數據包並通過掛接找出IP?
1根據Nazar Grynko答案,難道只有攔截三大功能(發送,recv的,並連接)將幫助我預期在我的機器上的所有數據包?
2-如果我鉤了三個函數,如何獲得一個IntPtr指向一個P /調用本機函數的sockaddr結構?
3-發送,和recv沒有sockaddr,所以如何找出地址?
預先感謝您。
你所描述的功能是POSIX
標準的一部分。這意味着當你在Windows上使用這些函數時,你實際上調用了一個包裝器,最終轉換爲system call。您可以在不使用此功能的情況下發送數據包(例如,通過使用Windows API)。
查看答案1。這不會幫助你。你還必須爲所有進程提供一個鉤子。
您描述的功能使用file descriptor這是一個POSIX
結構,並在其他系統上進行用戶模式模擬。
要檢查您的流量,您必須使用驅動程序,將爲您做到這一點。你可能想看看Pcap.Net這是一個針對你的問題的C#項目,並提供必要的驅動程序和API。
我知道pcap和其他驅動程序,如sharppcap,...等,但我的目標是要知道接收或發送對我來說很困難的捕獲包的過程。我嘗試從頭文件(tcp&udp)中檢索端口#並執行netstate,但仍然不是所有的數據包都可以關聯到進程,只有tcp&udp。 – user3312744
監控機器上的所有流量比連接用戶模式代碼中的三個功能要困難。這將需要在內核模式下完成。這意味着一個司機。不是C#的東西。 –
@DavidHeffernan,他們用於C#的Easyhook和deviare怎麼樣?另一件事,轉移到捕獲像SharpPcap這樣的數據包工具更好。或堅持鉤住。 – user3312744
我以爲你說你想檢測機器上的所有數據包。您不會從在用戶環境中運行的桌面應用程序那樣做。 –