我希望能夠截取/修改TCP客戶端側的tcp流中的數據。 pcap的例子展示瞭如何解析TCP數據包頭/淨荷。 但假設我想在tcp客戶端讀取數據包之前修改數據包有效載荷,或者完全丟棄數據包。我怎麼能用pcap capure做到這一點?分組數據截取和修改
0
A
回答
0
你不能用libpcap或WinPcap來做到這一點; libpcap是建立在不支持它的操作系統機制之上的(這些機制存在支持被動數據包捕獲和低級數據包捕獲和注入,不支持數據包輸入和輸出路徑中的數據包修改),並且WinPcap的驅動程序構建在這種操作系統的機制。
無論您使用哪種操作系統,您都必須找到一些機制,支持攻絲到網絡堆棧,使攻擊程序可以在數據包通過網絡堆棧時對其進行修改。某些操作系統可能不存在這樣的機制;在確實存在的操作系統上,如果有的話,它可能非常依賴操作系統。 (libpcap使用的機制也取決於操作系統; libpcap存在,部分原因是爲了儘可能最大限度地隱藏與應用程序之間的差異。)
5
如上所述,您無法使用pcap進行攔截/修改。爲此,您需要以下依賴於操作系統的技術之一:
- Linux的:libnetfilter_queue + iptables的
- MacOS的, FreeBSD的:轉移插座+ ipfw的
- 的Windows:WinPkFilter(商業),WinDivert(LGPL)或編寫您自己的NDIS IM或WFP呼出驅動程序。
(通常的披露:WinDivert是我的項目)。
1
相關問題
- 1. 攔截並修改USB數據包
- 2. Firefox插件攔截並修改POST數據並獲取URL
- 3. COM端口攔截和修改Linux上的數據
- 4. 修改數組
- 5. 修改數組
- 6. 檢索和修改數據
- 7. Java中的數組修改(改變數組「分辨率」)
- 8. 修改嵌套數組中的數據
- 9. 用asycronus數據修改數組
- 10. 提取和數據庫數據分組到一個數組
- 11. 如何截取和修改任何對象的特定屬性
- 12. 修改數據
- 13. 修改Java數組
- 14. cocos2d修改數組
- 15. (jQuery)修改數組
- 16. 修改數組值
- 17. PHP數組修改
- 18. 拆分列修改數據幀
- 19. Hive修改分區表數據
- 20. $ _ POST PARAM被修改/截斷
- 21. GIT:提取文件修改數據進行分析
- 22. 截取頁數的分頁
- 23. C - 數組,排序和修改
- 24. 修改字符串數組和PHP
- 25. 如何攔截tcp數據包並在飛行中修改?
- 26. 獲取響應後修改JSON數據
- 27. 不修改原始數組返回分類數組
- 28. 拆分和修剪字節數組
- 29. 分割和修改最後
- 30. 修改數據表
你必須找到某種機制,在任何操作系統您正在使用中,支持輕敲到網絡堆棧的方式,允許竊聽程序,因爲他們通過網絡堆棧修改數據包。 – user270398 2012-04-25 19:47:41
謝謝,但我還是不太清楚..看起來像這樣的框架很少,像「scapy」或「剋星」......他們可以「手工」和「注入」數據包,雖然我不能查找如何更改現有數據包的有效負載,或者爲現有連接注入tcp數據包。你認爲「netfilter」會在Linux/BSD中提供這樣的機制嗎? – user270398 2012-04-25 19:57:29
你找不到那個,因爲他們不支持;他們通過在網絡上傳輸數據包來「注入」數據包,而不是在接收數據包到達TCP並將修改後的數據包傳遞給TCP之前捕獲數據包。 Netfilter可能會讓你在Linux上做你想做的事情; ipfirewall或PF可能會讓你在* BSD上執行。 – 2012-04-25 22:50:00