Значение порта UDP по умолчанию для Scapy - 53 для источника и получателя.Это заставляет пункт назначения интерпретировать начало полезной нагрузки как слой DNS()
.Таким образом, байты не пропущены, они просто интерпретируются как (поврежденный) слой DNS.
Вы можете воспроизвести это локально (заменить raw()
на str()
, если вы используете Scapy <2.4.0) на* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Вы можете «исправить», когда Scapy создаст байты, которые он отправит на newtork, <code>IP().что при использовании другого порта источника (так как вы уже изменили порт назначения): packet = IP(dst="127.0.0.1", src="10.0.0.1")/UDP(sport=12345, dport=5555)/Raw(load=json.dumps(payload))
.
В качестве примечания, на мой взгляд, у вас есть другая (настоящая, эта) проблема: вы, вероятно, неВместо этого нужно json.dumps()
строка, но объект Python (используя текущий код, вы дважды кодируете данные в формате JSON, поскольку используемая вами строка уже закодирована в формате JSON):
payload = {"dcgdsfjfghtimec": datetime.now().strftime('%M:%S.%f'),
"sequence": sequenceNum}
packet = IP(dst="127.0.0.1", src="10.0.0.1")/UDP(sport=12345, dport=5555)/Raw(load=json.dumps(payload))