2016-10-31 2 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 модуль изменяет ваш порт ... какой смысл это делает ?!

Я даже не знаю «scapy» для общения udp и не знаю, какая причина была бы для его использования над pythons «socket» -module?

Для 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 вы можете легко управлять пакетами отправить их на конкретный хост. Это действительно полезно для тестирования на проникновение. Мой код также работает в соответствии с wirehark. Единственной проблемой является исходный порт, который я должен установить для отправки правильных запросов. – braheem38

+0

Каким образом вы хотите изменить пакеты? Изменить некоторые байты? Почему это невозможно с помощью «сокета»? вы можете получить пакет, декодировать его, изменить его, закодировать и отправить обратно –

+0

Теперь я объединил scapy с реализацией сокета Python, и он работает. Спасибо! – braheem38

Смежные вопросы