From 54e2bc03f87c91df78e56cd3e707cf0ca54e3f2b Mon Sep 17 00:00:00 2001
From: gpotter2 <gabriel@potter.fr>
Date: Wed, 30 Aug 2017 16:45:02 +0200
Subject: [PATCH] Add analyse data test to pnio_rtc

---
 scapy/contrib/pnio_rtc.uts | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/scapy/contrib/pnio_rtc.uts b/scapy/contrib/pnio_rtc.uts
index 76f33edd..7c8934b2 100644
--- a/scapy/contrib/pnio_rtc.uts
+++ b/scapy/contrib/pnio_rtc.uts
@@ -104,3 +104,22 @@ p == Ether(dst='00:01:02:03:04:05', src='06:07:08:09:0a:0b') / ProfinetIO(frameI
       ]
   )
 
+= PNIORealTime - Analyse data
+# Possible thanks to https://github.com/ITI/ICS-Security-Tools/blob/master/pcaps/profinet/profinet.pcap
+
+bind_layers(UDP, ProfinetIO, dport=0x8894)
+bind_layers(UDP, ProfinetIO, sport=0x8894)
+
+packets = [Ether('0090274ee3fc000991442017080045000128000c00004011648f0a0a00810a0a00968894061e011444c604022800100000000000a0de976cd111827100010003015a0100a0de976cd111827100a02442df7ddbabbaec1d005443b2500b01630abafd0100000001000000000000000500ffffffffbc000000000000000000a80000004080000000000000a80000008009003c0100000a0000000000000000000000000000000000000000000000010000f840000000680000000000000000000000000000000000000000000000000030002c0100000100000000000200000000000100020001000000010003ffff010a0001ffff814000010001ffff814000310018010000010000000000010001ffff814000010001ffff814000320018010000010000000000010000000000010001000100000001'.decode("hex")),
+           Ether('0009914420170090274ee3fc0800450000c0b28800008011727a0a0a00960a0a0081061e889400ac689504000800100000000000a0de976cd111827100010003015a0100a0de976cd111827100a02442df7ddbabbaec1d005443b2500b01630abafd0000000001000000000000000500ffffffff54000000000040800000400000004080000000000000400000000009003c0100000a0000000000000000000000000000000000000000000000010000f84000008000000000000000000000000000000000000000000000000000'.decode("hex"))]
+           
+analysed_data = PNIORealTime.analyse_data(packets)
+assert len(analysed_data) == 2
+x = analysed_data[('00:09:91:44:20:17', '00:90:27:4e:e3:fc')]
+assert len(x) == 2
+assert x[0][1] == PNIORealTimeRawData
+assert x[0][0] == -262
+assert x[0][2]["length"] == 87
+
+ProfinetIO._overload_fields[UDP].pop("sport")
+ProfinetIO._overload_fields[UDP]["dport"] = 0x8892
\ No newline at end of file
-- 
GitLab