2016-10-31 38 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

相关问题