icsnpp-omron-fins

ICSNPP-OMRON-FINS

Industrial Control Systems Network Protocol Parsers (ICSNPP) - Omron FINS (Factory Interface Network Service) over UDP

Overview

ICSNPP-Omron-FINS is a Spicy based Zeek plugin for parsing and logging fields within the Omron FINS protocol.

Omron FINS is a protocol created by Omron Corporation for commuincation between Omron programamable logic controllers (PLCs), human-machine interfaces (HMIs), and other devices in industrial automation systems. It is widely used in manufacturing, process control, and other industrial applications.

The FINS protocol can be addressed to Omron CV-Series PCs (programmable controllers), C-Series PCS, SYSMAC NET Link Units, SYSMAC LINK Support Boards, and CPU Bus Units, such as Personal Computer Units and BASIC Units.

This parser targets the FINS commands available to the CV-Series, C-Series, SYSMAC LINK, and SYSMAC NET PCs transported over UDP.

Installation

Package Manager

This script is available as a package for Zeek Package Manager. It requires Spicy and the Zeek Spicy plugin.

$ zkg refresh
$ zkg install icsnpp-omron-fins

If this package is installed from ZKG, it will be added to the available plugins. This can be tested by running zeek -NN. If installed correctly, users will see ANALYZER_SPICY_OMRON_FINS under the list of Zeek::Spicy analyzers.

If users have ZKG configured to load packages (see @load packages in the( ZKG Quickstart Guide), this plugin and these scripts will automatically be loaded and ready to go.)

If users are compiling the code manually, use clang as the compiler by compiling zeek with clang. Installing the package with zkg is not impacted.

Logging Capabilities

OMRON FINS Log (omron_fins_general.log)

Overview

This log summarizes the header data used for FINS commands and responses.

Fields Captured

