回答
「但它不會工作,因爲原始數據包已經到達目的地。」
因此,首先您需要設置一些MiTM解決方案,以便兩端之間的所有通信都通過您的設備,並讓您修改分組數據。
這個功能/攻擊的一些已知軟件插件是ettercap和cain/abel。
iTayb,
看來你有興趣進行代理使用Scapy的某種服務的?如果是這樣的話?
業務的第一順序是一些如何讓數據包通過運行scapy的箱子。通過將遠程機器上的網關設置爲與scapy盒相匹配來實現此目的。如果這是針對某種筆式測試,則需要僞裝一些mac地址。你可以用scapy使用arpcachepoison方法或者像ettercap這樣的第三方程序來做到這一點。
完成此操作後,使用sniff()和send()函數的方法應該會更好一些,只需確保在到達發送部分之前更改數據包;)下面是一個小例子,說明如何做到這一點...在這裏我只是改變IP頭目標地址,但你可以改變任何你想要的。
from scapy import *
def chgSend(x):
x[IP].dst = '192.168.1.1'
send(x)
while 1:
sniff(prn=chgSend)
DC
我有同樣的問題,
我認爲這個問題是你已經啓用IP_FORWARD所以原來的包轉發到修改的數據包之前的原始目的是通過Scapy的發送。
Theorically,該解決方案是建立在iptables的轉發要修改到另一個端口(這是多了還是少了什麼Ettercap做internaly)什麼的報文,
i.e = iptables -t nat -A PREROUTING -p tcp --destination-port "YourInterestingPort" -j REDIRECT --to-port 1234
然後在Scapy的聽到該端口,修改數據包並將數據包發送到原始端口。
該解決方案難以實施,因爲過濾的,你必須重定向和修改只所需的數據包,並排除SYN ACK ARP等..
如果要修改服務器的響應,一個更簡單的方法就是不用動態地修改數據包,而是像中介一樣行事。
- arpspoof
- ipatbles
打開插座,接收數據包,打開連接,並將其發送到原來的目的地一樣,如果你是一個客戶端和接收答案,修改答案,並將其返回給原來的查詢者。
while True: c,addr = s_mb.accept()#建立與客戶端的連接。 查詢= c.recv(BUFFER_SIZE)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((IP, PORT)) s.send(PACKET) response = s.recv(1024) if response = "THIS IS THE RESPONSE THAT I WANT TO MODIFY": if(real_simulation): fakeresponse = "MODIFIED RESPONSE" #print "The packet has beeb modified" else: fakeresponse = response s.close() c.send(fakeresponse)
(對不起,我髒代碼)
- 1. 用scapy改變數據包作爲MITM
- 2. Python(scapy):如何嗅探只有outboun數據包的數據包
- 3. scapy不捕獲任何數據包
- 4. 使用Scapy解析數據包字節
- 5. 使用Scapy來填充HTTP數據包
- 6. scapy不需要的RST TCP數據包
- 7. scapy數據包操作和原始pkt.time
- 8. Scapy無法分割IPv6數據包
- 9. scapy無法過濾某些數據包
- 10. 通過ttl Scapy過濾數據包?
- 11. 如何使用scapy創建GRE標頭數據包
- 12. 如何使用Scapy過濾數據包的IP列表
- 13. 用Scapy發送數據
- 14. 從scapy檢索LLMNR數據包的數據
- 15. Scapy:我如何獲得完整的IP數據包頭?
- 16. Scapy:如何訪問自定義數據包的RAW
- 17. 如何在scapy中發送L2TP數據包?
- 18. 如何通過scapy發送FIN數據包來關閉連接?
- 19. 如何捕獲您在Scapy中發送的數據包?
- 20. 如何從原始字節創建Scapy數據包
- 21. 如何更改數據庫
- 22. ItemFileWriteStore:如何更改數據?
- 23. 如何使用winpcap修改數據包
- 24. 使用pcapy/impacket更改數據包數據
- 25. dojox.data.QueryReadStore。如何更改包含數據的數組的索引?
- 26. 如何使用angularjs multidropdown更改數據
- 27. 如何使用NSMutableDictionary更改數據?
- 28. 更改數據
- 29. 更改數據
- 30. 無法使用Scapy sendp發送MPTCP數據包()
我知道這是稍微大一點的線程,但類似的一個 - 你可以將輸出數據包更復雜的方式?如在http有效負載中插入另一種http頭,而不修改IP或TCP頭。任何參考相關API等? – fayyazkl 2012-10-22 06:42:45
但是,當然,取決於您想要更改的內容可能涉及其他模塊。例如,如果你想改變所有HTTP GET請求數據包的有效載荷,我將使用re解析頭,然後相應地發送修改後的數據包。 – dc5553 2012-10-22 14:10:04
我實際上想要插入一個新的http頭。這意味着覆蓋最後的\ r \ n並添加更多的字段。 – fayyazkl 2012-10-22 17:36:13