Je voudrais récupérer une liste des variables à partir des fichiers pcap (capture du réseau) qui se compose de ModbusADURequest pour la requête et d'une ModbusADUResponse pour la réponse en fonction du code de fonction. Le souci c'est ces variables sont des fois dans ModbusADURequest et d'autres fois dans ModbusADUResponse comme le montre le code suivant. Je ne sais pas si mon code est bon sur tout pour la fonction 16 pour laquelle les variables que je cherche à récupérer sont dans le ModbusADUResponse ou bien à la place du if p.haslayer('ModbusADURequest') il faut mettre elif p.haslayer('ModbusADURequest'):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 def reg_val_list(s): v = [] for p in s: if p.haslayer('ModbusADUResponse'): try: if p['ModbusADUResponse'][1].funcCode == 6: a = p['ModbusADUResponse'][1].registerValue v.append(p['ModbusADUResponse'][1].registerValue) elif p['ModbusADUResponse'][1].funcCode == 5: v.append(p['ModbusADUResponse'][1].outputValue) else: v += p['ModbusADUResponse'][1].registerVal except AttributeError: pass if p.haslayer('ModbusADURequest'): try: v.append(p['ModbusADURequest'][1].outputsValue) except AttributeError: pass return v
Partager