From 618883221c0736a13748965e9b34f31d664ce3fd Mon Sep 17 00:00:00 2001 From: "Eloan.Andre" Date: Wed, 22 Mar 2023 17:04:22 +0000 Subject: [PATCH] =?UTF-8?q?propet=C3=A9=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/decoder_propre.py | 61 ++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/decoder_propre.py b/src/decoder_propre.py index 3143b28..49378ce 100644 --- a/src/decoder_propre.py +++ b/src/decoder_propre.py @@ -11,35 +11,34 @@ import scapy.contrib.modbus as mb from triPacket import triPacket def decode(pkt): + '''Insert the packet's `pkt` main informations into the `connec` database''' if "ModbusADU" in pkt: global miniL modpkt = pkt["ModbusADU"] - typeCall = "" + type_call = "" if "Multiple" in modpkt.payload.name: - typeCall += "m" + type_call += "m" else: - typeCall += "s" + type_call += "s" if "Coil" in modpkt.payload.name: - typeCall += "C" + type_call += "C" else: - typeCall += "R" - miniL[0] = typeCall + type_call += "R" + miniL[0] = type_call if "Read" in modpkt.payload.name: - typeCall += "r" + type_call += "r" if "Response" in modpkt.payload.name: - byteCount = modpkt.payload.getfieldval("byteCount") + byte_count = modpkt.payload.getfieldval("byteCount") status = [] - if "C" in typeCall: - Value = modpkt.payload.getfieldval("coilStatus") - for j in range(byteCount): - bi=str(bin(Value[j])) - bi=bi[2:] - bi=bi.rjust(8,'0')[::-1] - status.extend(k for k in [*bi]) + if "C" in type_call: + value = modpkt.payload.getfieldval("coilStatus") + for j in range(byte_count): + val=str(bin(value[j]))[2:].rjust(8,'0')[::-1] + status.extend(k for k in [*val]) else: status = modpkt.payload.getfieldval("registerVal") for j in range(len(status)): @@ -47,21 +46,21 @@ def decode(pkt): triPacket([miniL[0][1],miniL[2]+j,status[j]],connec) miniL = [0,0,0] else: - startAddr = modpkt.payload.getfieldval("startAddr") - miniL[2] = startAddr + addr = modpkt.payload.getfieldval("startAddr") + miniL[2] = addr else: - typeCall += "w" + type_call += "w" if "Response" in modpkt.payload.name: pass else: - if "m" in typeCall: + if "m" in type_call: addr = modpkt.payload.getfieldval("startAddr") - #byteCount = modpkt.payload.getfieldval("quantityOutput") - outputValue = modpkt.payload.getfieldval("outputsValue") + #byte_count = modpkt.payload.getfieldval("quantityOutput") + output_value = modpkt.payload.getfieldval("outputsValue") status = [] - if "C" in typeCall: - for j in range(len(outputValue)): - val=str(bin(outputValue[j]))[2:].rjust(8,'0')[::-1] + if "C" in type_call: + for j in range(len(output_value)): + val=str(bin(output_value[j]))[2:].rjust(8,'0')[::-1] status.extend(k for k in [*val]) for j in range(len(status)): @@ -69,17 +68,18 @@ def decode(pkt): triPacket([miniL[0][1],addr+j,status[j]],connec) #print(bigL) else: - if "C" in typeCall: + if "C" in type_call: addr = modpkt.payload.getfieldval("outputAddr") - outputValue = modpkt.payload.getfieldval("outputValue") + output_value = modpkt.payload.getfieldval("outputValue") else: addr = modpkt.payload.getfieldval("registerAddr") - outputValue = modpkt.payload.getfieldval("registerValue") - triPacket([miniL[0][1],addr,outputValue],connec) - #bigL.append([miniL[0],outputValue,addr]) + output_value = modpkt.payload.getfieldval("registerValue") + triPacket([miniL[0][1],addr,output_value],connec) + #bigL.append([miniL[0],output_value,addr]) #print(bigL) -bigL = [] +#bigL = [] + print("In order for data sniffed to be stored inside the database, please register the following :") DB_HOST = input('host of the database server : ') if not DB_HOST: @@ -96,3 +96,4 @@ connec=[DB_HOST,DB_NAME,DB_USER,DB_PASSWORD] miniL = [0,0,0] scapy.sniff(iface="lo", prn=decode) +