diff --git a/Pymodbus/.decoder4Paul.py.swp b/Pymodbus/.decoder4Paul.py.swp new file mode 100644 index 0000000..ab8ed68 Binary files /dev/null and b/Pymodbus/.decoder4Paul.py.swp differ 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)