Fields

Here's a list of fields that Scapy supports out of the box:

Simple datatypes

Legend:

  • X - hexadecimal representation
  • LE - little endian (default is big endian = network byte order)
  • Signed - signed (default is unsigned)
ByteField           
XByteField    

ShortField
LEShortField
XShortField

X3BytesField        # three bytes (in hexad 

IntField
SignedIntField
LEIntField
LESignedIntField
XIntField

LongField       
XLongField
LELongField

IEEEFloatField
IEEEDoubleField 
BCDFloatField       # binary coded decimal

BitField
XBitField

BitFieldLenField    # BitField specifying a length (used in RTP)
FlagsField          
FloatField

Enumerations

Possible field values are taken from a given enumeration (list, dictionary, ...) e.g. ByteEnumField("code", 4, {1:"REQUEST",2:"RESPONSE",3:"SUCCESS",4:"FAILURE"})

EnumField(name, default, enum, fmt = "H")
CharEnumField
BitEnumField
ShortEnumField
LEShortEnumField
ByteEnumField
IntEnumField
SignedIntEnumField
LEIntEnumField
XShortEnumField

Strings

StrField(name, default, fmt="H", remain=0, shift=0)
StrLenField(name, default, fld=None, length_from=None, shift=0):
StrFixedLenField
StrNullField
StrStopField

Lists and lengths

The FieldListField and LengthFields articles have more info on this topic.

FieldList(name, default, field, fld=None, shift=0, length_from=None, count_from=None)
    # A list assembled and dissected with many times the same field type
    
    # field: instance of the field that will be used to assemble and disassemble a list item
    # length_from: name of the FieldLenField holding the list length
     
FieldLenField     #  holds the list length of a FieldList field
LEFieldLenField

LenField          # contains len(pkt.payload)

PacketField       # holds packets
PacketLenField    # used e.g. in ISAKMP_payload_Proposal
PacketListField

Special

Emph     # Wrapper to emphasize field when printing, e.g. Emph(IPField("dst", "127.0.0.1")),

ActionField

ConditionalField(fld, cond)
        # Wrapper to make field 'fld' only appear if function 'cond' evals to True
        # e.g. ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)
        

PadField(fld, align, padwith=None)  
       # Add bytes after the proxified field so that it ends at the specified alignment from its begining

TCP/IP

IPField
SourceIPField

IPoptionsField
TCPOptionsField

MACField
DestMACField(MACField)
SourceMACField(MACField)
ARPSourceMACField(MACField)

ICMPTimeStampField

802.11

Dot11AddrMACField
Dot11Addr2MACField
Dot11Addr3MACField
Dot11Addr4MACField
Dot11SCField

DNS

DNSStrField
DNSRRCountField
DNSRRField
DNSQRField
RDataField
RDLenField

ASN.1

ASN1F_element
ASN1F_field
ASN1F_INTEGER
ASN1F_enum_INTEGER
ASN1F_STRING
ASN1F_OID
ASN1F_SEQUENCE
ASN1F_SEQUENCE_OF
ASN1F_PACKET
ASN1F_CHOICE

Other protocols

NetBIOSNameField         # NetBIOS (StrFixedLenField) 

ISAKMPTransformSetField  # ISAKMP (StrLenField) 

TimeStampField           # NTP (BitField)

First version of this list: Dirk Loss, 2008-03-01