git: bcbfdaebbc76 - main - security/caldera-ot: Add new plugins

From: Jose Alonso Cardenas Marquez <acm_at_FreeBSD.org>
Date: Mon, 19 Feb 2024 00:38:08 UTC
The branch main has been updated by acm:

URL: https://cgit.FreeBSD.org/ports/commit/?id=bcbfdaebbc765637790c66dfe52c94506599417c

commit bcbfdaebbc765637790c66dfe52c94506599417c
Author:     Jose Alonso Cardenas Marquez <acm@FreeBSD.org>
AuthorDate: 2024-02-19 00:35:31 +0000
Commit:     Jose Alonso Cardenas Marquez <acm@FreeBSD.org>
CommitDate: 2024-02-19 00:35:31 +0000

    security/caldera-ot: Add new plugins
    
    - Add iec61850 plugin
    - Add profinet plugin
    - STRIP bacnet binaries
    - Change modbus payload name
    - Set MITRE Caldera dependency to 4.x
    - Bump PORTREVISION
---
 security/caldera-ot/Makefile                       | 41 ++++++++--
 security/caldera-ot/distinfo                       |  6 +-
 ...ection_04ccfa36-f576-379f-a268-6283de403ad8.yml | 23 ++++++
 ...ection_15758d41-4237-34eb-adb2-d5698e3ea4ff.yml | 21 +++++
 ...ection_1b7dcec1-0b12-3df4-b323-6c1b33356981.yml | 27 +++++++
 ...ection_30419718-6f7c-3eab-8b06-ed6cea7858c7.yml | 39 +++++++++
 ...ection_4c1138da-50b9-3744-99ea-1310690f2743.yml | 15 ++++
 ...ection_6ac44da4-f546-3e33-be1a-829b173b660f.yml | 30 +++++++
 ...ection_9f7757da-1da9-3b35-90f3-fdab578be198.yml | 32 ++++++++
 ...ection_a0718ea1-9f55-3e24-b81a-c03f15eb89c2.yml | 15 ++++
 ...ection_bbb3e7dc-3103-3ae9-9a77-6eb789cb3a07.yml | 29 +++++++
 ...ection_f9308f14-e0d3-389e-9d77-ff2be9c3f34f.yml | 20 +++++
 ...ection_fb81314b-0308-3761-b764-e523645e8df6.yml | 18 +++++
 ...ontrol_6c0f9e77-eedf-4c25-a009-d8905f155af4.yml | 40 ++++++++++
 ...ontrol_dc65f8d1-9478-381c-8f25-2ef5edaea332.yml | 40 ++++++++++
 ...ontrol_dd9c8deb-be48-3ad0-b5f5-bf4976cb1d1e.yml | 33 ++++++++
 ...nction_2b2e5724-42bc-3efc-b0e5-613a6f5bc996.yml | 22 +++++
 ...nction_41fd3989-b5bd-3892-9210-9bc053c355a5.yml | 22 +++++
 ...yloads_08cfc3e9-e172-4754-ae32-d1f28c9c819e.yml | 14 ++++
 .../files/patch-iec61850_src_CMakeLists.txt        | 10 +++
 .../files/patch-iec61850_src_app_CMakeLists.txt    | 35 ++++++++
 .../files/patch-iec61850_src_lib_CMakeLists.txt    | 34 ++++++++
 ...ection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml |  4 +-
 ...ection_3946b6da-c570-47cd-b63f-c13875297cb4.yml |  4 +-
 ...ection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml |  4 +-
 ...ection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml |  4 +-
 ...impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml |  4 +-
 ...impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml |  4 +-
 ...impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml |  4 +-
 ...impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml |  4 +-
 ...impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml |  4 +-
 ...impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml |  4 +-
 ...yloads_58aaab96-7191-4978-acec-a3b1deb03332.yml |  2 +-
 ...covery_35e384c3-2c27-4cf6-8155-70b2cf4b6cef.yml | 22 +++++
 ...covery_36284e7a-012f-4d9d-b803-0d435e06bbf6.yml | 16 ++++
 ...covery_bb7e8e63-690f-4b29-9a2e-36fc3e0aa152.yml | 16 ++++
 ...covery_df68ded9-4fa1-4d6c-a7d3-558c3ddd808a.yml | 22 +++++
 ...ontrol_132898e3-c2cc-4af4-954f-06ac99566a8f.yml | 22 +++++
 ...ontrol_23b5c9f5-3a52-4b01-81bd-6f3fa570d57e.yml | 22 +++++
 ...ontrol_b885e6f4-18c2-455b-9695-6eec76d545ca.yml | 22 +++++
 ...yloads_6c2308e7-852b-49c5-a6a4-1ac8622b6669.yml | 14 ++++
 security/caldera-ot/files/pkg-message.in           |  6 +-
 security/caldera-ot/pkg-plist                      | 93 +++++++++++++++++++++-
 43 files changed, 830 insertions(+), 33 deletions(-)

diff --git a/security/caldera-ot/Makefile b/security/caldera-ot/Makefile
index 4596236f08ca..52b562709bc9 100644
--- a/security/caldera-ot/Makefile
+++ b/security/caldera-ot/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	caldera-ot
 DISTVERSION=	4.2.0
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	security python
 
 MAINTAINER=	acm@FreeBSD.org
