parent
b9d13fb270
commit
3f776cff81
Binary file not shown.
@ -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)
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import scapy.all as scapy
|
||||||
|
import scapy.contrib.modbus as mb
|
||||||
|
|
||||||
|
valeursPropres={}
|
||||||
|
valeursPasPropres=[]
|
||||||
|
machin=["","",""]
|
||||||
|
|
||||||
|
def decode(pkt):
|
||||||
|
prt=0
|
||||||
|
cle=["",""]
|
||||||
|
f=open("truc.txt","w")
|
||||||
|
if "ModbusADU" in pkt:
|
||||||
|
grPkt=pkt["ModbusADU"].show(dump=True)
|
||||||
|
lPkt=grPkt.splitlines()
|
||||||
|
for i in lPkt:
|
||||||
|
if "Addr" in i:
|
||||||
|
print(i)
|
||||||
|
addresse=i[17:]
|
||||||
|
cle[1]=addresse
|
||||||
|
machin[1]=addresse
|
||||||
|
if "Write" in i or "Read" in i:
|
||||||
|
print(i)
|
||||||
|
if "Coil" in i:
|
||||||
|
cle[0]="C"
|
||||||
|
machin[0]="C"
|
||||||
|
else:
|
||||||
|
cle[0]="R"
|
||||||
|
machin[0]="R"
|
||||||
|
if "Value" in i or "coilStatus" in i or "registerVal" in i:
|
||||||
|
print(i)
|
||||||
|
machin[2] = i[-5:]
|
||||||
|
if "" not in machin:
|
||||||
|
print(machin)
|
||||||
|
|
||||||
|
scapy.sniff(iface="lo", prn=decode)
|
||||||
|
|
Loading…
Reference in new issue