scapy.contrib.pnio_dcp
- class scapy.contrib.pnio_dcp.DCPAliasNameBlock(_pkt, /, *, option=2, sub_option=6, dcp_block_length=None, block_info=0, alias_name=b'et200sp', padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPAliasNameBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPAliasNameBlock).option>, <MultiEnumField (DCPAliasNameBlock).sub_option>, <FieldLenField (DCPAliasNameBlock).dcp_block_length>, <ShortEnumField (DCPAliasNameBlock).block_info>, <StrLenField (DCPAliasNameBlock).alias_name>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPBaseBlock(_pkt, /, *, option=1, sub_option=2, dcp_block_length=None, block_info=0, data=b'')[source]
Bases:
Packetbase class for all DCP Blocks
- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPBaseBlock'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.pnio_dcp.DCPControlBlock(_pkt, /, *, option=5, sub_option=4, dcp_block_length=3, response=2, response_sub_option=2, block_error=0, padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPControlBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPControlBlock).option>, <MultiEnumField (DCPControlBlock).sub_option>, <LenField (DCPControlBlock).dcp_block_length>, <ByteEnumField (DCPControlBlock).response>, <MultiEnumField (DCPControlBlock).response_sub_option>, <ByteEnumField (DCPControlBlock).block_error>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPDeviceIDBlock(_pkt, /, *, option=2, sub_option=3, dcp_block_length=None, block_info=0, vendor_id=42, device_id=787, padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPDeviceIDBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPDeviceIDBlock).option>, <MultiEnumField (DCPDeviceIDBlock).sub_option>, <LenField (DCPDeviceIDBlock).dcp_block_length>, <ShortEnumField (DCPDeviceIDBlock).block_info>, <XShortField (DCPDeviceIDBlock).vendor_id>, <XShortField (DCPDeviceIDBlock).device_id>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPDeviceInitiativeBlock(_pkt, /, *, option=6, sub_option=1, dcp_block_length=None, block_info=0, device_initiative=1)[source]
Bases:
Packetdevice initiative DCP block
- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPDeviceInitiativeBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPDeviceInitiativeBlock).option>, <MultiEnumField (DCPDeviceInitiativeBlock).sub_option>, <FieldLenField (DCPDeviceInitiativeBlock).dcp_block_length>, <ShortEnumField (DCPDeviceInitiativeBlock).block_info>, <ShortField (DCPDeviceInitiativeBlock).device_initiative>]
- class scapy.contrib.pnio_dcp.DCPDeviceInstanceBlock(_pkt, /, *, option=2, sub_option=7, dcp_block_length=4, block_info=0, device_instance_high=0, device_instance_low=1, padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPDeviceInstanceBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPDeviceInstanceBlock).option>, <MultiEnumField (DCPDeviceInstanceBlock).sub_option>, <LenField (DCPDeviceInstanceBlock).dcp_block_length>, <ShortEnumField (DCPDeviceInstanceBlock).block_info>, <XByteField (DCPDeviceInstanceBlock).device_instance_high>, <XByteField (DCPDeviceInstanceBlock).device_instance_low>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPDeviceOptionsBlock(_pkt, /, *, option=2, sub_option=5, dcp_block_length=None, block_info=0, device_options=[], padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPDeviceOptionsBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPDeviceOptionsBlock).option>, <MultiEnumField (DCPDeviceOptionsBlock).sub_option>, <LenField (DCPDeviceOptionsBlock).dcp_block_length>, <ShortEnumField (DCPDeviceOptionsBlock).block_info>, <PacketListField (DCPDeviceOptionsBlock).device_options>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPDeviceRoleBlock(_pkt, /, *, option=2, sub_option=4, dcp_block_length=4, block_info=0, device_role_details=1, reserved=0, padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPDeviceRoleBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPDeviceRoleBlock).option>, <MultiEnumField (DCPDeviceRoleBlock).sub_option>, <LenField (DCPDeviceRoleBlock).dcp_block_length>, <ShortEnumField (DCPDeviceRoleBlock).block_info>, <ByteEnumField (DCPDeviceRoleBlock).device_role_details>, <XByteField (DCPDeviceRoleBlock).reserved>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPFullIPBlock(_pkt, /, *, option=1, sub_option=3, dcp_block_length=None, block_info=1, ip='192.168.0.2', netmask='255.255.255.0', gateway='192.168.0.1', dnsaddr=[], padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPFullIPBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPFullIPBlock).option>, <MultiEnumField (DCPFullIPBlock).sub_option>, <LenField (DCPFullIPBlock).dcp_block_length>, <ShortEnumField (DCPFullIPBlock).block_info>, <IPField (DCPFullIPBlock).ip>, <IPField (DCPFullIPBlock).netmask>, <IPField (DCPFullIPBlock).gateway>, <FieldListField (DCPFullIPBlock).dnsaddr>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPIPBlock(_pkt, /, *, option=1, sub_option=2, dcp_block_length=None, block_info=1, ip='192.168.0.2', netmask='255.255.255.0', gateway='192.168.0.1', padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPIPBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPIPBlock).option>, <MultiEnumField (DCPIPBlock).sub_option>, <LenField (DCPIPBlock).dcp_block_length>, <ShortEnumField (DCPIPBlock).block_info>, <IPField (DCPIPBlock).ip>, <IPField (DCPIPBlock).netmask>, <IPField (DCPIPBlock).gateway>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPMACBlock(_pkt, /, *, option=1, sub_option=1, dcp_block_length=None, block_info=0, mac='00:00:00:00:00:00', padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPMACBlock'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.pnio_dcp.DCPManufacturerSpecificBlock(_pkt, /, *, option=2, sub_option=1, dcp_block_length=None, block_info=0, device_vendor_value=b'et200sp', padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPManufacturerSpecificBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPManufacturerSpecificBlock).option>, <MultiEnumField (DCPManufacturerSpecificBlock).sub_option>, <FieldLenField (DCPManufacturerSpecificBlock).dcp_block_length>, <ShortEnumField (DCPManufacturerSpecificBlock).block_info>, <StrLenField (DCPManufacturerSpecificBlock).device_vendor_value>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPNameOfStationBlock(_pkt, /, *, option=2, sub_option=2, dcp_block_length=None, block_info=0, name_of_station=b'et200sp', padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPNameOfStationBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPNameOfStationBlock).option>, <MultiEnumField (DCPNameOfStationBlock).sub_option>, <FieldLenField (DCPNameOfStationBlock).dcp_block_length>, <ShortEnumField (DCPNameOfStationBlock).block_info>, <StrLenField (DCPNameOfStationBlock).name_of_station>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DCPOEMIDBlock(_pkt, /, *, option=2, sub_option=8, dcp_block_length=None, block_info=0, vendor_id=42, device_id=787, padding=b'\x00')[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DCPOEMIDBlock'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (DCPOEMIDBlock).option>, <MultiEnumField (DCPOEMIDBlock).sub_option>, <LenField (DCPOEMIDBlock).dcp_block_length>, <ShortEnumField (DCPOEMIDBlock).block_info>, <XShortField (DCPOEMIDBlock).vendor_id>, <XShortField (DCPOEMIDBlock).device_id>, <scapy.fields.PadField object>]
- class scapy.contrib.pnio_dcp.DeviceOption(_pkt, /, *, option=2, sub_option=5)[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.pnio_dcp.DeviceOption'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.pnio_dcp.ProfinetDCP(_pkt, /, *, service_id=5, service_type=0, xid=16777217, reserved=0, dcp_data_length=None, option=2, sub_option=3, dcp_block_length=0, block_qualifier=1, name_of_station=None, mac='00:00:00:00:00:00', ip='192.168.0.2', netmask='255.255.255.0', gateway='192.168.0.1', dnsaddr=[], alias_name=b'et200sp', dcp_blocks=[])[source]
Bases:
PacketProfinet DCP Packet
Requests are handled via ConditionalField because here only 1 Block is used every time.
Response can contain 1..n Blocks, for that you have to use one ProfinetDCP Layer with one or multiple DCP*Block Layers:
ProfinetDCP / DCPNameOfStationBlock / DCPDeviceIDBlock ...
Example for a DCP Identify All Request:
Ether(dst="01:0e:cf:00:00:00") / ProfinetIO(frameID=DCP_IDENTIFY_REQUEST_FRAME_ID) / ProfinetDCP(service_id=DCP_SERVICE_ID_IDENTIFY, service_type=DCP_REQUEST, option=255, sub_option=255, dcp_data_length=4)
Example for a DCP Identify Response:
Ether(dst=dst_mac) / ProfinetIO(frameID=DCP_IDENTIFY_RESPONSE_FRAME_ID) / ProfinetDCP( service_id=DCP_SERVICE_ID_IDENTIFY, service_type=DCP_RESPONSE) / DCPNameOfStationBlock(name_of_station="device1")
Example for a DCP Set Request:
Ether(dst=mac) / ProfinetIO(frameID=DCP_GET_SET_FRAME_ID) / ProfinetDCP(service_id=DCP_SERVICE_ID_SET, service_type=DCP_REQUEST, option=2, sub_option=2, dcp_data_length=14, dcp_block_length=10, name_of_station=name, reserved=0)
- aliastypes = [<class 'scapy.contrib.pnio_dcp.ProfinetDCP'>, <class 'scapy.packet.Packet'>]
- fields_desc: List[Field[Any, Any] | _FieldContainer] = [<ByteEnumField (ProfinetDCP).service_id>, <ByteEnumField (ProfinetDCP).service_type>, <XIntField (ProfinetDCP).xid>, <ShortField (ProfinetDCP).reserved>, <LenField (ProfinetDCP).dcp_data_length>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]