git: 5a0c6e41bf4b - main - security/caldera-ot: New port: caldera OT plugin and capabilities
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 26 Oct 2023 01:10:19 UTC
The branch main has been updated by acm: URL: https://cgit.FreeBSD.org/ports/commit/?id=5a0c6e41bf4b7d2d515b875aa146825bb5d17ae8 commit 5a0c6e41bf4b7d2d515b875aa146825bb5d17ae8 Author: Jose Alonso Cardenas Marquez <acm@FreeBSD.org> AuthorDate: 2023-10-26 01:07:53 +0000 Commit: Jose Alonso Cardenas Marquez <acm@FreeBSD.org> CommitDate: 2023-10-26 01:07:53 +0000 security/caldera-ot: New port: caldera OT plugin and capabilities A collection of plugins that extend Caldera to the Operational Technology (OT) environment. --- security/Makefile | 1 + security/caldera-ot/Makefile | 73 +++++ security/caldera-ot/distinfo | 9 + ...ection_1811b7f2-3a73-11eb-adc1-0242ac120002.yml | 21 ++ ...ection_47432648-5678-11eb-ae93-0242ac130002.yml | 23 ++ ...ection_73a8f024-656d-11eb-ae93-0242ac130002.yml | 21 ++ ...covery_b93bd80e-3a70-11eb-adc1-0242ac120002.yml | 21 ++ ...impact_1a2faf5a-4601-11eb-b378-0242ac130002.yml | 23 ++ ...impact_7888f6a0-454e-11eb-b378-0242ac130002.yml | 21 ++ ...yloads_17f06fa2-44e1-11eb-b378-0242ac130002.yml | 29 ++ ...ection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml | 22 ++ ...ection_3946b6da-c570-47cd-b63f-c13875297cb4.yml | 22 ++ ...ection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml | 22 ++ ...ection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml | 22 ++ ...impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml | 22 ++ ...impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml | 22 ++ ...impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml | 22 ++ ...impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml | 22 ++ ...impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml | 22 ++ ...impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml | 22 ++ ...yloads_58aaab96-7191-4978-acec-a3b1deb03332.yml | 12 + security/caldera-ot/files/pkg-message.in | 18 ++ security/caldera-ot/pkg-descr | 2 + security/caldera-ot/pkg-plist | 321 +++++++++++++++++++++ 24 files changed, 815 insertions(+) diff --git a/security/Makefile b/security/Makefile index 5864a1775588..6a9a8b3e540b 100644 --- a/security/Makefile +++ b/security/Makefile @@ -66,6 +66,7 @@ SUBDIR += ca_root_nss SUBDIR += caesarcipher SUBDIR += caldera + SUBDIR += caldera-ot SUBDIR += calife SUBDIR += cardpeek SUBDIR += cargo-audit diff --git a/security/caldera-ot/Makefile b/security/caldera-ot/Makefile new file mode 100644 index 000000000000..60b56bdef547 --- /dev/null +++ b/security/caldera-ot/Makefile @@ -0,0 +1,73 @@ +PORTNAME= caldera-ot +DISTVERSION= 4.2.0 +CATEGORIES= security python + +MAINTAINER= acm@FreeBSD.org +COMMENT= caldera OT plugin and capabilities +WWW= https://github.com/mitre/caldera-ot + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= bacnet-stack>0:devel/bacnet-stack \ + nuitka3:devel/nuitka +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 + +USE_GITHUB= yes +GH_ACCOUNT= mitre +GH_PROJECT= ${PORTNAME} +GH_TAGNAME= 6c6b971d96de121da33f27aa6f80806835346b23 +GH_TUPLE= mitre:bacnet:745432c:bacnet/bacnet \ + mitre:dnp3:01e3748:dnp3/dnp3 \ + mitre:modbus:e47e259:modbus/modbus + +USES= compiler:c++11-lang dos2unix python + +DOS2UNIX_REGEX= .*\.([yml]) +CALDERA_USER= caldera +CALDERA_GROUP= caldera +USERS= ${CALDERA_USER} +GROUPS= ${CALDERA_GROUP} + +WWWDIR= ${PREFIX}/www/caldera + +SUB_FILES= pkg-message +SUB_LIST= WWWDIR=${WWWDIR} + +post-extract: + ${RM} -R ${WRKSRC}/.github + cd ${WRKSRC} && ${RM} -f .coveragerc .dockerignore .eslintrc.js .flake8 \ + .git* .pre* .stylelintrc.json Dockerfile + +post-patch: + ${REINPLACE_CMD} -i "" -e 's|.sync|.tcp|g' ${WRKSRC}/modbus/src/src/modbus/client.py + cd ${WRKSRC} && \ + ${FIND} . -type f -name "*.orig" -exec ${RM} "{}" \; + +do-build: + @${MKDIR} ${WRKDIR}/modbus_cli-build + 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 ${WRKSRC}/modbus/src/src && \ + ${LOCALBASE}/bin/nuitka3 --standalone --onefile \ + --output-filename=modbus_cli-freebsd --output-dir=${WRKDIR}/modbus_cli-build modbus_cli.py + +do-install: + @${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/bacnet + @${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/dnp3 + @${MKDIR} ${STAGEDIR}${WWWDIR}/plugins/modbus + @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/ + +.include <bsd.port.mk> diff --git a/security/caldera-ot/distinfo b/security/caldera-ot/distinfo new file mode 100644 index 000000000000..15e419584f6c --- /dev/null +++ b/security/caldera-ot/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1698267655 +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 +SIZE (mitre-bacnet-745432c_GH0.tar.gz) = 2493167 +SHA256 (mitre-dnp3-01e3748_GH0.tar.gz) = 5324a9910b22dd101ef52b2b48334f67d4e9d1f05a1abaa02b7b097a96dbee64 +SIZE (mitre-dnp3-01e3748_GH0.tar.gz) = 97589582 +SHA256 (mitre-modbus-e47e259_GH0.tar.gz) = 2094210dbf96c0f60d7d5146e4ec7855e19b4bc23b47d51b906aa5961222c14d +SIZE (mitre-modbus-e47e259_GH0.tar.gz) = 38272647 diff --git a/security/caldera-ot/files/patch-bacnet-data-abilities-collection_1811b7f2-3a73-11eb-adc1-0242ac120002.yml b/security/caldera-ot/files/patch-bacnet-data-abilities-collection_1811b7f2-3a73-11eb-adc1-0242ac120002.yml new file mode 100644 index 000000000000..e0c317f9e378 --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-data-abilities-collection_1811b7f2-3a73-11eb-adc1-0242ac120002.yml @@ -0,0 +1,21 @@ +--- bacnet/data/abilities/collection/1811b7f2-3a73-11eb-adc1-0242ac120002.yml 2023-10-25 16:29:02.618965000 -0500 ++++ bacnet/data/abilities/collection/1811b7f2-3a73-11eb-adc1-0242ac120002.yml 2023-10-25 16:35:40.258610000 -0500 +@@ -10,6 +10,11 @@ + name: Automated Collection + repeatable: True + platforms: ++ freebsd: ++ sh: ++ timeout: 360 ++ command: | ++ bacepics #{bacnet.device.instance} + linux: + sh: + timeout: 360 +@@ -23,4 +28,4 @@ + command: | + .\bacepics.exe #{bacnet.device.instance} + payloads: +- - bacepics.exe +\ No newline at end of file ++ - bacepics.exe diff --git a/security/caldera-ot/files/patch-bacnet-data-abilities-collection_47432648-5678-11eb-ae93-0242ac130002.yml b/security/caldera-ot/files/patch-bacnet-data-abilities-collection_47432648-5678-11eb-ae93-0242ac130002.yml new file mode 100644 index 000000000000..eed1e7e34f18 --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-data-abilities-collection_47432648-5678-11eb-ae93-0242ac130002.yml @@ -0,0 +1,23 @@ +--- bacnet/data/abilities/collection/47432648-5678-11eb-ae93-0242ac130002.yml 2023-10-25 16:29:10.047474000 -0500 ++++ bacnet/data/abilities/collection/47432648-5678-11eb-ae93-0242ac130002.yml 2023-10-25 16:36:11.635820000 -0500 +@@ -10,6 +10,13 @@ + name: Point & Tag Identification + repeatable: True + platforms: ++ freebsd: ++ sh: ++ timeout: 360 ++ command: | ++ ./bacrp-freebsd #{bacnet.device.instance} #{bacnet.obj.type} #{bacnet.obj.instance} #{bacnet.obj.property} #{bacnet.read.index} ++ payloads: ++ - bacrp-freebsd + linux: + sh: + timeout: 360 +@@ -23,4 +30,4 @@ + command: | + .\bacrp.exe #{bacnet.device.instance} #{bacnet.obj.type} #{bacnet.obj.instance} #{bacnet.obj.property} #{bacnet.read.index} + payloads: +- - bacrp.exe +\ No newline at end of file ++ - bacrp.exe diff --git a/security/caldera-ot/files/patch-bacnet-data-abilities-collection_73a8f024-656d-11eb-ae93-0242ac130002.yml b/security/caldera-ot/files/patch-bacnet-data-abilities-collection_73a8f024-656d-11eb-ae93-0242ac130002.yml new file mode 100644 index 000000000000..b2832e7d38d6 --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-data-abilities-collection_73a8f024-656d-11eb-ae93-0242ac130002.yml @@ -0,0 +1,21 @@ +--- bacnet/data/abilities/collection/73a8f024-656d-11eb-ae93-0242ac130002.yml 2023-10-25 16:29:17.712333000 -0500 ++++ bacnet/data/abilities/collection/73a8f024-656d-11eb-ae93-0242ac130002.yml 2023-10-25 16:36:42.766893000 -0500 +@@ -9,6 +9,11 @@ + attack_id: T0801 + name: Monitor Process State + platforms: ++ freebsd: ++ sh: ++ timeout: 360 ++ command: | ++ bacarf #{bacnet.device.instance} #{bacnet.file.instance} #{bacnet.read.local_name} + linux: + sh: + timeout: 360 +@@ -22,4 +27,4 @@ + command: | + .\bacarf.exe #{bacnet.device.instance} #{bacnet.file.instance} #{bacnet.read.local_name} + payloads: +- - bacarf.exe +\ No newline at end of file ++ - bacarf.exe diff --git a/security/caldera-ot/files/patch-bacnet-data-abilities-discovery_b93bd80e-3a70-11eb-adc1-0242ac120002.yml b/security/caldera-ot/files/patch-bacnet-data-abilities-discovery_b93bd80e-3a70-11eb-adc1-0242ac120002.yml new file mode 100644 index 000000000000..5cf9f6a5e6eb --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-data-abilities-discovery_b93bd80e-3a70-11eb-adc1-0242ac120002.yml @@ -0,0 +1,21 @@ +--- bacnet/data/abilities/discovery/b93bd80e-3a70-11eb-adc1-0242ac120002.yml 2023-10-25 16:36:50.057204000 -0500 ++++ bacnet/data/abilities/discovery/b93bd80e-3a70-11eb-adc1-0242ac120002.yml 2023-10-25 16:38:29.989935000 -0500 +@@ -10,6 +10,11 @@ + name: Remote System Discovery + repeatable: True + platforms: ++ freebsd: ++ sh: ++ timeout: 360 ++ command: | ++ bacwi + linux: + sh: + timeout: 360 +@@ -23,4 +28,4 @@ + command: | + .\bacwi.exe + payloads: +- - bacwi.exe +\ No newline at end of file ++ - bacwi.exe diff --git a/security/caldera-ot/files/patch-bacnet-data-abilities-impact_1a2faf5a-4601-11eb-b378-0242ac130002.yml b/security/caldera-ot/files/patch-bacnet-data-abilities-impact_1a2faf5a-4601-11eb-b378-0242ac130002.yml new file mode 100644 index 000000000000..086565779810 --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-data-abilities-impact_1a2faf5a-4601-11eb-b378-0242ac130002.yml @@ -0,0 +1,23 @@ +--- bacnet/data/abilities/impact/1a2faf5a-4601-11eb-b378-0242ac130002.yml 2023-10-25 16:38:37.618186000 -0500 ++++ bacnet/data/abilities/impact/1a2faf5a-4601-11eb-b378-0242ac130002.yml 2023-10-25 16:39:38.892194000 -0500 +@@ -10,6 +10,13 @@ + name: Manipulation of Control + repeatable: True + platforms: ++ freebsd: ++ sh: ++ timeout: 360 ++ command: | ++ ./bacwp-freebsd #{bacnet.device.instance} #{bacnet.obj.type} #{bacnet.obj.instance} #{bacnet.obj.property} #{bacnet.write.priority} #{bacnet.write.index} #{bacnet.write.tag} #{bacnet.write.value} ++ payloads: ++ - bacwp-freebsd + linux: + sh: + timeout: 360 +@@ -23,4 +30,4 @@ + command: | + .\bacwp.exe #{bacnet.device.instance} #{bacnet.obj.type} #{bacnet.obj.instance} #{bacnet.obj.property} #{bacnet.write.priority} #{bacnet.write.index} #{bacnet.write.tag} #{bacnet.write.value} + payloads: +- - bacwp.exe +\ No newline at end of file ++ - bacwp.exe diff --git a/security/caldera-ot/files/patch-bacnet-data-abilities-impact_7888f6a0-454e-11eb-b378-0242ac130002.yml b/security/caldera-ot/files/patch-bacnet-data-abilities-impact_7888f6a0-454e-11eb-b378-0242ac130002.yml new file mode 100644 index 000000000000..ad84f14a2429 --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-data-abilities-impact_7888f6a0-454e-11eb-b378-0242ac130002.yml @@ -0,0 +1,21 @@ +--- bacnet/data/abilities/impact/7888f6a0-454e-11eb-b378-0242ac130002.yml 2023-10-25 16:39:44.749679000 -0500 ++++ bacnet/data/abilities/impact/7888f6a0-454e-11eb-b378-0242ac130002.yml 2023-10-25 16:40:15.061949000 -0500 +@@ -9,6 +9,11 @@ + attack_id: T0831 + name: Manipulation of Control + platforms: ++ freebsd: ++ sh: ++ timeout: 360 ++ command: | ++ bacawf #{bacnet.device.instance} #{bacnet.file.instance} #{bacnet.write.local_name} #{bacnet.write.octet_offset} + linux: + sh: + timeout: 360 +@@ -22,4 +27,4 @@ + command: | + .\bacawf.exe #{bacnet.device.instance} #{bacnet.file.instance} #{bacnet.write.local_name} #{bacnet.write.octet_offset} + payloads: +- - bacawf.exe +\ No newline at end of file ++ - bacawf.exe diff --git a/security/caldera-ot/files/patch-bacnet-payloads_17f06fa2-44e1-11eb-b378-0242ac130002.yml b/security/caldera-ot/files/patch-bacnet-payloads_17f06fa2-44e1-11eb-b378-0242ac130002.yml new file mode 100644 index 000000000000..8856a69d707c --- /dev/null +++ b/security/caldera-ot/files/patch-bacnet-payloads_17f06fa2-44e1-11eb-b378-0242ac130002.yml @@ -0,0 +1,29 @@ +--- bacnet/payloads/17f06fa2-44e1-11eb-b378-0242ac130002.yml 2023-10-25 18:28:04.475705000 -0500 ++++ bacnet/payloads/17f06fa2-44e1-11eb-b378-0242ac130002.yml 2023-10-25 18:29:24.972817000 -0500 +@@ -21,6 +21,9 @@ + id: 6ecaedd8-656c-11eb-ae93-0242ac130002 + + # WriteProp ++ bacwp-freebsd: ++ description: BACnet WriteProperty Service - FreeBSD ++ id: 3781c3ee-738e-11ee-9734-8851fb56e3b2 + bacwp: + description: BACnet WriteProperty Service - Linux + id: 1a2faf5a-4601-11eb-b378-0242ac130002 +@@ -29,6 +32,9 @@ + id: 82b101d4-656c-11eb-ae93-0242ac130002 + + # ReadProp ++ bacrp-freebsd: ++ description: BACnet ReadProperty Service - FreeBSD ++ id: 4b6ce399-738e-11ee-9734-8851fb56e3b2 + bacrp: + description: BACnet ReadProperty Service - Linux + id: 748d5c80-5679-11eb-ae93-0242ac130002 +@@ -50,4 +56,4 @@ + id: e2e4d612-656b-11eb-ae93-0242ac130002 + bacarf.exe: + description: BACnet AtomicReadFile - Windows +- id: 938f09a6-656c-11eb-ae93-0242ac130002 +\ No newline at end of file ++ id: 938f09a6-656c-11eb-ae93-0242ac130002 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 new file mode 100644 index 000000000000..8a1355cd7026 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_001e21ea-61b5-4b78-b79e-9d5687d819bd.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/collection/001e21ea-61b5-4b78-b79e-9d5687d819bd.yml 2023-10-25 17:55:53.170972000 -0500 ++++ modbus/data/abilities/collection/001e21ea-61b5-4b78-b79e-9d5687d819bd.yml 2023-10-25 17:56:52.419868000 -0500 +@@ -12,6 +12,12 @@ + name: Point & Tag Identification + repeatable: True + platforms: ++ freebsd: ++ sh: ++ command: ++ './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_di #{modbus.read_di.start} #{modbus.read_di.count}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_di #{modbus.read_di.start} #{modbus.read_di.count}' + payloads: +- - modbus_cli.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..82d5e4f480a5 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_3946b6da-c570-47cd-b63f-c13875297cb4.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/collection/3946b6da-c570-47cd-b63f-c13875297cb4.yml 2023-10-25 17:55:59.073472000 -0500 ++++ modbus/data/abilities/collection/3946b6da-c570-47cd-b63f-c13875297cb4.yml 2023-10-25 17:57:16.281999000 -0500 +@@ -12,6 +12,12 @@ + name: Point & Tag Identification + repeatable: True + platforms: ++ freebsd: ++ sh: ++ command: ++ './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_ir #{modbus.read_ir.start} #{modbus.read_ir.count}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_ir #{modbus.read_ir.start} #{modbus.read_ir.count}' + payloads: +- - modbus_cli.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..3c188059c9ea --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_bc8961a2-7534-4b2a-bbc3-2456f58243be.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/collection/bc8961a2-7534-4b2a-bbc3-2456f58243be.yml 2023-10-25 17:56:05.290153000 -0500 ++++ modbus/data/abilities/collection/bc8961a2-7534-4b2a-bbc3-2456f58243be.yml 2023-10-25 17:57:41.726715000 -0500 +@@ -12,6 +12,12 @@ + name: Point & Tag Identification + repeatable: True + platforms: ++ freebsd: ++ sh: ++ command: ++ './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_hr #{modbus.read_hr.start} #{modbus.read_hr.count}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_hr #{modbus.read_hr.start} #{modbus.read_hr.count}' + payloads: +- - modbus_cli.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..53774dac07e7 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-collection_d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/collection/d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml 2023-10-25 17:56:17.950262000 -0500 ++++ modbus/data/abilities/collection/d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml 2023-10-25 17:58:08.150392000 -0500 +@@ -12,6 +12,12 @@ + name: Point & Tag Identification + repeatable: True + platforms: ++ freebsd: ++ sh: ++ command: ++ './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_c #{modbus.read_c.start} #{modbus.read_c.count}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{modbus.all.deviceip} --port #{modbus.all.deviceport} read_c #{modbus.read_c.start} #{modbus.read_c.count}' + payloads: +- - modbus_cli.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..513df5f3c7b6 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_056e6289-4cbf-417f-928a-d75125e4db4f.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/impact/056e6289-4cbf-417f-928a-d75125e4db4f.yml 2023-10-25 17:58:18.590805000 -0500 ++++ modbus/data/abilities/impact/056e6289-4cbf-417f-928a-d75125e4db4f.yml 2023-10-25 17:59:11.454596000 -0500 +@@ -12,6 +12,12 @@ + name: Manipulation of Control + repeatable: true + platforms: ++ freebsd: ++ sh: ++ command: ++ './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_c #{modbus.write_c.start} #{modbus.write_c.value}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_c #{modbus.write_c.start} #{modbus.write_c.value}' + payloads: +- - modbus_cli.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..fda2f8fb2761 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_0f16b341-9730-4553-b6d6-8eb8def02c81.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/impact/0f16b341-9730-4553-b6d6-8eb8def02c81.yml 2023-10-25 17:58:23.307634000 -0500 ++++ modbus/data/abilities/impact/0f16b341-9730-4553-b6d6-8eb8def02c81.yml 2023-10-25 17:59:48.668864000 -0500 +@@ -12,6 +12,12 @@ + name: Manipulation of Control + repeatable: True + platforms: ++ 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}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{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.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..e3782766543b --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/impact/2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml 2023-10-25 17:58:29.045645000 -0500 ++++ modbus/data/abilities/impact/2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml 2023-10-25 18:00:22.668282000 -0500 +@@ -13,6 +13,12 @@ + name: Manipulation of Control + repeatable: True + platforms: ++ 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}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -24,4 +30,4 @@ + command: + '.\modbus_cli.exe #{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.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..cf02689d28c4 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/impact/40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml 2023-10-25 17:58:36.482653000 -0500 ++++ modbus/data/abilities/impact/40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml 2023-10-25 18:00:59.579356000 -0500 +@@ -13,6 +13,12 @@ + name: Manipulation of Control + repeatable: True + platforms: ++ 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}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -24,4 +30,4 @@ + command: + '.\modbus_cli.exe #{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.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..591bf61d499b --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/impact/d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml 2023-10-25 17:58:41.923095000 -0500 ++++ modbus/data/abilities/impact/d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml 2023-10-25 18:01:23.478626000 -0500 +@@ -12,6 +12,12 @@ + name: Manipulation of Control + repeatable: true + platforms: ++ freebsd: ++ sh: ++ command: ++ './modbus_cli-freebsd #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_r #{modbus.write_r.start} #{modbus.write_r.value}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{modbus.all.deviceip} --port #{modbus.all.deviceport} write_r #{modbus.write_r.start} #{modbus.write_r.value}' + payloads: +- - modbus_cli.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..c0a9f140d4fc --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-data-abilities-impact_fe321da2-e183-44a3-b423-b8cba9a8bda0.yml @@ -0,0 +1,22 @@ +--- modbus/data/abilities/impact/fe321da2-e183-44a3-b423-b8cba9a8bda0.yml 2023-10-25 17:58:47.295322000 -0500 ++++ modbus/data/abilities/impact/fe321da2-e183-44a3-b423-b8cba9a8bda0.yml 2023-10-25 18:01:58.004852000 -0500 +@@ -12,6 +12,12 @@ + name: Manipulation of Control + repeatable: True + platforms: ++ 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}' ++ payloads: ++ - modbus_cli-freebsd + linux: + sh: + command: +@@ -23,4 +29,4 @@ + command: + '.\modbus_cli.exe #{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.exe +\ No newline at end of file ++ - modbus_cli.exe 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 new file mode 100644 index 000000000000..0cb9891b1cb0 --- /dev/null +++ b/security/caldera-ot/files/patch-modbus-payloads_58aaab96-7191-4978-acec-a3b1deb03332.yml @@ -0,0 +1,12 @@ +--- modbus/payloads/58aaab96-7191-4978-acec-a3b1deb03332.yml 2023-10-25 18:08:58.237967000 -0500 ++++ modbus/payloads/58aaab96-7191-4978-acec-a3b1deb03332.yml 2023-10-25 18:09:40.129650000 -0500 +@@ -3,6 +3,9 @@ + id: 58aaab96-7191-4978-acec-a3b1deb03332 + name: Modbus Payloads + standard_payloads: ++ modbus_cli-freebsd: ++ description: Modbus Client program (FreeBSD) ++ id: 6f914083-738b-11ee-9734-8851fb56e3b2 + modbus_cli: + description: Modbus Client program (Linux) + id: 090b9e5d-257e-4af5-a3ac-af1f6f5b1c10 diff --git a/security/caldera-ot/files/pkg-message.in b/security/caldera-ot/files/pkg-message.in new file mode 100644 index 000000000000..d6bee52614d8 --- /dev/null +++ b/security/caldera-ot/files/pkg-message.in @@ -0,0 +1,18 @@ +[ +{ type: install + message: <<EOM +Caldera OT plugins port was installed + +1) Take on mind it is a modifying version of Caldera-OT for include FreeBSD as + supported OS and you could found some issues. Problem reports are welcome. + +2) Do not forget modify configuration file (default.yml or localy.yml) before of + run Caldera to enable bacnet, dnp3 and modbus plugins. Caldera configuration + files are located at: + + %%WWWDIR%%/conf + +3) Enjoy it +EOM +} +] diff --git a/security/caldera-ot/pkg-descr b/security/caldera-ot/pkg-descr new file mode 100644 index 000000000000..c93a21907e5e --- /dev/null +++ b/security/caldera-ot/pkg-descr @@ -0,0 +1,2 @@ +A collection of plugins that extend Caldera to the Operational Technology (OT) +environment. diff --git a/security/caldera-ot/pkg-plist b/security/caldera-ot/pkg-plist new file mode 100644 index 000000000000..304905474ab9 --- /dev/null +++ b/security/caldera-ot/pkg-plist @@ -0,0 +1,321 @@ +@mode 640 +@owner caldera +@group caldera +%%WWWDIR%%/plugins/bacnet/.gitignore +%%WWWDIR%%/plugins/bacnet/LICENSE +%%WWWDIR%%/plugins/bacnet/NOTICE.md +%%WWWDIR%%/plugins/bacnet/README.md +%%WWWDIR%%/plugins/bacnet/app/bacnet_api.py +%%WWWDIR%%/plugins/bacnet/app/bacnet_gui.py +%%WWWDIR%%/plugins/bacnet/app/bacnet_svc.py +%%WWWDIR%%/plugins/bacnet/data/abilities/collection/1811b7f2-3a73-11eb-adc1-0242ac120002.yml +%%WWWDIR%%/plugins/bacnet/data/abilities/collection/47432648-5678-11eb-ae93-0242ac130002.yml +%%WWWDIR%%/plugins/bacnet/data/abilities/collection/73a8f024-656d-11eb-ae93-0242ac130002.yml +%%WWWDIR%%/plugins/bacnet/data/abilities/discovery/b93bd80e-3a70-11eb-adc1-0242ac120002.yml +%%WWWDIR%%/plugins/bacnet/data/abilities/impact/1a2faf5a-4601-11eb-b378-0242ac130002.yml +%%WWWDIR%%/plugins/bacnet/data/abilities/impact/7888f6a0-454e-11eb-b378-0242ac130002.yml +%%WWWDIR%%/plugins/bacnet/data/sources/ddc9cb50-74b7-4f32-9ed1-39bb0a58c954.yml +%%WWWDIR%%/plugins/bacnet/docs/assets/bacnet-bd-transparent.png +%%WWWDIR%%/plugins/bacnet/docs/assets/bacnet-bd.png +%%WWWDIR%%/plugins/bacnet/docs/assets/ics-coverage-map.png +%%WWWDIR%%/plugins/bacnet/docs/bacnet.md +%%WWWDIR%%/plugins/bacnet/hook.py +%%WWWDIR%%/plugins/bacnet/payloads/17f06fa2-44e1-11eb-b378-0242ac130002.yml +%%WWWDIR%%/plugins/bacnet/payloads/bacarf +%%WWWDIR%%/plugins/bacnet/payloads/bacarf.exe +%%WWWDIR%%/plugins/bacnet/payloads/bacawf +%%WWWDIR%%/plugins/bacnet/payloads/bacawf.exe +%%WWWDIR%%/plugins/bacnet/payloads/bacepics +%%WWWDIR%%/plugins/bacnet/payloads/bacepics.exe +%%WWWDIR%%/plugins/bacnet/payloads/bacrp +%%WWWDIR%%/plugins/bacnet/payloads/bacrp-freebsd +%%WWWDIR%%/plugins/bacnet/payloads/bacrp.exe +%%WWWDIR%%/plugins/bacnet/payloads/bacwi +%%WWWDIR%%/plugins/bacnet/payloads/bacwi.exe +%%WWWDIR%%/plugins/bacnet/payloads/bacwp +%%WWWDIR%%/plugins/bacnet/payloads/bacwp-freebsd +%%WWWDIR%%/plugins/bacnet/payloads/bacwp.exe +%%WWWDIR%%/plugins/bacnet/src/README.md +%%WWWDIR%%/plugins/bacnet/src/bacnet-stack/apps/readprop/main.c +%%WWWDIR%%/plugins/bacnet/src/bacnet-stack/apps/writeprop/main.c +%%WWWDIR%%/plugins/bacnet/static/.gitkeep +%%WWWDIR%%/plugins/bacnet/templates/bacnet.html +%%WWWDIR%%/plugins/dnp3/.gitignore +%%WWWDIR%%/plugins/dnp3/LICENSE +%%WWWDIR%%/plugins/dnp3/NOTICE.md +%%WWWDIR%%/plugins/dnp3/README.md +%%WWWDIR%%/plugins/dnp3/app/dnp3_api.py +%%WWWDIR%%/plugins/dnp3/app/dnp3_gui.py +%%WWWDIR%%/plugins/dnp3/app/dnp3_svc.py +%%WWWDIR%%/plugins/dnp3/data/abilities/collection/316f2be2-3103-4065-a128-50ae3456e7f3.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/collection/7f68f5b0-1bc8-4fee-baa5-ab7e95ec2782.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/collection/a2c8f215-d4d8-4e2b-b73f-6d33ecc89028.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/14b02f84-e3dd-4297-837b-8b5b7056dd52.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/1a3600f7-f434-46f0-82f8-7a7a355f62cb.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/2a4109a7-5a44-42a5-8944-83b0ba93ed47.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/3c0839b3-3335-47cd-b3fe-f0ae127a4903.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/4f8c7df8-5031-4d36-ae58-d3509976bd9d.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/6e8fce00-860a-47bb-a694-1528102ad56a.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/impact/afa55ec5-4762-40ad-8d38-ac98da8f43bb.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/inhibit-response-function/69cddd4e-92e3-430f-af44-1da58f89e018.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/inhibit-response-function/7a9cadfe-8522-422f-9e19-3953371b5474.yml +%%WWWDIR%%/plugins/dnp3/data/abilities/inhibit-response-function/9a65f3ea-67b9-4eff-99c4-b635f8267ea4.yml +%%WWWDIR%%/plugins/dnp3/data/sources/acddbe28-e240-465f-b721-03b3d64c1d93.yml +%%WWWDIR%%/plugins/dnp3/docs/assets/dnp3_bd.png +%%WWWDIR%%/plugins/dnp3/docs/assets/dnp3_bd_transparent.png +%%WWWDIR%%/plugins/dnp3/docs/assets/heatmap.PNG +%%WWWDIR%%/plugins/dnp3/docs/dnp3.md +%%WWWDIR%%/plugins/dnp3/hook.py +%%WWWDIR%%/plugins/dnp3/payloads/dnp3actions.exe +%%WWWDIR%%/plugins/dnp3/payloads/dnp3poll.exe +%%WWWDIR%%/plugins/dnp3/payloads/dnp3server.exe +%%WWWDIR%%/plugins/dnp3/payloads/f1c40891-944d-4fe5-99bb-ea99a0ada34a.yml +%%WWWDIR%%/plugins/dnp3/src/.gitignore +%%WWWDIR%%/plugins/dnp3/src/CMakeLists.txt +%%WWWDIR%%/plugins/dnp3/src/README.md +%%WWWDIR%%/plugins/dnp3/src/bin/dnp3actions.exe +%%WWWDIR%%/plugins/dnp3/src/bin/dnp3poll.exe +%%WWWDIR%%/plugins/dnp3/src/bin/dnp3server.exe +%%WWWDIR%%/plugins/dnp3/src/deps/cmake/asio.cmake +%%WWWDIR%%/plugins/dnp3/src/deps/cmake/catch.cmake +%%WWWDIR%%/plugins/dnp3/src/deps/cmake/exe4cpp.cmake +%%WWWDIR%%/plugins/dnp3/src/deps/cmake/opendnp3-export-debug.cmake +%%WWWDIR%%/plugins/dnp3/src/deps/cmake/opendnp3-export.cmake +%%WWWDIR%%/plugins/dnp3/src/deps/cmake/ser4cpp.cmake +%%WWWDIR%%/plugins/dnp3/src/deps/include/CLI11.hpp +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/ConsoleLogger.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/DNP3Manager.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/ErrorCodes.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/IResource.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/IStack.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/StackStatistics.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/AnalogCommandEvent.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/AnalogOutput.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/AppConstants.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/BaseMeasurementTypes.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/BinaryCommandEvent.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/ClassField.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/ControlRelayOutputBlock.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/DNPTime.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/EventCells.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/EventTriggers.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/EventType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/Flags.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/GroupVariationID.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/IINField.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/Indexed.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/MeasurementInfo.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/MeasurementTypes.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/OctetData.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/OctetString.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/app/parsing/ICollection.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/ChannelRetry.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/IChannel.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/IChannelListener.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/IListener.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/IOpenDelayStrategy.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/IPEndpoint.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/PrintingChannelListener.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/SerialSettings.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/channel/TLSConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/decoder/Decoder.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/decoder/IDecoderCallbacks.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/AnalogOutputStatusQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/AnalogQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/AssignClassType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/Attributes.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/BinaryOutputStatusQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/BinaryQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/ChannelState.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/CommandPointState.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/CommandStatus.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/CounterQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/DoubleBit.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/DoubleBitBinaryQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventAnalogOutputStatusVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventAnalogVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventBinaryOutputStatusVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventBinaryVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventCounterVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventDoubleBinaryVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventFrozenCounterVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventMode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventOctetStringVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/EventSecurityStatVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/FlagsType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/FlowControl.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/FrozenCounterQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/FunctionCode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/GroupVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/IndexQualifierMode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/IntervalUnits.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/LinkFunction.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/LinkStatus.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/MasterTaskType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/OperateType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/OperationType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/Parity.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/PointClass.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/QualifierCode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/RestartMode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/RestartType.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/ServerAcceptMode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticAnalogOutputStatusVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticAnalogVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticBinaryOutputStatusVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticBinaryVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticCounterVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticDoubleBinaryVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticFrozenCounterVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticOctetStringVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticSecurityStatVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticTimeAndIntervalVariation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StaticTypeBitmask.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/StopBits.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/TaskCompletion.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/TimeSyncMode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/TimestampQuality.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/gen/TripCloseCode.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/link/Addresses.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/link/ILinkListener.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/link/LinkConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/link/LinkHeaderFields.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/link/LinkStatistics.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/logging/ILogHandler.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/logging/LogLevels.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/logging/Logger.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/CommandPointResult.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/CommandResultCallbackT.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/CommandSet.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/DefaultListenCallbacks.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/DefaultMasterApplication.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/HeaderInfo.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/HeaderTypes.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ICommandCollection.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ICommandProcessor.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ICommandTaskResult.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IListenCallbacks.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IMaster.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IMasterApplication.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IMasterOperations.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IMasterScan.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IMasterSession.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ISOEHandler.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ISessionAcceptor.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ITaskCallback.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/IUTCTimeSource.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/MasterParams.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/MasterStackConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/PrintingCommandResultCallback.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/PrintingSOEHandler.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/ResponseInfo.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/RestartOperationResult.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/TaskConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/TaskId.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/TaskInfo.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/master/X509Info.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/ApplicationIIN.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/DatabaseConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/DefaultOutstationApplication.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/EventBufferConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/ICommandHandler.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/IDnpTimeSource.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/IOutstation.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/IOutstationApplication.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/IUpdateHandler.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/MeasurementConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/NumRetries.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/OutstationConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/OutstationParams.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/OutstationStackConfig.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/SimpleCommandHandler.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/StaticTypeBitfield.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/UpdateBuilder.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/outstation/Updates.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/util/Buffer.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/util/StaticOnly.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/util/TimeDuration.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/util/Timestamp.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/util/UTCTimestamp.h +%%WWWDIR%%/plugins/dnp3/src/deps/include/opendnp3/util/Uncopyable.h +%%WWWDIR%%/plugins/dnp3/src/deps/lib/libopendnp3.a +%%WWWDIR%%/plugins/dnp3/src/deps/lib/old_libopendnp3.a +%%WWWDIR%%/plugins/dnp3/src/docs/example_vscode_settings.json +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-actions/CMakeLists.txt +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-actions/config.h.in +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-actions/dnp3_actions.cpp +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-actions/dnp3_actions.h +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-actions/dnp3_cli.cpp +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-poll/CMakeLists.txt +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-poll/main.cpp +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-server/CMakeLists.txt +%%WWWDIR%%/plugins/dnp3/src/src/dnp3-server/main.cpp +%%WWWDIR%%/plugins/dnp3/src/utils/cmake/ClangFormat.cmake +%%WWWDIR%%/plugins/dnp3/src/utils/cmake/ClangTidy.cmake +%%WWWDIR%%/plugins/dnp3/src/utils/update_bins.sh +%%WWWDIR%%/plugins/dnp3/static/.gitkeep +%%WWWDIR%%/plugins/dnp3/templates/dnp3.html +%%WWWDIR%%/plugins/modbus/.gitignore +%%WWWDIR%%/plugins/modbus/LICENSE +%%WWWDIR%%/plugins/modbus/NOTICE.md +%%WWWDIR%%/plugins/modbus/README.md +%%WWWDIR%%/plugins/modbus/app/modbus_api.py +%%WWWDIR%%/plugins/modbus/app/modbus_gui.py +%%WWWDIR%%/plugins/modbus/app/modbus_svc.py +%%WWWDIR%%/plugins/modbus/app/parsers/processid.py +%%WWWDIR%%/plugins/modbus/data/abilities/collection/001e21ea-61b5-4b78-b79e-9d5687d819bd.yml +%%WWWDIR%%/plugins/modbus/data/abilities/collection/3946b6da-c570-47cd-b63f-c13875297cb4.yml +%%WWWDIR%%/plugins/modbus/data/abilities/collection/bc8961a2-7534-4b2a-bbc3-2456f58243be.yml +%%WWWDIR%%/plugins/modbus/data/abilities/collection/d80b9cd5-b1d8-482a-a745-71d74f9d0885.yml +%%WWWDIR%%/plugins/modbus/data/abilities/impact/056e6289-4cbf-417f-928a-d75125e4db4f.yml +%%WWWDIR%%/plugins/modbus/data/abilities/impact/0f16b341-9730-4553-b6d6-8eb8def02c81.yml +%%WWWDIR%%/plugins/modbus/data/abilities/impact/2a6e8c8e-f350-11ed-9156-23436b8f0e58.yml +%%WWWDIR%%/plugins/modbus/data/abilities/impact/40f78a8f-2aaa-4b1b-872f-7c6b0f1ddf3e.yml +%%WWWDIR%%/plugins/modbus/data/abilities/impact/d6991b6b-d3b2-4398-ad3f-d736ae09acf9.yml +%%WWWDIR%%/plugins/modbus/data/abilities/impact/fe321da2-e183-44a3-b423-b8cba9a8bda0.yml +%%WWWDIR%%/plugins/modbus/data/sources/0033b644-a615-4eff-bcf3-178e9b17adc3.yml +%%WWWDIR%%/plugins/modbus/docs/assets/.gitkeep +%%WWWDIR%%/plugins/modbus/docs/assets/heatmap.jpg +%%WWWDIR%%/plugins/modbus/docs/assets/modbus_diagram.jpg +%%WWWDIR%%/plugins/modbus/docs/modbus.md +%%WWWDIR%%/plugins/modbus/hook.py +%%WWWDIR%%/plugins/modbus/payloads/58aaab96-7191-4978-acec-a3b1deb03332.yml +%%WWWDIR%%/plugins/modbus/payloads/modbus_cli +%%WWWDIR%%/plugins/modbus/payloads/modbus_cli.exe +%%WWWDIR%%/plugins/modbus/src/README.md +%%WWWDIR%%/plugins/modbus/src/bin/.gitkeep +%%WWWDIR%%/plugins/modbus/src/bin/modbus_cli +%%WWWDIR%%/plugins/modbus/payloads/modbus_cli-freebsd +%%WWWDIR%%/plugins/modbus/src/bin/modbus_cli.exe +%%WWWDIR%%/plugins/modbus/src/src/.gitkeep +%%WWWDIR%%/plugins/modbus/src/src/Pipfile +%%WWWDIR%%/plugins/modbus/src/src/modbus/__init__.py +%%WWWDIR%%/plugins/modbus/src/src/modbus/actions/__init__.py +%%WWWDIR%%/plugins/modbus/src/src/modbus/actions/proc_modbus.py +%%WWWDIR%%/plugins/modbus/src/src/modbus/actions/spec.py +%%WWWDIR%%/plugins/modbus/src/src/modbus/client.py +%%WWWDIR%%/plugins/modbus/src/src/modbus/common.py +%%WWWDIR%%/plugins/modbus/src/src/modbus/version.py +%%WWWDIR%%/plugins/modbus/src/src/modbus_cli.py +%%WWWDIR%%/plugins/modbus/src/src/requirements.txt +%%WWWDIR%%/plugins/modbus/src/tests/.gitkeep +%%WWWDIR%%/plugins/modbus/src/tests/sync_server_ex.py *** 19 LINES SKIPPED ***