2016-10-31 70 views
0

我試圖構建一個腳本來測試自己開發的網絡協議。因此我使用scapy發送請求。似乎一切正常,但在我的代碼中指定的UDP源端口似乎在發送過程中發生了變化。 Wireshark中的源端口與我指定的端口不同。我也嘗試使用tcpdump捕獲數據包,但tcpdump也顯示我錯誤的端口。 我發送之前檢查了hexdump,它似乎也是正確的。 任何想法是什麼問題以及我如何解決它?scapy:發送後UDP源端口發生更改

for x in arr: 
      cds = TestProtocol(HopCount = 0xe, Length = 0x4, Priority = 0x1, ServiceID = 0x3, 
          ReceiverAddrLen = 0x1, UniqueID1 = 0x1, 
          UniqueID2 = 0x1, SenderAddress = 0x1b4e, 
          PacketType = 0x02c2, data1 = 0x0004, 
          data2 = 0xe6a7, data3 = 0x0) 
      ip = IP() 
      ip.dst = destAddr 
      ip.src = srcAddr 
      udp = UDP() 

      udp.sport = 1743 #the port which changes 
      udp.dport = x 
      pack = ip/udp/cds 
      send(pack, verbose = True) 

回答

0

這將意味着你的scapy模塊改變你的端口......這是什麼意思?

我甚至不知道用於udp通信的「scapy」,不知道用什麼理由將它用於python「socket」模塊?

對於UDP傳我一般用

import socket 

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
s.bind(('192.168.66.33', 6022)) #bind local IP and Port 
s.sendto("Calling device", ('192.168.66.48', 6022)) #send string to other IP on same port 
data,addr = s.recvfrom(4096) #buf size 4096 bytes 
print str(data) #print data received from called device 

你也可以用這個TCP東西

+0

爲什麼我在這裏使用Scapy的原因是,與Scapy的,你可以很容易地操縱數據包並將其發送到特定的主辦。這對滲透測試非常有用。我的代碼也適用於wireshark。唯一的問題是源端口,我必須設置它發送正確的請求。 – braheem38

+0

你想以什麼方式改變數據包?改變一些字節?爲什麼不可能使用「套接字」?你可以接收包,解碼,修改,編碼併發回 –

+0

我現在已經將scapy與Python的套接字實現結合起來了,它可以工作。謝謝! – braheem38

相關問題