Les decoder sont terminés, celui à utiliser est decoderMain.py
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
parent
59efb94b27
commit
790a5a344c
@ -1,96 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#https://scapy.readthedocs.io/en/latest/api/scapy.packet.html#scapy.packet.Packet
|
||||
#https://scapy.readthedocs.io/en/latest/api/scapy.contrib.modbus.html
|
||||
|
||||
import getpass
|
||||
import scapy.all as scapy
|
||||
import scapy.contrib.modbus as mb
|
||||
|
||||
from triPacket import triPacket
|
||||
|
||||
def decode(pkt):
|
||||
if "ModbusADU" in pkt:
|
||||
global miniL
|
||||
modpkt = pkt["ModbusADU"]
|
||||
type_call = ""
|
||||
|
||||
if "Multiple" in modpkt.payload.name:
|
||||
type_call += "m"
|
||||
else:
|
||||
type_call += "s"
|
||||
|
||||
if "Coil" in modpkt.payload.name:
|
||||
type_call += "C"
|
||||
else:
|
||||
type_call += "R"
|
||||
miniL[0] = type_call
|
||||
|
||||
|
||||
if "Read" in modpkt.payload.name:
|
||||
type_call += "r"
|
||||
if "Response" in modpkt.payload.name:
|
||||
byte_count = modpkt.payload.getfieldval("byteCount")
|
||||
status = []
|
||||
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)):
|
||||
#bigL.append([miniL[0],status[j],miniL[2]+j])
|
||||
triPacket([miniL[0][1],miniL[2]+j,status[j]],connec)
|
||||
miniL = [0,0,0]
|
||||
else:
|
||||
addr = modpkt.payload.getfieldval("startAddr")
|
||||
miniL[2] = addr
|
||||
else:
|
||||
type_call += "w"
|
||||
if "Response" in modpkt.payload.name:
|
||||
pass
|
||||
else:
|
||||
if "m" in type_call:
|
||||
addr = modpkt.payload.getfieldval("startAddr")
|
||||
#byte_count = modpkt.payload.getfieldval("quantityOutput")
|
||||
output_value = modpkt.payload.getfieldval("outputsValue")
|
||||
status = []
|
||||
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)):
|
||||
#bigL.append([miniL[0],status[j],addr+j]) # changer 5 pour mettre l'adresse
|
||||
triPacket([miniL[0][1],addr+j,status[j]],connec)
|
||||
#print(bigL)
|
||||
else:
|
||||
if "C" in type_call:
|
||||
addr = modpkt.payload.getfieldval("outputAddr")
|
||||
output_value = modpkt.payload.getfieldval("outputValue")
|
||||
else:
|
||||
addr = modpkt.payload.getfieldval("registerAddr")
|
||||
output_value = modpkt.payload.getfieldval("registerValue")
|
||||
triPacket([miniL[0][1],addr,output_value],connec)
|
||||
#bigL.append([miniL[0],output_value,addr])
|
||||
|
||||
#print(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:
|
||||
DB_HOST = '192.168.128.141'
|
||||
DB_NAME = input('name of the database : ')
|
||||
if not DB_NAME:
|
||||
DB_NAME = 'dblodufour1'
|
||||
DB_USER = input('login of the user : ')
|
||||
if not DB_USER:
|
||||
DB_USER = 'lodufour1'
|
||||
DB_PASSWORD = getpass.getpass('user password : ')
|
||||
connec=[DB_HOST,DB_NAME,DB_USER,DB_PASSWORD]
|
||||
|
||||
|
||||
miniL = [0,0,0]
|
||||
scapy.sniff(iface="lo", prn=decode)
|
Loading…
Reference in new issue