FieldTypeDescription
tstimeTimestamp (network time)
uidstringUnique ID for this connection
idconn_idDefault Zeek connection info (IP Addresses, Ports, etc.)
protostringTransport protocol
omron_fins_link_idstringLink id to link one log file to another
tcp_headerstringASCII code: 'FINS'
tcp_lengthcountLength of data from command onwards
tcp_commandstringTCP Command - e.g. Frame Send, FINS Node Address Send, etc.
tcp_error_codestringTCP error code
client_node_addresscountFINS node address of FINS/TCP client. 1 to 254
server_node_addresscountFINS node address of FINS/TCP server. 1 to 254
icf_gatewaystringGateway usage (0 don't use; 1 use); per the protocol specification, set to 1.
icf_data_typestringData type (0: command; 1: response)
icf_response_settingstringResponse setting (0: response required; 1: response not required)
gateway_countcountGateway Count. Per the protocol specification, set to 02
destination_network_addresscountDestination network address
destination_node_numbercountDestination node number
destination_unit_addresscountDestination unit address
source_network_addresscountSource network address
source_node_numbercountSource node number
source_unit_addresscountSource unit address
service_idstringService ID. Used to identify the processing generating the transmission
command_codestringThe command to execute
response_codestringThe response from executing the command

OMRON FINS Detail Log (omron_fins_detail.log)

Overview

This log captures the detailed data used with the FINS commands and responses.

Fields Captured

FieldTypeDescription
tstimeTimestamp (network time)
uidstringUnique ID for this connection
idconn_idDefault Zeek connection info (IP Addresses, Ports, etc.)
omron_fins_link_idstringLink id to link one log file to another
command_codestringThe command to execute
icf_data_typestringData type (0: command; 1: response)
memory_area_codestringThe data area to read/write
beginning_addressstringThe address of the first word/bit/flag to read/write
number_of_itemscountThe number of items to read/write
parameter_area_codestringThe parameter area to read/write
beginning_wordstringThe first word to read/write
number_of_wordscountThe number of words to read/write
last_word_bitcountLast word bit (0: OFF; 1: ON)
response_codestringThe response from executing the command
datastringThe data to be read/written
yearcountClock read/write: Year
monthcountClock read/write: Month
datecountClock read/write: Date
hourcountClock read/write: Hour
minutecountClock read/write: Minute
secondcountClock read/write: Second
daystringClock read/write: Day
clock_timetimeClock read/write: Calculated clock time
intelligent_id_nostringData Link Table Read/Write - designate S (53) and N (4E) in ASCII.
first_wordstringData Link Table Read/Write - per the protocol specification, set to 0000
read_lengthstringData Link Table Read - regardless of the value set, the data link tables for the number of link nodes that has been set will be read.
data_lengthstringThe number of bytes to read/write/transfer/compare
num_of_link_nodescountData Link Table Read/Write - the number of link nodes
block_record_data_link_statusstringData Link Table Read - data Link Status (0: normal; 1: warning)
block_record_num_of_link_nodescountData Link Table Read - number of link nodes
block_record_node_numcountData Link Table Write - the data link node number
block_record_cio_area_first_wordstringData Link Table Read/Write - the first word in a data link in the CIO Area
block_record_kind_of_dmstringData Link Table Read/Write - kind of DM; Per the protocol specification, set to 00.
block_record_dm_area_first_wordstringData Link Table Read/Write - the first word in a data link in the DM Area
block_record_num_of_total_wordscountData Link Table Read/Write - the total number of words used for data links in the CIO and DM Area
program_nocountPer the protocol specification, set to 0000
protect_codecountPer the protocol specification, set to 00
passwordstringProgram Area Protect/Clear - password
last_wordstringProgram Area Protect/Clear - per the protocol specification, set to 00000000
clear_codestringProgram Area Clear - per the protocol specification, set to 00
number_of_bytescountThe number of data bytes
run_modestringRun mode (00: Program; 01: Debug; 02: Monitor; 04: Run)
controller_data_to_readstringController Data Read - the specified data to read
controller_modelstringController Data Read - model
controller_versionstringController Data Read - version
for_system_usestringController Data Read - reserved for system use
program_area_sizecountController Data Read - the size of PC Setup and program area
iom_sizecountController Data Read - the size of the area in which bit/word commands can be used
no_of_dm_wordscountController Data Read - total words in the DM area
timer_sizecountController Data Read - maxium no. of timers/counters available
expansion_dm_sizecountController Data Read - banks in the expansion DM area
no_of_steps_transitionscountController Data Read - maximum no. of steps/transitions available
kind_of_memory_cardstringController Data Read - kind of memory card (00: No memory card; 01: SPRAM; 02: EPROM; 03: EEPROM)
memory_card_sizecountController Data Read - size of the memory card. K byte (1 word - 2 bytes)
cpu_bus_unit_configvector of countController Data Read - CPU Bus unit numbers
no_of_sysmac_bus_master_mountedcountController Data Read - no of SYSMAC BUS Masters mounted
no_of_sysmac_bus2_master_mountedcountController Data Read - no of SYSMAC BUS Masters mounted
peripheral_device_connectedcountController Data Read - peripheral device connected (0: no; 1: yes)
built_in_host_interfacecountController Data Read - with built-in host insterface (always 1)
no_of_racks_connectedcountController Data Read - no of Racks connected to the PC
no_of_unitscountThe number of data units read/returned
unit_addressstringConnection Data Read - the unit address of the first Unit whos model number is to be read.
model_numberstringConnection Data Read - the model number read
controller_status_data_read_statusstringController Status Read - the operating status of the PC (00: Stop; 01: Run; 80: Standby)
controller_status_data_read_modestringController Status Read - PC mode (00: PROGRAM; 01: DEBUG; 02: MONITOR; 04: RUN)
fatal_errorvector of stringController Status Read - the contents of PC fatal error information
non_fatal_errorvector of stringController Status Read - the contents of PC non-fatal error information
message_yes_novector of stringController Status Read - corresponding message numbers (0: No; 1: Yes)
fal_fals_nocountController Status Read - the highest priority FALS or FALS error.
error_messagestringController Status Read - the Error message of the present FAL/FALS number
cycle_time_read_parameterstringCycle Time Read - parameter code (00: Initialized the cycle time; 01: Read the average, max, and min cycletime)
average_cycle_timedoubleCycle Time Read - average cycle time (max cycle time + min cycle time) / 2
max_cycle_timedoubleCycle Time Read - maximum cycle time
min_cycle_timedoubleCycle Time Read - minimum cycle time
test_datastringLoop-Back Test - test data to be transmitted
number_of_receptionscountBroadcast Test Results Read - The number of times the Broadcast Test Data Send command has been executed since the last Broadcast Test Results Read
commandstringMessage Read / Message Clear / FAL/FALS Read - the actual command (READ, CLEAR, FAL/FALS)
message_no_0stringMessage Read / Message Clear - message 0 enabled (True/False)
message_no_1stringMessage Read / Message Clear - message 1 enabled (True/False)
message_no_2stringMessage Read / Message Clear - message 2 enabled (True/False)
message_no_3stringMessage Read / Message Clear - message 3 enabled (True/False)
message_no_4stringMessage Read / Message Clear - message 4 enabled (True/False)
message_no_5stringMessage Read / Message Clear - message 5 enabled (True/False)
message_no_6stringMessage Read / Message Clear - message 6 enabled (True/False)
message_no_7stringMessage Read / Message Clear - message 7 enabled (True/False)
message_0stringMessage Read - message 0 data
message_1stringMessage Read - message 1 data
message_2stringMessage Read - message 2 data
message_3stringMessage Read - message 3 data
message_4stringMessage Read - message 4 data
message_5stringMessage Read - message 5 data
message_6stringMessage Read - message 6 data
message_7stringMessage Read - message 7 data
fal_fals_no_0stringMessage FAL/FALS - FAL/FALS 0 enabled (True/False)
fal_fals_no_1stringMessage FAL/FALS - FAL/FALS 1 enabled (True/False)
fal_fals_no_2stringMessage FAL/FALS - FAL/FALS 2 enabled (True/False)
fal_fals_no_3stringMessage FAL/FALS - FAL/FALS 3 enabled (True/False)
fal_fals_no_4stringMessage FAL/FALS - FAL/FALS 4 enabled (True/False)
fal_fals_no_5stringMessage FAL/FALS - FAL/FALS 5 enabled (True/False)
fal_fals_no_6stringMessage FAL/FALS - FAL/FALS 6 enabled (True/False)
fal_fals_no_7stringMessage FAL/FALS - FAL/FALS 7 enabled (True/False)
fal_fals_no_8stringMessage FAL/FALS - FAL/FALS 8 enabled (True/False)
fal_fals_no_9stringMessage FAL/FALS - FAL/FALS 9 enabled (True/False)
fal_fals_no_10stringMessage FAL/FALS - FAL/FALS 10 enabled (True/False)
fal_fals_no_11stringMessage FAL/FALS - FAL/FALS 11 enabled (True/False)
fal_fals_no_12stringMessage FAL/FALS - FAL/FALS 12 enabled (True/False)
fal_fals_no_13stringMessage FAL/FALS - FAL/FALS 13 enabled (True/False)
fal_fals_0stringMessage FAL/FALS - error message 0
fal_fals_1stringMessage FAL/FALS - error message 1
fal_fals_2stringMessage FAL/FALS - error message 2
fal_fals_3stringMessage FAL/FALS - error message 3
fal_fals_4stringMessage FAL/FALS - error message 4
fal_fals_5stringMessage FAL/FALS - error message 5
fal_fals_6stringMessage FAL/FALS - error message 6
fal_fals_7stringMessage FAL/FALS - error message 7
fal_fals_8stringMessage FAL/FALS - error message 8
fal_fals_9stringMessage FAL/FALS - error message 9
fal_fals_10stringMessage FAL/FALS - error message 10
fal_fals_11stringMessage FAL/FALS - error message 11
fal_fals_12stringMessage FAL/FALS - error message 12
fal_fals_13stringMessage FAL/FALS - error message 13
acquire_network_addresscountAccess Right Acquire - network address of device with access right
acquire_node_numbercountAccess Right Acquire - node number of device with access right
acquire_unit_addresscountAccess Right Acquire - unit address of Unit with access right
no_of_bitscountForces Set/Reset - the number of bits/flags to be controlled
set_reset_specificationstringForces Set/Reset - the action to be taken for each bit/flag
bit_flagcountForces Set/Reset - the bit or flag to be controlled

OMRON FINS Error Log (omron_fins_error.log)

Overview

This log captures the error data used with the FINS commands and responses.

Fields Captured

FieldTypeDescription
tstimeTimestamp (network time)
uidstringUnique ID for this connection
idconn_idDefault Zeek connection info (IP Addresses, Ports, etc.)
omron_fins_link_idstringLink id to link one log file to another
command_codestringThe command to execute
icf_data_typestringData type (0: command; 1: response)
response_codestringThe response from executing the command
error_reset_fal_nostringError Clear - the code of the error to be reset.
beginning_record_nocountError Log Read - the first record to be read
max_no_stored_recordscountError Log Read - the maximum number of records that can be recorded
no_of_stored_recordscountError Log Read - the number of records that have been recorded
no_of_recordscountError Log Read - the number of records read
error_code_1stringError Log Read - associated error code
error_code_2stringError Log Read - associated error code
minutecountError Log Read - minute error occurred
secondcountError Log Read - second error occurred
daycountError Log Read - day error occurred
hourcountError Log Read - hour error occurred
yearcountError Log Read - year error occurred
monthcountError Log Read - month error occurred

OMRON FINS Data Link Status Read Log (omron_fins_data_link_status_read.log)

Overview

This log captures the information associated with the Data Link Status Read command

Fields Captured

FieldTypeDescription
tstimeTimestamp (network time)
uidstringUnique ID for this connection
idconn_idDefault Zeek connection info (IP Addresses, Ports, etc.)
omron_fins_link_idstringLink id to link one log file to another
command_codestringThe command to execute
icf_data_typestringData type (0: command; 1: response)
response_codestringThe response from executing the command
node_numbercountNode number
data_linksstringData links (0: Not active; 1: Active)
node_settingstringSlave/Master (0: Slave; 1: Master)
master_node_numbercountThe node number of the master node of the data link will be returned
error_statusstringError status (0: Normal; 1: Error)
mode_statusstringMode status (0: Stop; 1: Run)
warning_statusstringWarning status (0: Normal; 1: Warning)

OMRON FINS Network Status Read Log (omron_fins_network_status_read.log)

Overview

This log captures the information associated with the Network Status Read command.

Fields Captured

FieldTypeDescription
tstimeTimestamp (network time)
uidstringUnique ID for this connection
idconn_idDefault Zeek connection info (IP Addresses, Ports, etc.)
omron_fins_link_idstringLink id to link one log file to another
command_codestringThe command to execute
icf_data_typestringData type (0: command; 1: response)
response_codestringThe response from executing the command
node_numbercountNode number
in_networkstringIn Network (1: In Network; 0 Not in network)
exit_statusstringExit status (1: Exited because of an error; 0: Normal exit)
pollingstringPolling (1: Unit does not respond to polling)
communication_cycle_timedoubleThe actual communications cycle time
current_polling_node_numbercountThe node number of the unit that is the polling point
cyclic_operationstringIndicates the current status of cyclic operation (00: Stopped; 01: Active)
cyclic_transmission_statusstringIndicates the current status of cyclic transmission (00: No transmission; 01: Transmission)
non_fatal_errorstringIndicates nodes in which non-fatal errors occurred in cyclic transmission
cyclic_error_countcountIndicates how many cyclic errors occurred since start up.

OMRON FINS Network Status Read Log (omron_fins_file.log)

Overview

This log captures the fields associated with the File, Memory, and Volume information

Fields Captured

FieldTypeDescription
tstimeTimestamp (network time)
uidstringUnique ID for this connection
idconn_idDefault Zeek connection info (IP Addresses, Ports, etc.)
omron_fins_link_idstringLink id to link one log file to another
command_codestringThe command to execute
icf_data_typestringData type (0: command; 1: response)
response_codestringThe response from executing the command
disk_nocountDisk No.
beginning_file_positionstringThe first file to be read
no_of_filescountThe number of files.
volume_labelstringThe volume label
yearcountThe year the volume label or file was created
monthcountThe month the volume label or file was created
daycountThe day the volume label or file was created
hourcountThe hour the volume label or file was created
minutecountThe minute the volume label or file was created
secondcountThe second the volume label or file was created
total_capacitycountThe total capacity of the file device
unused_capacitycountThe number of bytes still available
total_no_filescountThe number of files recorded in the file device
no_files_readcountThe number of files that have been read.
last_filecountLast file (0:Without last file; 1: With last file)
file_namestringThe name of the file
file_capacitycountThe capacity (bytes) of the file
file_positioncountThe number of bytes fron the start of the file from which to start reading/writing
data_lengthcountThe number of bytes of data to read/write
fuidstringFile unique identifier
parameter_codestringParameter code
src_disk_nocountDisk number for the source file
src_file_namestringFile name for the source file
dst_disk_nocountDisk number for the destination file
dst_file_namestringFile name for the destination file
old_file_namestringThe original file name
new_file_namestringThe new file name
parameter_area_codestringThe parameter area to be used for data transfer/comparison
beginning_addressstringThe first word in the parameter area to be transferred/compared
no_of_wordscountThe number of data words to be transferred/compared
memory_area_codestringThe memory area to be used for data transfer
no_of_itemscountThe number of items to be transferred/compared
program_nostringProgram number
no_of_bytescountThe number of data bytes to be transferred/compared
beginning_wordstringBeginning word
beginning_block_nocountThe first block
no_of_blockscountThe total number of blocks to be read
remaining_blockscountThe number of blocks not to be read
total_no_of_blockscountThe total number of blocks in File Memory
memory_typestringThe type of File Memory being used
data_typestringDate type (000: Empty; 001: I/O data; 010: User program; 011: Comments)
last_blockstringThe last block
protectedstringProtected
control_datacountThe number of comments. Used for commend data only
block_nocountThe number of the File Memory block to read
memory_datastringThe File Memory data to be read/written

Package Version :