@@ -11,12 +11,16 @@ LICENSE=	APACHE20
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	bacnet-stack>0:devel/bacnet-stack \
-		nuitka3:devel/nuitka
+		cmake:devel/cmake-core \
+		nuitka3:devel/nuitka \
+		argtable3>0:devel/argtable3 \
+		libiec61850>0:devel/libiec61850
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}aiohttp>0:www/py-aiohttp@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pymodbus>0:comms/py-pymodbus@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pyserial>0:comms/py-pyserial@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} \
-		${LOCALBASE}/www/caldera/app/__init__.py:security/caldera
+		${PYTHON_PKGNAMEPREFIX}pnio-dcp>0:devel/py-pnio-dcp@${PY_FLAVOR} \
+		caldera4>0:security/caldera4
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	mitre
@@ -24,7 +28,9 @@ GH_PROJECT=	${PORTNAME}
 GH_TAGNAME=	6c6b971d96de121da33f27aa6f80806835346b23
 GH_TUPLE=	mitre:bacnet:745432c:bacnet/bacnet \
 		mitre:dnp3:01e3748:dnp3/dnp3 \
-		mitre:modbus:e47e259:modbus/modbus
+		mitre:modbus:e47e259:modbus/modbus \
+		mitre:iec61850:a72e2c1:iec61850/iec61850 \
+		mitre:profinet:7e62daa:profinet/profinet
 
 USES=		compiler:c++11-lang dos2unix python
 
@@ -51,24 +57,45 @@ post-patch:
 
 do-build:
 	@${MKDIR} ${WRKDIR}/modbus_cli-build
+	@${MKDIR} ${WRKDIR}/profinet-build
+	@${MKDIR} ${WRKDIR}/iec61850-build
+	@${CP} ${WRKSRC}/profinet/src/dcp_utility.py ${WRKDIR}/profinet-build/dcp_utility.py
 	cd ${WRKSRC}/bacnet/src/bacnet-stack/apps && \
 		${CC} readprop/main.c -I${LOCALBASE}/include -L${LOCALBASE}/lib \
 			-lbacnet-stack -o ${WRKSRC}/bacnet/payloads/bacrp-freebsd
 	cd ${WRKSRC}/bacnet/src/bacnet-stack/apps && \
 		${CC} readprop/main.c -I${LOCALBASE}/include -L${LOCALBASE}/lib \
 			-lbacnet-stack -o ${WRKSRC}/bacnet/payloads/bacwp-freebsd
+	cd ${WRKDIR}/iec61850-build && \
+		cmake ${WRKSRC}/iec61850/src/ -DLOCALBASE=${LOCALBASE} -DBUILD_SYSTEM=ON && \
+			cmake --build .
 	cd ${WRKSRC}/modbus/src/src && \
 		${LOCALBASE}/bin/nuitka3 --standalone --onefile \
