Récupérer une liste des variable d'une requête réponse Modbus
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:
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 |