我的主機os是ubuntu12.04,我的iptables版本是v1.4.12,libmnl-1.0.3,libnetfilter_queue-1.0.2 ,libnfnetlink-1.0.1。 首先,我執行iptable commans「iptables -A -p tcp --dport 80 -J NFQUEUE」將ip包導入到NFQUEUE,然後使用libnetfilter_queue將數據包複製到用戶層,然後我修改數據包的有效負載,重建ip校驗和和tcp校驗和。最後,我調用nfq_set_verdict(qh,id,NF_ACCEPT,0,NULL)將數據包注入內核。但它不起作用。我使用wireshare來捕獲數據包,我發現,我自己的數據不能設置爲數據包。使用netfilter_queue複製數據包到用戶層是好的,修改數據包並注入內核失敗
0
A
回答
0
這是因爲正在使用的判決功能的:
nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL)
的簽名是:
nfq_set_verdict(struct nfq_q_handle *qh, u_int32_t id, u_int32_t verdict, u_int32_t mark, int set_mark, u_int32_t data_len, const unsigned char *data)
使用0
長度和NULL
用於數據指針,您接受基於分組在他的身份證號碼,沒有通過您的修改後的有效載荷
你應該嘗試與s omething這樣的:
char *pktData;
u_int32_t len=0;
len = nfq_get_payload(nfa, &pktData);
// modify payload
return nfq_set_verdict(qh, id, NF_ACCEPT, len, pktData);
那麼你修改的有效載荷將被髮送
相關問題
- 1. 攔截內核中的數據包並傳入用戶空間
- 2. 修復SQL注入核心數據
- 3. 爲什麼使用libpcap注入的數據包是重複的?
- 4. 是否有Netfilter_queue只提供控制數據包
- 5. 可以使用libnet來注入tcp數據包/數據包嗎?
- 6. 使用netfilter隊列修改數據包?
- 7. 如何使用winpcap修改數據包
- 8. UDP數據包丟失修復
- 9. 修改元數據失敗
- 10. 修改數據包的netfilter
- 11. ORA-12571 TNS數據包寫入失敗
- 12. 攔截並修改USB數據包
- 13. 從內核空間繞過數據包到用戶空間
- 14. LSP數據包修改
- 15. DPDK - 數據包修改
- 16. 如何發送數據包到內核?
- 17. 如何防止內核傳遞數據包到網絡層?
- 18. 在netfilter模塊中重新注入修改的數據包
- 19. 將數據從內核空間複製到用戶空間
- 20. tcp數據包注入 - ?
- 21. 注入sctp數據包
- 22. 數據包注入,過濾和修改沒有GPL?
- 23. WinDivert - 修改數據包數據/有效負載內容
- 24. 在內核recv-q中增加客戶端數據包(用netstat確認)而不是讀取數據包
- 25. 部署包含多個複合數據庫的數據層應用程序(DAC)失敗
- 26. 核心數據導入失敗
- 27. removeObserver失敗,核心數據
- 28. 執行鏈路層數據包修改的庫
- 29. 包恢復失敗。回滾包更改
- 30. 如何限制用戶修改mysql數據庫中的數據?