You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
816 B
27 lines
816 B
#!/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 scapy.all as scapy
|
|
import scapy.contrib.modbus as mb
|
|
|
|
def decode(pkt):
|
|
if "ModbusADU" in pkt:
|
|
miniL=[]
|
|
modpkt = pkt["ModbusADU"]
|
|
print(modpkt.payload.name)
|
|
for i in modpkt.payload.fields:
|
|
miniL.append(modpkt.payload.getfieldval(i))
|
|
print(i,modpkt.payload.getfieldval(i))
|
|
if(i=="coilStatus"):
|
|
bi=str(bin(modpkt.payload.getfieldval(i)[0]))
|
|
bi=bi[2:]
|
|
bi=bi.rjust(8,'0')
|
|
print([*bi])
|
|
bigL.append(miniL)
|
|
print(bigL)
|
|
bigL = []
|
|
scapy.sniff(iface="lo", prn=decode)
|