簡體   English   中英

如何使用Winsock LSP修改出站UDP流量?

[英]How to modify outbound UDP traffic with a Winsock LSP?

我正在構建一個需要動態修改DHCPv6數據包才能正常運行的應用程序。 我正在使用DHCPv6供應商選項進行大量專有工作,並且我需要能夠在內存中檢查和修改這些選項,然后再進行傳輸。

我通過修改Microsoft示例代碼在Winsock之上構建了概念驗證分層服務提供程序。 它攔截傳出的HTTP數據包,將Referrer-agent更改為有趣的內容,並按其方式發送數據包。 在Wireshark中驗證,效果很好。

更改安裝程序代碼也很簡單,這樣我的LSP就可以鏈接到UDP / IPv6而不是TCP / IPv4了,現在,在連接了調試器的情況下,我可以看到自己收到的回調都帶有導致DHCP服務器的堆棧。 但是,我再也看不到內存中的緩沖區。

WSPSendWSPConnect不會被調用,因為我們使用的是無連接協議,這很有意義。 我確實在WSPSendTo獲得了一個一致的回調,但是lpBuffers成員(在我的HTTP原型中包含表示傳出數據包的緩沖區)是NULL

我是完全按照錯誤的方式進行操作,還是需要重寫另一個Winsock操作? 如果LSP是錯誤的方法,我很樂意朝另一個方向發展,但是對於此應用程序來說,外部庫是非常困難的-否則,我將研究Winpcap。

編輯:哇,這是很久以前了。 對於那些在我身后的人,這最終效果很好。 我很尷尬地說,問題是我正在進行優化,導致我無法在調試器中看到正確的數據。 當我不再懶惰並將字節轉儲到文件中時,我發現一切都很好。

LSP確實只能攔截Winsock流量,DHCP處於較低層,您需要使用其他技術來執行此操作,例如:NDIS,TDI(在Win8上將不起作用)或WFP(在XP上將不起作用)

暫無
暫無

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

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