scapy.contrib.enipTCP

EtherNet/IP (Industrial Protocol)

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

class scapy.contrib.enipTCP.BaseSendPacket(_pkt, /, *, interfaceHandle=0, timeout=0, encapsulatedPacket=None)[source]

Bases: Packet

Abstract Class

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        INTERFACEHANDLE                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            TIMEOUT            |       ENCAPSULATEDPACKET      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BaseSendPacket                        
BaseSendPacket fields

interfaceHandle

LEIntField

0

timeout

LEShortField

0

encapsulatedPacket

PacketField

None

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

Bases: Packet

Command Specific Data Field Default

aliastypes
class scapy.contrib.enipTCP.ENIPListIdentityReply(_pkt, /, *, itemCount=0, identityItems=None)[source]

Bases: Packet

List Identity 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           |         IDENTITYITEMS         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. ENIPListIdentityReply                    
ENIPListIdentityReply fields

itemCount

FieldLenField

0

identityItems

PacketField

None

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

Bases: Packet

List Identity Items 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          |            ITEMDATA           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Fig. ENIPListIdentityReplyItems                  
ENIPListIdentityReplyItems fields

itemTypeCode

LEIntField

0

itemLength

FieldLenField

0

itemData

StrLenField

b''

class scapy.contrib.enipTCP.ENIPListInterfacesReply(_pkt, /, *, itemCount=0, identityItems=0)[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           |         IDENTITYITEMS         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. ENIPListInterfacesReply                   
ENIPListInterfacesReply fields

itemCount

FieldLenField

0

identityItems

PacketField

0

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

Bases: Packet

List Interfaces Items 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          |            ITEMDATA           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                Fig. ENIPListInterfacesReplyItems                 
ENIPListInterfacesReplyItems fields

itemTypeCode

LEIntField

0

itemLength

FieldLenField

0

itemData

StrLenField

b''

class scapy.contrib.enipTCP.ENIPListServicesReply(_pkt, /, *, itemCount=0, targetItems=None)[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           |          TARGETITEMS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. ENIPListServicesReply                    
ENIPListServicesReply fields

itemCount

FieldLenField

0

targetItems

PacketField

None

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

Bases: Packet

List Services Items 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                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    VERSION    |      FLAG     |          SERVICENAME          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Fig. ENIPListServicesReplyItems                  
ENIPListServicesReplyItems fields

itemTypeCode

LEIntField

0

itemLength

LEIntField

0

version

ByteField

1

flag

ByteField

0

serviceName

StrFixedLenField

None

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

Bases: CommandSpecificData

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, /, *, interfaceHandle=0, timeout=0, encapsulatedPacket=None)[source]

Bases: BaseSendPacket

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        INTERFACEHANDLE                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            TIMEOUT            |       ENCAPSULATEDPACKET      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. ENIPSendRRData                        
ENIPSendRRData fields

interfaceHandle

LEIntField

0

timeout

LEShortField

0

encapsulatedPacket

PacketField

None

class scapy.contrib.enipTCP.ENIPSendUnitData(_pkt, /, *, interfaceHandle=0, timeout=0, encapsulatedPacket=None)[source]

Bases: BaseSendPacket

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        INTERFACEHANDLE                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            TIMEOUT            |       ENCAPSULATEDPACKET      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. ENIPSendUnitData                       
ENIPSendUnitData fields

interfaceHandle

LEIntField

0

timeout

LEShortField

0

encapsulatedPacket

PacketField

None

class scapy.contrib.enipTCP.ENIPTCP(_pkt, /, *, commandId=None, length=0, session=0, status=None, senderContext=0, options=0, commandSpecificData=None)[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                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      COMMANDSPECIFICDATA      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. ENIPTCP                           
ENIPTCP fields

commandId

LEShortEnumField

None

length

LEShortField

0

session

XLEIntField

0

status

LEIntEnumField

None

senderContext

LELongField

0

options

LEIntField

0

commandSpecificData

MultipleTypeField (PacketField, PacketField, PacketField, PacketField, PacketField, PacketField, PacketField)

None

post_build(pkt, pay)[source]
class scapy.contrib.enipTCP.EncapsulatedPacket(_pkt, /, *, itemCount=2, item=[])[source]

Bases: Packet

Encapsulated Packet

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           |              ITEM             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. EncapsulatedPacket                      
EncapsulatedPacket fields

itemCount

LEShortField

2

item

PacketListField

[]

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''