-		--output-filename=modbus_cli-freebsd --output-dir=${WRKDIR}/modbus_cli-build modbus_cli.py
+		--output-filename=modbus_cli_freebsd --output-dir=${WRKDIR}/modbus_cli-build modbus_cli.py
+	cd ${WRKDIR}/profinet-build && \
+		${LOCALBASE}/bin/nuitka3 --standalone --onefile \
+		--output-filename=dcp_utility_freebsd --output-dir=${WRKDIR}/profinet-build dcp_utility.py
 
 do-install:
 	@${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/bacnet
 	@${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/dnp3
 	@${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/modbus
+	@${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/iec61850
+	@${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/profinet
 	@cd ${WRKSRC}/bacnet && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/plugins/bacnet
 	@cd ${WRKSRC}/dnp3 && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/plugins/dnp3
 	@cd ${WRKSRC}/modbus && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/plugins/modbus
-	${INSTALL_PROGRAM} ${WRKDIR}/modbus_cli-build/modbus_cli-freebsd \
-		${STAGEDIR}/${WWWDIR}/plugins/modbus/payloads/
+	@cd ${WRKSRC}/iec61850 && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/plugins/iec61850
+	@cd ${WRKSRC}/profinet && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/plugins/profinet
+	${INSTALL_PROGRAM} ${WRKDIR}/modbus_cli-build/modbus_cli_freebsd \
+		${STAGEDIR}/${WWWDIR}/plugins/modbus/payloads/modbus_cli_freebsd
+	${INSTALL_PROGRAM} ${WRKDIR}/iec61850-build/bin/iec61850_actions \
+		${STAGEDIR}/${WWWDIR}/plugins/iec61850/payloads/iec61850_actions_freebsd
+	${INSTALL_PROGRAM} ${WRKDIR}/profinet-build/dcp_utility_freebsd \
+                ${STAGEDIR}/${WWWDIR}/plugins/profinet/payloads/dcp_utility_freebsd
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}/${WWWDIR}/plugins/bacnet/payloads/bacwp-freebsd
+	${STRIP_CMD} ${STAGEDIR}/${WWWDIR}/plugins/bacnet/payloads/bacrp-freebsd
 
 .include <bsd.port.mk>
diff --git a/security/caldera-ot/distinfo b/security/caldera-ot/distinfo
index 15e419584f6c..376173ddbb79 100644
--- a/security/caldera-ot/distinfo
+++ b/security/caldera-ot/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1698267655
+TIMESTAMP = 1708238060
 SHA256 (mitre-caldera-ot-4.2.0-6c6b971d96de121da33f27aa6f80806835346b23_GH0.tar.gz) = a4568765b1a373870ae00b781aa251ac94af089b46a3239bf743b0430405844e
 SIZE (mitre-caldera-ot-4.2.0-6c6b971d96de121da33f27aa6f80806835346b23_GH0.tar.gz) = 5887
 SHA256 (mitre-bacnet-745432c_GH0.tar.gz) = 60763dc1f3670124f3ec0caf11dd2a3c71def7689c6e90af66864e9924853ad7
@@ -7,3 +7,7 @@ SHA256 (mitre-dnp3-01e3748_GH0.tar.gz) = 5324a9910b22dd101ef52b2b48334f67d4e9d1f
 SIZE (mitre-dnp3-01e3748_GH0.tar.gz) = 97589582
 SHA256 (mitre-modbus-e47e259_GH0.tar.gz) = 2094210dbf96c0f60d7d5146e4ec7855e19b4bc23b47d51b906aa5961222c14d
 SIZE (mitre-modbus-e47e259_GH0.tar.gz) = 38272647
+SHA256 (mitre-iec61850-a72e2c1_GH0.tar.gz) = a75623efb6bdb686ba63615a5861b1e5de8704fe4ba5339bacb54b1e162918be
+SIZE (mitre-iec61850-a72e2c1_GH0.tar.gz) = 1140484
+SHA256 (mitre-profinet-7e62daa_GH0.tar.gz) = a7e747ac604dae44d2c5a64e35b9220af0ff42d8b043c818e25e5f3f0f9a34f9
+SIZE (mitre-profinet-7e62daa_GH0.tar.gz) = 24278633
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_04ccfa36-f576-379f-a268-6283de403ad8.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_04ccfa36-f576-379f-a268-6283de403ad8.yml
new file mode 100644
index 000000000000..4574a3b006f7
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_04ccfa36-f576-379f-a268-6283de403ad8.yml
@@ -0,0 +1,23 @@
+--- iec61850/data/abilities/collection/04ccfa36-f576-379f-a268-6283de403ad8.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/04ccfa36-f576-379f-a268-6283de403ad8.yml
+@@ -52,6 +52,20 @@
+             - source: iec61850.device.name
+               edge: has_node
+               target: iec61850.node.name
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get data_sets #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.data_set:
++            - source: iec61850.device.name
++              edge: has_dataset
++              target: iec61850.dataset.name
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_15758d41-4237-34eb-adb2-d5698e3ea4ff.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_15758d41-4237-34eb-adb2-d5698e3ea4ff.yml
new file mode 100644
index 000000000000..db8d2f34ec4e
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_15758d41-4237-34eb-adb2-d5698e3ea4ff.yml
@@ -0,0 +1,21 @@
+--- iec61850/data/abilities/collection/15758d41-4237-34eb-adb2-d5698e3ea4ff.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/15758d41-4237-34eb-adb2-d5698e3ea4ff.yml
+@@ -27,10 +27,16 @@
+         payloads:
+         - iec61850_actions
+         timeout: 360
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get reports #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
+   repeatable: true
+   plugin: iec61850
+   additional_info:
+     facts:
+       iec61850.server.ip:
+         default: null
+-        description: IP address of the server
+\ No newline at end of file
++        description: IP address of the server
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_1b7dcec1-0b12-3df4-b323-6c1b33356981.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_1b7dcec1-0b12-3df4-b323-6c1b33356981.yml
new file mode 100644
index 000000000000..f2afe3214289
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_1b7dcec1-0b12-3df4-b323-6c1b33356981.yml
@@ -0,0 +1,27 @@
+--- iec61850/data/abilities/collection/1b7dcec1-0b12-3df4-b323-6c1b33356981.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/1b7dcec1-0b12-3df4-b323-6c1b33356981.yml
+@@ -67,6 +67,24 @@
+             - source: iec61850.attribute.name
+               edge: has_value
+               target: iec61850.attribute.value
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get value #{iec61850.attribute.name} --fc #{iec61850.attribute.fc}
++          #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.value:
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
++            - source: iec61850.attribute.name
++              edge: has_datatype
++              target: iec61850.attribute.datatype
++            - source: iec61850.attribute.name
++              edge: has_value
++              target: iec61850.attribute.value
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_30419718-6f7c-3eab-8b06-ed6cea7858c7.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_30419718-6f7c-3eab-8b06-ed6cea7858c7.yml
new file mode 100644
index 000000000000..e1983d712968
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_30419718-6f7c-3eab-8b06-ed6cea7858c7.yml
@@ -0,0 +1,39 @@
+--- iec61850/data/abilities/collection/30419718-6f7c-3eab-8b06-ed6cea7858c7.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/30419718-6f7c-3eab-8b06-ed6cea7858c7.yml
+@@ -102,6 +102,36 @@
+             - source: iec61850.attribute.name
+               edge: has_datatype
+               target: iec61850.attribute.value
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get data_set_members #{iec61850.dataset.name}
++          #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.data_set:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.device.name
++              edge: has_dataset
++              target: iec61850.dataset.name
++            - source: iec61850.node.name
++              edge: has_object
++              target: iec61850.object.name
++            - source: iec61850.object.name
++              edge: has_attribute
++              target: iec61850.attribute.name
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
++            - source: iec61850.attribute.name
++              edge: has_datatype
++              target: iec61850.attribute.datatype
++            - source: iec61850.attribute.name
++              edge: has_datatype
++              target: iec61850.attribute.value
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_4c1138da-50b9-3744-99ea-1310690f2743.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_4c1138da-50b9-3744-99ea-1310690f2743.yml
new file mode 100644
index 000000000000..5ed31a7372a7
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_4c1138da-50b9-3744-99ea-1310690f2743.yml
@@ -0,0 +1,15 @@
+--- iec61850/data/abilities/collection/4c1138da-50b9-3744-99ea-1310690f2743.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/4c1138da-50b9-3744-99ea-1310690f2743.yml
+@@ -30,6 +30,12 @@
+         payloads:
+         - iec61850_actions
+         timeout: 360
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get log #{iec61850.lcb.name} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_6ac44da4-f546-3e33-be1a-829b173b660f.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_6ac44da4-f546-3e33-be1a-829b173b660f.yml
new file mode 100644
index 000000000000..dcb4fc19f26a
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_6ac44da4-f546-3e33-be1a-829b173b660f.yml
@@ -0,0 +1,30 @@
+--- iec61850/data/abilities/collection/6ac44da4-f546-3e33-be1a-829b173b660f.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/6ac44da4-f546-3e33-be1a-829b173b660f.yml
+@@ -55,6 +55,20 @@
+             - source: iec61850.node.name
+               edge: has_object
+               target: iec61850.object.name
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get data_objects #{iec61850.node.name} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.data_model:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.node.name
++              edge: has_object
++              target: iec61850.object.name
+   repeatable: true
+   plugin: iec61850
+   additional_info:
+@@ -64,4 +78,4 @@
+         description: Name of a logical node
+       iec61850.server.ip:
+         default: null
+-        description: IP address of the server
+\ No newline at end of file
++        description: IP address of the server
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_9f7757da-1da9-3b35-90f3-fdab578be198.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_9f7757da-1da9-3b35-90f3-fdab578be198.yml
new file mode 100644
index 000000000000..975b73a34681
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_9f7757da-1da9-3b35-90f3-fdab578be198.yml
@@ -0,0 +1,32 @@
+--- iec61850/data/abilities/collection/9f7757da-1da9-3b35-90f3-fdab578be198.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/9f7757da-1da9-3b35-90f3-fdab578be198.yml
+@@ -80,6 +80,29 @@
+             - source: iec61850.device.name
+               edge: has_lcb
+               target: iec61850.lcb.name
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get log_blocks #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.lcb:
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
++            - source: iec61850.attribute.name
++              edge: has_datatype
++              target: iec61850.attribute.datatype
++            - source: iec61850.attribute.name
++              edge: has_value
++              target: iec61850.attribute.value
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.device.name
++              edge: has_lcb
++              target: iec61850.lcb.name
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_a0718ea1-9f55-3e24-b81a-c03f15eb89c2.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_a0718ea1-9f55-3e24-b81a-c03f15eb89c2.yml
new file mode 100644
index 000000000000..65ea20dcbc9e
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_a0718ea1-9f55-3e24-b81a-c03f15eb89c2.yml
@@ -0,0 +1,15 @@
+--- iec61850/data/abilities/collection/a0718ea1-9f55-3e24-b81a-c03f15eb89c2.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/a0718ea1-9f55-3e24-b81a-c03f15eb89c2.yml
+@@ -29,6 +29,12 @@
+         payloads:
+         - iec61850_actions
+         timeout: 360
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get files #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_bbb3e7dc-3103-3ae9-9a77-6eb789cb3a07.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_bbb3e7dc-3103-3ae9-9a77-6eb789cb3a07.yml
new file mode 100644
index 000000000000..541c3fd3dc09
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_bbb3e7dc-3103-3ae9-9a77-6eb789cb3a07.yml
@@ -0,0 +1,29 @@
+--- iec61850/data/abilities/collection/bbb3e7dc-3103-3ae9-9a77-6eb789cb3a07.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/bbb3e7dc-3103-3ae9-9a77-6eb789cb3a07.yml
+@@ -75,6 +75,26 @@
+             - source: iec61850.attribute.name
+               edge: has_fc
+               target: iec61850.attribute.fc
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get data_attributes #{iec61850.object.name} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.data_model:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.node.name
++              edge: has_object
++              target: iec61850.object.name
++            - source: iec61850.object.name
++              edge: has_attribute
++              target: iec61850.attribute.name
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_f9308f14-e0d3-389e-9d77-ff2be9c3f34f.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_f9308f14-e0d3-389e-9d77-ff2be9c3f34f.yml
new file mode 100644
index 000000000000..86718035abc7
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_f9308f14-e0d3-389e-9d77-ff2be9c3f34f.yml
@@ -0,0 +1,20 @@
+--- iec61850/data/abilities/collection/f9308f14-e0d3-389e-9d77-ff2be9c3f34f.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/f9308f14-e0d3-389e-9d77-ff2be9c3f34f.yml
+@@ -46,6 +46,17 @@
+             - source: iec61850.device.name
+               edge: has_node
+               target: iec61850.node.name
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get logical_nodes #{iec61850.device.name} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.data_model:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_collection_fb81314b-0308-3761-b764-e523645e8df6.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_fb81314b-0308-3761-b764-e523645e8df6.yml
new file mode 100644
index 000000000000..c52033d5ef68
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_collection_fb81314b-0308-3761-b764-e523645e8df6.yml
@@ -0,0 +1,18 @@
+--- iec61850/data/abilities/collection/fb81314b-0308-3761-b764-e523645e8df6.yml.orig	2024-02-18 18:34:52 UTC
++++ iec61850/data/abilities/collection/fb81314b-0308-3761-b764-e523645e8df6.yml
+@@ -38,6 +38,15 @@
+         parsers:
+           plugins.iec61850.app.parsers.data_model:
+             - source: iec61850.device.name
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd get logical_devices #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.data_model:
++            - source: iec61850.device.name
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_6c0f9e77-eedf-4c25-a009-d8905f155af4.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_6c0f9e77-eedf-4c25-a009-d8905f155af4.yml
new file mode 100644
index 000000000000..a6b637f25695
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_6c0f9e77-eedf-4c25-a009-d8905f155af4.yml
@@ -0,0 +1,40 @@
+--- iec61850/data/abilities/impair-process-control/6c0f9e77-eedf-4c25-a009-d8905f155af4.yml.orig	2024-02-18 18:41:37 UTC
++++ iec61850/data/abilities/impair-process-control/6c0f9e77-eedf-4c25-a009-d8905f155af4.yml
+@@ -87,6 +87,30 @@
+             - source: iec61850.attribute.name
+               edge: has_value
+               target: iec61850.attribute.value
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd control #{iec61850.object.name} --bool
++          #{iec61850.object.newvalue} --toggle #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.write:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.node.name
++              edge: has_object
++              target: iec61850.object.name
++            - source: iec61850.object.name
++              edge: has_attribute
++              target: iec61850.attribute.name
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
++            - source: iec61850.attribute.name
++              edge: has_value
++              target: iec61850.attribute.value
+   repeatable: true
+   plugin: iec61850
+   additional_info:
+@@ -99,4 +123,4 @@
+         description: New control value of an object
+       iec61850.server.ip:
+         default: null
+-        description: IP address of the server
+\ No newline at end of file
++        description: IP address of the server
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_dc65f8d1-9478-381c-8f25-2ef5edaea332.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_dc65f8d1-9478-381c-8f25-2ef5edaea332.yml
new file mode 100644
index 000000000000..ed8d056b0602
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_dc65f8d1-9478-381c-8f25-2ef5edaea332.yml
@@ -0,0 +1,40 @@
+--- iec61850/data/abilities/impair-process-control/dc65f8d1-9478-381c-8f25-2ef5edaea332.yml.orig	2024-02-18 18:41:37 UTC
++++ iec61850/data/abilities/impair-process-control/dc65f8d1-9478-381c-8f25-2ef5edaea332.yml
+@@ -86,6 +86,30 @@
+             - source: iec61850.attribute.name
+               edge: has_value
+               target: iec61850.attribute.value
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd control #{iec61850.object.name} --#{iec61850.object.datatype}
++          #{iec61850.object.newvalue} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.write:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.node.name
++              edge: has_object
++              target: iec61850.object.name
++            - source: iec61850.object.name
++              edge: has_attribute
++              target: iec61850.attribute.name
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
++            - source: iec61850.attribute.name
++              edge: has_value
++              target: iec61850.attribute.value
+   repeatable: true
+   plugin: iec61850
+   additional_info:
+@@ -101,4 +125,4 @@
+         description: New control value of an object
+       iec61850.server.ip:
+         default: null
+-        description: IP address of the server
+\ No newline at end of file
++        description: IP address of the server
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_dd9c8deb-be48-3ad0-b5f5-bf4976cb1d1e.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_dd9c8deb-be48-3ad0-b5f5-bf4976cb1d1e.yml
new file mode 100644
index 000000000000..dae51b031f49
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_impair-process-control_dd9c8deb-be48-3ad0-b5f5-bf4976cb1d1e.yml
@@ -0,0 +1,33 @@
+--- iec61850/data/abilities/impair-process-control/dd9c8deb-be48-3ad0-b5f5-bf4976cb1d1e.yml.orig	2024-02-18 18:41:37 UTC
++++ iec61850/data/abilities/impair-process-control/dd9c8deb-be48-3ad0-b5f5-bf4976cb1d1e.yml
+@@ -85,6 +85,30 @@
+             - source: iec61850.attribute.name
+               edge: has_value
+               target: iec61850.attribute.value
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd set #{iec61850.attribute.name} --#{iec61850.attribute.datatype}
++          #{iec61850.attribute.newvalue} --fc #{iec61850.attribute.fc} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
++        parsers:
++          plugins.iec61850.app.parsers.write:
++            - source: iec61850.device.name
++              edge: has_node
++              target: iec61850.node.name
++            - source: iec61850.node.name
++              edge: has_object
++              target: iec61850.object.name
++            - source: iec61850.object.name
++              edge: has_attribute
++              target: iec61850.attribute.name
++            - source: iec61850.attribute.name
++              edge: has_fc
++              target: iec61850.attribute.fc
++            - source: iec61850.attribute.name
++              edge: has_value
++              target: iec61850.attribute.value
+   repeatable: true
+   plugin: iec61850
+   additional_info:
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_inhibit-response-function_2b2e5724-42bc-3efc-b0e5-613a6f5bc996.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_inhibit-response-function_2b2e5724-42bc-3efc-b0e5-613a6f5bc996.yml
new file mode 100644
index 000000000000..71f519f08234
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_inhibit-response-function_2b2e5724-42bc-3efc-b0e5-613a6f5bc996.yml
@@ -0,0 +1,22 @@
+--- iec61850/data/abilities/inhibit-response-function/2b2e5724-42bc-3efc-b0e5-613a6f5bc996.yml.orig	2024-02-18 18:43:18 UTC
++++ iec61850/data/abilities/inhibit-response-function/2b2e5724-42bc-3efc-b0e5-613a6f5bc996.yml
+@@ -29,6 +29,12 @@
+         payloads:
+         - iec61850_actions
+         timeout: 360
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd delete file #{iec61850.file.name} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
+   repeatable: true
+   plugin: iec61850
+   additional_info:
+@@ -38,4 +44,4 @@
+         description: Name of a file
+       iec61850.server.ip:
+         default: null
+-        description: IP address of the server
+\ No newline at end of file
++        description: IP address of the server
diff --git a/security/caldera-ot/files/patch-iec61850_data_abilities_inhibit-response-function_41fd3989-b5bd-3892-9210-9bc053c355a5.yml b/security/caldera-ot/files/patch-iec61850_data_abilities_inhibit-response-function_41fd3989-b5bd-3892-9210-9bc053c355a5.yml
new file mode 100644
index 000000000000..f8707151626b
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_data_abilities_inhibit-response-function_41fd3989-b5bd-3892-9210-9bc053c355a5.yml
@@ -0,0 +1,22 @@
+--- iec61850/data/abilities/inhibit-response-function/41fd3989-b5bd-3892-9210-9bc053c355a5.yml.orig	2024-02-18 18:43:18 UTC
++++ iec61850/data/abilities/inhibit-response-function/41fd3989-b5bd-3892-9210-9bc053c355a5.yml
+@@ -33,6 +33,12 @@
+         payloads:
+         - iec61850_actions
+         timeout: 360
++    freebsd:
++      sh:
++        command: './iec61850_actions_freebsd delete data_set #{iec61850.dataset.name} #{iec61850.server.ip}'
++        payloads:
++        - iec61850_actions_freebsd
++        timeout: 360
+   repeatable: true
+   plugin: iec61850
+   additional_info:
+@@ -42,4 +48,4 @@
+         description: Name of a dataset
+       iiec61850.server.ip:
+         default: null
+-        description: IP address of the server
+\ No newline at end of file
++        description: IP address of the server
diff --git a/security/caldera-ot/files/patch-iec61850_payloads_08cfc3e9-e172-4754-ae32-d1f28c9c819e.yml b/security/caldera-ot/files/patch-iec61850_payloads_08cfc3e9-e172-4754-ae32-d1f28c9c819e.yml
new file mode 100644
index 000000000000..ac0fdcd6e8cf
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_payloads_08cfc3e9-e172-4754-ae32-d1f28c9c819e.yml
@@ -0,0 +1,14 @@
+--- iec61850/payloads/08cfc3e9-e172-4754-ae32-d1f28c9c819e.yml.orig	2024-02-18 18:31:59 UTC
++++ iec61850/payloads/08cfc3e9-e172-4754-ae32-d1f28c9c819e.yml
+@@ -9,6 +9,9 @@ standard_payloads:
+   iec61850_actions:
+     description: IEC 61850 Plugin Actions (Linux) - command line interface for a set of IEC 61850 services
+     id: 04a2cdd7-39df-4b11-8bea-2838e0744993
++  iec61850_actions_freebsd:
++    description: IEC 61850 Plugin Actions (FreeBSD) - command line interface for a set of IEC 61850 services
++    id: 1a3306b8-ce8c-11ee-a38f-8851fb56e3b2
+   iec61850_actions_darwin:
+     description: IEC 61850 Plugin Actions (Darwin) - command line interface for a set of IEC 61850 services
+-    id: c81479f7-7a77-4925-9dc7-1a791f999cf8 
+\ No newline at end of file
++    id: c81479f7-7a77-4925-9dc7-1a791f999cf8 
diff --git a/security/caldera-ot/files/patch-iec61850_src_CMakeLists.txt b/security/caldera-ot/files/patch-iec61850_src_CMakeLists.txt
new file mode 100644
index 000000000000..ef5f1798367f
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_src_CMakeLists.txt
@@ -0,0 +1,10 @@
+--- iec61850/src/CMakeLists.txt	2024-02-18 01:00:33.415323000 -0500
++++ iec61850/src/CMakeLists.txt	2024-02-18 01:01:07.721231000 -0500
+@@ -40,6 +40,7 @@
+ # add build options
+ option(BUILD_TESTS "Build tests" OFF)
+ option(BUILD_LOCAL "Build using local copies of dependencies" OFF)
++option(BUILD_SYSTEM "Build using system dependencies" OFF)
+ 
+ # add subdirectories with respective CMakeLists.txt files
+ if(BUILD_LOCAL)
diff --git a/security/caldera-ot/files/patch-iec61850_src_app_CMakeLists.txt b/security/caldera-ot/files/patch-iec61850_src_app_CMakeLists.txt
new file mode 100644
index 000000000000..3ead9f0ebb76
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_src_app_CMakeLists.txt
@@ -0,0 +1,35 @@
+--- iec61850/src/app/CMakeLists.txt	2024-02-18 01:01:15.171907000 -0500
++++ iec61850/src/app/CMakeLists.txt	2024-02-18 01:24:45.179116000 -0500
+@@ -5,15 +5,16 @@
+                "${CMAKE_CURRENT_BINARY_DIR}/version.h")
+ 
+ # fetch argtable3
+-if(NOT BUILD_LOCAL)
++if(NOT BUILD_LOCAL AND NOT BUILD_SYSTEM)
+   include(FetchContent)
+   FetchContent_Declare(
+     argtable3
+     GIT_REPOSITORY https://github.com/argtable/argtable3.git
+     GIT_TAG "v3.2.2.f25c624")
+   FetchContent_MakeAvailable(argtable3)
+-endif(NOT BUILD_LOCAL)
++endif(NOT BUILD_LOCAL AND NOT BUILD_SYSTEM)
+ 
++if(NOT BUILD_SYSTEM)
+ add_dependencies(iec61850_actions argtable3)
+ get_target_property(argtable3_INCLUDE_DIR argtable3 INCLUDE_DIRECTORIES)
+ 
+@@ -21,6 +22,13 @@
+ target_include_directories(
+   iec61850_actions PRIVATE ${argtable3_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
+                            ${CMAKE_CURRENT_BINARY_DIR})
++else()
++target_link_libraries(iec61850_actions PRIVATE iec61850_client ${LOCALBASE}/lib/libargtable3_static.a)
++target_include_directories(
++  iec61850_actions PRIVATE ${LOCALBASE}/include ${CMAKE_CURRENT_SOURCE_DIR}
++                           ${CMAKE_CURRENT_BINARY_DIR})
++endif(NOT BUILD_SYSTEM)
++
+ target_compile_features(iec61850_actions PRIVATE c_std_11)
+ 
+ if(APPLE)
diff --git a/security/caldera-ot/files/patch-iec61850_src_lib_CMakeLists.txt b/security/caldera-ot/files/patch-iec61850_src_lib_CMakeLists.txt
new file mode 100644
index 000000000000..c3c1c26d20a7
--- /dev/null
+++ b/security/caldera-ot/files/patch-iec61850_src_lib_CMakeLists.txt
@@ -0,0 +1,34 @@
+--- iec61850/src/lib/CMakeLists.txt	2024-02-18 01:24:59.343348000 -0500
++++ iec61850/src/lib/CMakeLists.txt	2024-02-18 01:28:38.333758000 -0500
+@@ -14,15 +14,16 @@
+                "${CMAKE_CURRENT_BINARY_DIR}/version.h")
+ 
+ # fetch libiec61850
+-if(NOT BUILD_LOCAL)
++if(NOT BUILD_LOCAL AND NOT BUILD_SYSTEM)
+   include(FetchContent)
+   FetchContent_Declare(
+     libiec61850
+     GIT_REPOSITORY https://github.com/mz-automation/libiec61850.git
+     GIT_TAG "v1.5.1")
+   FetchContent_MakeAvailable(libiec61850)
+-endif(NOT BUILD_LOCAL)
++endif(NOT BUILD_LOCAL AND NOT BUILD_SYSTEM)
+ 
++if(NOT BUILD_SYSTEM)
+ add_dependencies(iec61850_client iec61850)
+ get_target_property(libiec61850_INCLUDE_DIR iec61850 INCLUDE_DIRECTORIES)
+ 
+@@ -30,6 +31,12 @@
+ target_include_directories(
+   iec61850_client PUBLIC ${libiec61850_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
+                          ${CMAKE_CURRENT_BINARY_DIR})
++else()
++target_link_libraries(iec61850_client PUBLIC ${LOCALBASE}/lib/libiec61850.a ${LOCALBASE}/lib/libhal.a pthread)
++target_include_directories(
++  iec61850_client PUBLIC ${LOCALBASE}/include/libiec61850 ${CMAKE_CURRENT_SOURCE_DIR}
++                         ${CMAKE_CURRENT_BINARY_DIR})
++endif(NOT BUILD_SYSTEM)
+ 
+ if(MINGW)
+   target_link_libraries(iec61850_client PUBLIC ws2_32 iphlpapi)
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-collection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml b/security/caldera-ot/files/patch-modbus-data-abilities-collection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml
index 8a1355cd7026..6855bcb33179 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-collection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_di #{modbus.read_di.start} #{modbus.read_di.count}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_di #{modbus.read_di.start} #{modbus.read_di.count}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-collection_3946b6da-c570-47cd-b63f-c13875297cb4.yml b/security/caldera-ot/files/patch-modbus-data-abilities-collection_3946b6da-c570-47cd-b63f-c13875297cb4.yml
index 82d5e4f480a5..4d975a80aaad 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-collection_3946b6da-c570-47cd-b63f-c13875297cb4.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_3946b6da-c570-47cd-b63f-c13875297cb4.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_ir #{modbus.read_ir.start} #{modbus.read_ir.count}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_ir #{modbus.read_ir.start} #{modbus.read_ir.count}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-collection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml b/security/caldera-ot/files/patch-modbus-data-abilities-collection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml
index 3c188059c9ea..9547cacbc213 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-collection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_hr #{modbus.read_hr.start} #{modbus.read_hr.count}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_hr #{modbus.read_hr.start} #{modbus.read_hr.count}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-collection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml b/security/caldera-ot/files/patch-modbus-data-abilities-collection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml
index 53774dac07e7..f67c72f62f9e 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-collection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_c #{modbus.read_c.start} #{modbus.read_c.count}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_c #{modbus.read_c.start} #{modbus.read_c.count}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml b/security/caldera-ot/files/patch-modbus-data-abilities-impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml
index 513df5f3c7b6..26d3871201be 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_c #{modbus.write_c.start} #{modbus.write_c.value}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_c #{modbus.write_c.start} #{modbus.write_c.value}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml b/security/caldera-ot/files/patch-modbus-data-abilities-impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml
index fda2f8fb2761..81af733763d2 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_multi_r #{modbus.write_multi_r.start}  #{modbus.write_multi_r.value} #{modbus.write_multi_r.count}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_multi_r #{modbus.write_multi_r.start}  #{modbus.write_multi_r.value} #{modbus.write_multi_r.count}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml b/security/caldera-ot/files/patch-modbus-data-abilities-impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml
index e3782766543b..44cff4b49b60 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} fuzz_r #{modbus.fuzzreg.start} #{modbus.fuzzreg.end} #{modbus.fuzzreg.count} --min #{modbus.fuzzreg.min} --max #{modbus.fuzzreg.max} --wait #{modbus.fuzzreg.wait}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} fuzz_r #{modbus.fuzzreg.start} #{modbus.fuzzreg.end} #{modbus.fuzzreg.count} --min #{modbus.fuzzreg.min} --max #{modbus.fuzzreg.max} --wait #{modbus.fuzzreg.wait}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml b/security/caldera-ot/files/patch-modbus-data-abilities-impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml
index cf02689d28c4..535329c6ea44 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} fuzz_c #{modbus.fuzzcoil.start} #{modbus.fuzzcoil.end} #{modbus.fuzzcoil.count} --wait #{modbus.fuzzcoil.wait}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} fuzz_c #{modbus.fuzzcoil.start} #{modbus.fuzzcoil.end} #{modbus.fuzzcoil.count} --wait #{modbus.fuzzcoil.wait}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml b/security/caldera-ot/files/patch-modbus-data-abilities-impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml
index 591bf61d499b..14d9a884f400 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_r #{modbus.write_r.start} #{modbus.write_r.value}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_r #{modbus.write_r.start} #{modbus.write_r.value}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-data-abilities-impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml b/security/caldera-ot/files/patch-modbus-data-abilities-impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml
index c0a9f140d4fc..bc4a6ce3191e 100644
--- a/security/caldera-ot/files/patch-modbus-data-abilities-impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml
+++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml
@@ -7,9 +7,9 @@
 +    freebsd:
 +      sh:
 +        command:
-+          './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_multi_c #{modbus.write_multi_c.start}  #{modbus.write_multi_c.value} #{modbus.write_multi_c.count}'
++          './modbus_cli_freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_multi_c #{modbus.write_multi_c.start}  #{modbus.write_multi_c.value} #{modbus.write_multi_c.count}'
 +        payloads:
-+        - modbus_cli-freebsd
++        - modbus_cli_freebsd
      linux:
        sh:
          command:
diff --git a/security/caldera-ot/files/patch-modbus-payloads_58aaab96-7191-4978-acec-a3b1deb03332.yml b/security/caldera-ot/files/patch-modbus-payloads_58aaab96-7191-4978-acec-a3b1deb03332.yml
index 0cb9891b1cb0..2e684dcc4e10 100644
--- a/security/caldera-ot/files/patch-modbus-payloads_58aaab96-7191-4978-acec-a3b1deb03332.yml
+++ b/security/caldera-ot/files/patch-modbus-payloads_58aaab96-7191-4978-acec-a3b1deb03332.yml
@@ -4,7 +4,7 @@
  id: 58aaab96-7191-4978-acec-a3b1deb03332
  name: Modbus Payloads
  standard_payloads:
-+  modbus_cli-freebsd:
++  modbus_cli_freebsd:
 +    description: Modbus Client program (FreeBSD)
 +    id: 6f914083-738b-11ee-9734-8851fb56e3b2
    modbus_cli:
diff --git a/security/caldera-ot/files/patch-profinet_data_abilities_discovery_35e384c3-2c27-4cf6-8155-70b2cf4b6cef.yml b/security/caldera-ot/files/patch-profinet_data_abilities_discovery_35e384c3-2c27-4cf6-8155-70b2cf4b6cef.yml
*** 349 LINES SKIPPED ***