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)