#!/usr/bin/env python # -*- coding: utf-8 -*- import scapy.all as scapy import scapy.contrib.modbus as mb def decode(pkt): prt=0 addr,value = "","" bigL = [ ] global miniL f=open("truc.txt","w") if "ModbusADU" in pkt: grPkt=pkt["ModbusADU"].show(dump=True) lPkt=grPkt.splitlines() for i in lPkt: if "###" in i: #if addr!="" and value!="": #print("addr=",addr,"value=",value) prt=0 typResp="" if "Coil" in i: prt=1 miniL[0] = "c" elif "Register" in i: prt=2 miniL[0] = "r" #if prt==1: #print(i) elif "startAddr" in i or "outputAddr" in i or "registerAddr" in i: miniL[1] = i[i.find("=")+2:] #print(addr) elif "coilStatus" in i or "registerVal=" in i or "outputsValue" in i: miniL[2] = i[i.find("[")+1:i.rfind("]")] #print("value= ",value," addr= ",addr) elif "outputValue" in i or "quantityOutput" in i or "registerValue" in i: miniL[2] = i[i.find("=")+2:] if miniL.count(0)==0: print(miniL) miniL = [0,0,0] miniL = [0,0,0] scapy.sniff(iface="lo", prn=decode)