25 lines
588 B
Python
25 lines
588 B
Python
from scapy.all import *
|
|
import sys, os
|
|
|
|
CALC_TYPE = 0x1212
|
|
|
|
ADD_OP = 0
|
|
SUB_OP = 1
|
|
LOOKUP_OP = 2
|
|
ADD_REG_OP = 3
|
|
SET_REG_OP = 4
|
|
|
|
class Calc(Packet):
|
|
name = "Calc"
|
|
fields_desc = [
|
|
IntField("op1", 0),
|
|
ByteEnumField("opCode", 0, {ADD_OP:"ADD", SUB_OP:"SUB", LOOKUP_OP:"LOOKUP", ADD_REG_OP:"ADD_REG", SET_REG_OP:"SET_REG"}),
|
|
IntField("op2", 0),
|
|
IntField("result", 0)
|
|
]
|
|
def mysummary(self):
|
|
return self.sprintf("op1=%op1% %opCode% op2=%op2% result=%result%")
|
|
|
|
|
|
bind_layers(Ether, Calc, type=CALC_TYPE)
|
|
bind_layers(Calc, Raw)
|