Я пытаюсь создать скрипт для проверки саморазвитого сетевого протокола. Поэтому я использую 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)
Причина, почему я использую scapy здесь является то, что с scapy вы можете легко управлять пакетами отправить их на конкретный хост. Это действительно полезно для тестирования на проникновение. Мой код также работает в соответствии с wirehark. Единственной проблемой является исходный порт, который я должен установить для отправки правильных запросов. – braheem38
Каким образом вы хотите изменить пакеты? Изменить некоторые байты? Почему это невозможно с помощью «сокета»? вы можете получить пакет, декодировать его, изменить его, закодировать и отправить обратно –
Теперь я объединил scapy с реализацией сокета Python, и он работает. Спасибо! – braheem38