From 3f776cff81180b09e1e6cbf1e86c3c1f036f397a Mon Sep 17 00:00:00 2001 From: "paul.squizzato" Date: Mon, 13 Mar 2023 17:47:56 +0000 Subject: [PATCH] =?UTF-8?q?avanc=C3=A9e=20du=20d=C3=A9codeur=20bancal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pymodbus/.decoder4Paul.py.swp | Bin 0 -> 12288 bytes Pymodbus/decoder2.py | 1 + Pymodbus/decoder3.py | 59 ---------------------------- Pymodbus/decoder3bancal.py | 72 +++++++++++++++++++++++----------- Pymodbus/decoder4Paul.py | 39 ++++++++++++++++++ 5 files changed, 90 insertions(+), 81 deletions(-) create mode 100644 Pymodbus/.decoder4Paul.py.swp delete mode 100644 Pymodbus/decoder3.py create mode 100644 Pymodbus/decoder4Paul.py diff --git a/Pymodbus/.decoder4Paul.py.swp b/Pymodbus/.decoder4Paul.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..ab8ed68c8a630df8a1e2d244e2f88458bf924921 GIT binary patch literal 12288 zcmeI2KX21O6u_?x9Vmqg1{kkbQKhJH{m14=n69nE1!brIB82mnzA5)o~2)$+`W6g`}sUXe$DdM!!^3(R0$kY zge=?~4{trVOm2@8qNTK1^Qa@_P2nfS%BZ+kS;EpPw>+>yCfnh*NUTl`d@t2IZ5cLG zQwn(?L#`L=ei}QfGb$(cqX9H<0RyRxic6E53)M);%+oV|IJ8!p>m15?N%f|z?lx_NB)$h0fxr~OTLw#F4$ z)3A9D74t+3ds@r}_rqaHdJC^KTt5uq78yRU`fTOr_4fz5!mHf>lN-1US3Enf~qWJ**?ohfdtoM(7^H?sB;*mzABO@YnX3`f-|&8a z&%0jZxG{eU+!rqi5p5;4rTKFfNGOsQO((C9r@o=>=C2Wc9B0klaH#C1#XCg`Mf4(R d)o8cuH)|m?)1}ntQd1-)p6pT8u{$y$KLJ~0H7)=E literal 0 HcmV?d00001 diff --git a/Pymodbus/decoder2.py b/Pymodbus/decoder2.py index 1a0ba84..3aeab27 100644 --- a/Pymodbus/decoder2.py +++ b/Pymodbus/decoder2.py @@ -17,6 +17,7 @@ def decode(pkt): prt=1 if prt==1: print(i) + print("fini") scapy.sniff(iface="lo", prn=decode) diff --git a/Pymodbus/decoder3.py b/Pymodbus/decoder3.py deleted file mode 100644 index bf871e7..0000000 --- a/Pymodbus/decoder3.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/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: - value = i[i.find("[")+1:i.rfind("]")] - value = value.split(", ") - miniL[2] = value - #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: - if(type(miniL[2])==list): - if miniL[0]=="r": - for i in range(len(miniL[2])): - bigL.append([miniL[0],int(miniL[1],16)+i,miniL[2][i]]) - else: - for i in range(len(miniL[2])): - byte=8*[0] - convert=bin(int(miniL[2][i])) - for j in range(len(convert)-2): - byte[j]=convert[-(j+1)] - for j in range(8): - bigL.append([miniL[0],int(miniL[1],16)+i*8+j,byte[j]]) - else: - bigL.append(miniL) - print(bigL) - miniL = [0,0,0] -miniL = [0,0,0] -scapy.sniff(iface="lo", prn=decode) - diff --git a/Pymodbus/decoder3bancal.py b/Pymodbus/decoder3bancal.py index 9eaa30a..5287c86 100644 --- a/Pymodbus/decoder3bancal.py +++ b/Pymodbus/decoder3bancal.py @@ -9,64 +9,92 @@ def decode(pkt): 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 and "Read" in i: prt=1 - miniL[0] = "cr" + miniL[0] = "c" if "Coil" in i and "Write" in i: prt=1 miniL[0]="cw" elif "Register" in i: prt=2 miniL[0] = "r" - #if prt==1: - #print(i) + miniL[3]=1 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 and miniL[0]=="r"): value = i[i.find("[")+1:i.rfind("]")] value = value.split(", ") miniL[2] = value - #print("value= ",value," addr= ",addr) - elif "outputValue" in i or "quantityOutput" in i or "registerValue" in i: + elif "outputValue" in i or "registerValue" in i: miniL[2] = i[i.find("=")+2:] - elif "outputsValue" in i and miniL[0]=="c": + miniL[3]=1 + print("cest lui qui fait chier",miniL) + elif "quantity" in i and miniL[0]=="c": + miniL[3]=i[i.find("=")+2:] + print(miniL[3]) + elif "quantityOutput" in i and miniL[0]=="cw": + miniL[3]=i[i.find("=")+2:] + print(miniL[3]) + elif "outputsValue" in i and miniL[0]=="cw": valInter=i[i.find("=")+2:] valInter2=valInter[1:-1] - #miniL[2] = int(valInter2,16) - miniL[2]=vaInter2 + miniL[2]=valInter2 if miniL.count(0)==0: if(type(miniL[2])==list): if miniL[0]=="r": for i in range(len(miniL[2])): - bigL.append([miniL[0],int(miniL[1],16)+i,int(miniL[2][i],16)]) - if miniL[0]=="cr": - print("hého:",miniL) + if("0x" in miniL[2]): + miniL[2]=int(miniL[2],16) + if("0x" in str(miniL[1])): + miniL[1]=int(miniL[1],16) + bigL.append([miniL[0],miniL[1]+i,miniL[2][i]]) + if miniL[0]=="c": for i in range(len(miniL[2])): byte=8*[0] - print("regarde ici",miniL[2][i]) convert=bin(int(miniL[2][i])) for j in range(len(convert)-2): byte[j]=convert[-(j+1)] for j in range(8): - bigL.append(["c",int(miniL[1],16)+i*8+j,byte[j]]) - if miniL[0]=="cw": - print("salut:",miniL) - bigL.append(["c",int(miniL[1],16),0]) + print(miniL[1],j) + bigL.append(["c",int(str(miniL[1]),16)+i*8+j,byte[j]]) else: + if "0x" in str(miniL[1]): + miniL[1]=int(miniL[1],16) + if "0x" in str(miniL[2]): + miniL[2]=int(miniL[2],16) + if "0x" in str(miniL[3]): + miniL[3]=int(miniL[3],16) + if miniL[0]=="cw" and miniL[2]>1: + print("problem ?") + if miniL[3]>1: + valeurs=bin(miniL[2])[::-1][:-2] + while len(valeurs)