簡體   English   中英

使用Scapy(Python)在網絡中重新發送數據包

[英]Using Scapy (Python) For Resending A Packet In The Network

我想在Python中使用Scapy軟件包,以便在特定端口(例如53)中接收數據包(例如DNS查詢),然后再次將相同的數據包發送給我自己,但發送到其他端口。 例如,如果原始查詢發送到端口53,我想再次發送它,但是發送到另一個端口(例如1028)。

我考慮過將目標IP地址更改為回送地址(127.0.0.1),並將目標端口更改為特定值(例如1028),然后使用scapy的“發送”功能,但這似乎不起作用。

如果收到的數據包變量名為“數據包”,則:

packet['IP'].dst = '127.0.0.1'
packet['UDP'].dst = 1028 
send(packet)

我還考慮過刪除校驗和並使用show2()重新計算它們,但仍然無法正常工作。

有任何想法嗎?

例如,這是一種情況(當“包”是通過嗅探接收到的包時,將調用此函數:

new_ip_header = IP(src=packet['IP'].src,dst=**MY IP**)
new_udp_header = UDP(sport=packet['UDP'].sport,dport=1028)
new_dns_header = packet['DNS']
new_packet = new_ip_header / new_udp_header / new_dns_header
del new_packet[IP].chksum
del new_packet[UDP].chksum
del new_packet[IP].payload.chksum
new_packet.show2()
send(new_packet)

一些注意事項:

  1. 該消息正在發送到我的公共IP地址。 它說“已發送1個數據包”,但好像沒有按預期在端口1028中接收到該消息。

  2. 校驗和字段被刪除,然后我使用show2方法重新計算它們。

暫無
暫無

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

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