scapy.contrib.enipTCP module

EtherNet/IP (Industrial Protocol)

Based on https://github.com/scy-phy/scapy-cip-enip EtherNet/IP Home: www.odva.org

class scapy.contrib.enipTCP.ENIPListIdentity(_pkt, /, *, itemCount=0, items=[])[source]

Bases: Packet

List identity request and response

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           ITEMCOUNT           |             ITEMS             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. ENIPListIdentity                       
ENIPListIdentity fields

itemCount

FieldLenField

0

items

PacketListField

[]

class scapy.contrib.enipTCP.ENIPListIdentityItem(_pkt, /, *, itemTypeCode=0, itemLength=0, protocolVersion=0, sinFamily=0, sinPort=0, sinAddress=None, sinZero=0, vendorId=0, deviceType=0, productCode=0, revisionMajor=0, revisionMinor=0, status=0, serialNumber=0, productNameLength=0, productName=None, state=0)[source]

Bases: Packet

List Identity Item Fields

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          ITEMTYPECODE         |           ITEMLENGTH          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        PROTOCOLVERSION        |           SINFAMILY           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            SINPORT            |           SINADDRESS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |            SINZERO            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |            VENDORID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           DEVICETYPE          |          PRODUCTCODE          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| REVISIONMAJOR | REVISIONMINOR |             STATUS            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SERIALNUMBER                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PRODUCTNAMELENG|          PRODUCTNAME          |     STATE     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. ENIPListIdentityItem                     
ENIPListIdentityItem fields

itemTypeCode

LEShortEnumField

0

itemLength

LEFieldLenField

0

protocolVersion

LEShortField

0

sinFamily

ShortField

0

sinPort

ShortField

0

sinAddress

IPField

None

sinZero

LongField

0

vendorId

LEShortField

0

deviceType

LEShortEnumField

0

productCode

LEShortField

0

revisionMajor

ByteField

0

revisionMinor

ByteField

0

status

LEShortField

0

serialNumber

XLEIntField

0

productNameLength

ByteField

0

productName

StrLenField

None

state

ByteField

0

class scapy.contrib.enipTCP.ENIPListInterfaces(_pkt, /, *, itemCount=0, items=[])[source]

Bases: Packet

List Interfaces Command Field

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           ITEMCOUNT           |             ITEMS             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. ENIPListInterfaces                      
ENIPListInterfaces fields

itemCount

FieldLenField

0

items

PacketListField

[]

class scapy.contrib.enipTCP.ENIPListInterfacesItem(_pkt, /, *, itemTypeCode=0, itemLength=0, itemData=b'')[source]

Bases: Packet

List Interfaces Item Fields

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          ITEMTYPECODE         |           ITEMLENGTH          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ITEMDATA           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. ENIPListInterfacesItem                    
ENIPListInterfacesItem fields

itemTypeCode

LEShortEnumField

0

itemLength

FieldLenField

0

itemData

StrLenField

b''

class scapy.contrib.enipTCP.ENIPListServices(_pkt, /, *, itemCount=0, items=[])[source]

Bases: Packet

List Services Command Field

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           ITEMCOUNT           |             ITEMS             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. ENIPListServices                       
ENIPListServices fields

itemCount

FieldLenField

0

items

PacketListField

[]

class scapy.contrib.enipTCP.ENIPListServicesItem(_pkt, /, *, itemTypeCode=0, itemLength=0, protocolVersion=0, flag=0, serviceName=None)[source]

Bases: Packet

List Services Item Field

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          ITEMTYPECODE         |           ITEMLENGTH          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        PROTOCOLVERSION        |              FLAG             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SERVICENAME                          |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. ENIPListServicesItem                     
ENIPListServicesItem fields

itemTypeCode

LEShortEnumField

0

itemLength

LEFieldLenField

0

protocolVersion

LEShortField

0

flag

XLEShortField

0

serviceName

StrFixedLenField

None

class scapy.contrib.enipTCP.ENIPRegisterSession(_pkt, /, *, protocolVersion=1, options=0)[source]

Bases: Packet

Register Session Command Field

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        PROTOCOLVERSION        |            OPTIONS            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. ENIPRegisterSession                     
ENIPRegisterSession fields

protocolVersion

LEShortField

1

options

LEShortField

0

class scapy.contrib.enipTCP.ENIPSendRRData(_pkt, /, *, interface=0, timeout=255, itemCount=0, items=[])[source]

Bases: Packet

Send RR Data Command Field

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           INTERFACE                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            TIMEOUT            |           ITEMCOUNT           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ITEMS             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. ENIPSendRRData                        
ENIPSendRRData fields

interface

LEIntEnumField

0

timeout

LEShortField

255

itemCount

LEFieldLenField

0

items

PacketListField

[]

class scapy.contrib.enipTCP.ENIPSendUnitData(_pkt, /, *, interface=0, timeout=255, itemCount=0, items=[])[source]

Bases: Packet

Send Unit Data Command Field

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           INTERFACE                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            TIMEOUT            |           ITEMCOUNT           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ITEMS             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. ENIPSendUnitData                       
ENIPSendUnitData fields

interface

LEIntEnumField

0

timeout

LEShortField

255

itemCount

LEFieldLenField

0

items

PacketListField

[]

class scapy.contrib.enipTCP.ENIPTCP(_pkt, /, *, commandId=None, length=0, session=0, status=None, senderContext=0, options=0)[source]

Bases: Packet

Ethernet/IP packet over TCP

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           COMMANDID           |             LENGTH            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            SESSION                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             STATUS                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SENDERCONTEXT                         |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            OPTIONS                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. ENIPTCP                           
ENIPTCP fields

commandId

LEShortEnumField

None

length

LEShortField

0

session

XLEIntField

0

status

LEIntEnumField

None

senderContext

LELongField

0

options

LEIntField

0

payload_guess

Possible sublayers: ENIPListIdentity, ENIPListInterfaces, ENIPListServices, ENIPRegisterSession, ENIPSendRRData, ENIPSendUnitData, ENIPUnknownCommand, ENIPUnregisterSession

post_build(pkt, pay)[source]
class scapy.contrib.enipTCP.ENIPUnknownCommand(_pkt, /)[source]

Bases: Packet

Unknown Command reply

aliastypes
class scapy.contrib.enipTCP.ENIPUnregisterSession(_pkt, /)[source]

Bases: Packet

Unregister Session Command Field

aliastypes
class scapy.contrib.enipTCP.ItemData(_pkt, /, *, typeId=0, length=0, data=b'')[source]

Bases: Packet

Common Packet Format

aliastypes
extract_padding(s)[source]
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             TYPEID            |             LENGTH            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              DATA             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. ItemData                           
ItemData fields

typeId

LEShortEnumField

0

length

LEShortField

0

data

XLEStrLenField

b''