intelmq-extensions 1.8.1__tar.gz → 1.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/PKG-INFO +29 -12
- intelmq_extensions-1.9.0/README.md +47 -0
- intelmq_extensions-1.9.0/intelmq_extensions/bots/experts/replace_in_dict/expert.py +42 -0
- intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/replace_in_dict/test_expert.py +92 -0
- intelmq_extensions-1.9.0/intelmq_extensions/tests/cli/__init__.py +0 -0
- intelmq_extensions-1.9.0/intelmq_extensions/tests/lib/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/PKG-INFO +29 -12
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/SOURCES.txt +4 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/entry_points.txt +2 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/pyproject.toml +2 -2
- intelmq_extensions-1.8.1/README.md +0 -30
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/LICENSE +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/blackkite/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/blackkite/_client.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/blackkite/collector.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/disp/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/disp/_client.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/disp/collector.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/xmpp/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/collectors/xmpp/collector.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/certat_contact_intern/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/certat_contact_intern/expert.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/copy_extra/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/copy_extra/expert.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/event_group_splitter/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/event_group_splitter/expert.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/event_splitter/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/event_splitter/expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/experts/squelcher → intelmq_extensions-1.9.0/intelmq_extensions/bots/experts/replace_in_dict}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/experts/vulnerability_lookup → intelmq_extensions-1.9.0/intelmq_extensions/bots/experts/squelcher}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/squelcher/expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/outputs → intelmq_extensions-1.9.0/intelmq_extensions/bots/experts/vulnerability_lookup}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/vulnerability_lookup/expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/outputs/mattermost → intelmq_extensions-1.9.0/intelmq_extensions/bots/outputs}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/outputs/to_logs → intelmq_extensions-1.9.0/intelmq_extensions/bots/outputs/mattermost}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/outputs/mattermost/output.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/outputs/xmpp → intelmq_extensions-1.9.0/intelmq_extensions/bots/outputs/to_logs}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/outputs/to_logs/output.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/parsers → intelmq_extensions-1.9.0/intelmq_extensions/bots/outputs/xmpp}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/outputs/xmpp/output.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/parsers/blackkite → intelmq_extensions-1.9.0/intelmq_extensions/bots/parsers}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/parsers/disp → intelmq_extensions-1.9.0/intelmq_extensions/bots/parsers/blackkite}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/parsers/blackkite/_transformers.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/parsers/blackkite/parser.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/bots/parsers/malwaredomains → intelmq_extensions-1.9.0/intelmq_extensions/bots/parsers/disp}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/parsers/disp/parser.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/cli → intelmq_extensions-1.9.0/intelmq_extensions/bots/parsers/malwaredomains}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/parsers/malwaredomains/parser.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/lib → intelmq_extensions-1.9.0/intelmq_extensions/cli}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/cli/create_reports.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/cli/intelmqcli.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/cli/lib.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/cli/utils.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/etc/harmonization.conf +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/etc/squelcher.conf +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests → intelmq_extensions-1.9.0/intelmq_extensions/lib}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/lib/api_helpers.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/lib/blackkite.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots → intelmq_extensions-1.9.0/intelmq_extensions/tests}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/base.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/collectors → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/collectors/blackkite → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/collectors}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/collectors/disp → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/collectors/blackkite}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/blackkite/base.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/blackkite/test_client.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/blackkite/test_collector.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/collectors/xmpp → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/collectors/disp}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/disp/base.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/disp/test_client.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/disp/test_collector.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/collectors/xmpp}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/collectors/xmpp/test_collector.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts/certat_contact_intern → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts/copy_extra → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/certat_contact_intern}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/experts/certat_contact_intern/test_expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts/event_group_splitter → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/copy_extra}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/experts/copy_extra/test_expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts/event_splitter → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/event_group_splitter}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/experts/event_group_splitter/test_expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts/squelcher → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/event_splitter}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/experts/event_splitter/test_expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/experts/vulnerability_lookup → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/replace_in_dict}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/outputs → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/squelcher}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/experts/squelcher/test_expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/outputs/mattermost → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/experts/vulnerability_lookup}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/experts/vulnerability_lookup/test_expert.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/outputs/xmpp → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/outputs}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/parsers → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/outputs/mattermost}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/outputs/mattermost/test_output.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/parsers/blackkite → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/outputs/xmpp}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/outputs/xmpp/test_output.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/parsers/disp → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/parsers}/__init__.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/bots/parsers/malwaredomains → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/parsers/blackkite}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/parsers/blackkite/data.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/parsers/blackkite/test_parser.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/cli → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/parsers/disp}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/parsers/disp/test_parser.py +0 -0
- {intelmq_extensions-1.8.1/intelmq_extensions/tests/lib → intelmq_extensions-1.9.0/intelmq_extensions/tests/bots/parsers/malwaredomains}/__init__.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/bots/parsers/malwaredomains/test_parser.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/cli/test_create_reports.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/cli/test_intelmqcli.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/lib/base.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/tests/lib/test_api_helpers.py +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/dependency_links.txt +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/requires.txt +6 -6
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/top_level.txt +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/setup.cfg +0 -0
- {intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/setup.py +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intelmq_extensions
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.0
|
|
4
4
|
Summary: Additional bots for IntelMQ
|
|
5
5
|
Author: CERT.at Data & Development Team
|
|
6
6
|
License: AGPLv3
|
|
7
7
|
Project-URL: Repository, https://github.com/certat/intelmq-extensions
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.9
|
|
10
10
|
Description-Content-Type: text/markdown
|
|
11
11
|
License-File: LICENSE
|
|
12
12
|
Requires-Dist: rt<3.0.0,>=1.0.9
|
|
13
|
-
Requires-Dist: netaddr>=0.7.14
|
|
14
|
-
Requires-Dist: psycopg2-binary>=2.5.5
|
|
15
|
-
Requires-Dist: mergedeep
|
|
16
|
-
Requires-Dist: intelmq
|
|
17
13
|
Requires-Dist: slixmpp
|
|
18
|
-
Requires-Dist: tabulate>=0.7.5
|
|
19
|
-
Requires-Dist: psycopg2-binary
|
|
20
|
-
Requires-Dist: netaddr>=0.7.14
|
|
21
14
|
Requires-Dist: python-termstyle>=0.1.10
|
|
15
|
+
Requires-Dist: mergedeep
|
|
22
16
|
Requires-Dist: importlib_metadata; python_version < "3.8"
|
|
17
|
+
Requires-Dist: psycopg2-binary>=2.5.5
|
|
18
|
+
Requires-Dist: psycopg2-binary
|
|
19
|
+
Requires-Dist: netaddr>=0.7.14
|
|
20
|
+
Requires-Dist: netaddr>=0.7.14
|
|
21
|
+
Requires-Dist: intelmq
|
|
22
|
+
Requires-Dist: tabulate>=0.7.5
|
|
23
23
|
Provides-Extra: dev
|
|
24
24
|
Requires-Dist: pytest; extra == "dev"
|
|
25
25
|
Requires-Dist: tox>=4; extra == "dev"
|
|
@@ -33,14 +33,25 @@ Dynamic: requires-dist
|
|
|
33
33
|
|
|
34
34
|
# IntelMQ Extensions
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
[](https://github.com/certat/intelmq-extensions/actions/workflows/ci.yml)
|
|
37
|
+
|
|
38
|
+
This project collects customized bots and some helper scripts for
|
|
39
|
+
[IntelMQ](https://github.com/certtools/intelmq) used primary by CERT.at.
|
|
40
|
+
|
|
41
|
+
It's a combination of customization previously available in [certat/intelmq](https://github.com/certat/intelmq)
|
|
42
|
+
as well as newer solutions.
|
|
37
43
|
|
|
38
44
|
## Usage
|
|
39
45
|
|
|
40
|
-
Install the package on the machine
|
|
41
|
-
|
|
46
|
+
Install the package on the machine or virtualenv, where you have the IntelMQ, using
|
|
47
|
+
`pip install intelmq-extensions`. Then, the bots will be available as any other IntelMQ
|
|
48
|
+
bot in the Manager as well to import using `intelmq.bots.*.certat` namespace, e.g.
|
|
49
|
+
`intelmq.bots.experts.certat.vulnerability_lookup.expert`
|
|
42
50
|
|
|
51
|
+
## Documentation
|
|
43
52
|
|
|
53
|
+
There is a limited documentation available. Consult bot Python code to see information
|
|
54
|
+
about the usage and available configuration.
|
|
44
55
|
|
|
45
56
|
## Running tests
|
|
46
57
|
|
|
@@ -61,3 +72,9 @@ This package comes with test runners configured using `tox`. To use them:
|
|
|
61
72
|
tox -efull-with-docker -- intelmq_extensions/tests/bots/experts/squelcher/test_expert.py::TestSquelcherExpertBot::test_address_match1
|
|
62
73
|
|
|
63
74
|
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
Part of the development was financed by the European Union.
|
|
79
|
+
|
|
80
|
+

|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# IntelMQ Extensions
|
|
2
|
+
|
|
3
|
+
[](https://github.com/certat/intelmq-extensions/actions/workflows/ci.yml)
|
|
4
|
+
|
|
5
|
+
This project collects customized bots and some helper scripts for
|
|
6
|
+
[IntelMQ](https://github.com/certtools/intelmq) used primary by CERT.at.
|
|
7
|
+
|
|
8
|
+
It's a combination of customization previously available in [certat/intelmq](https://github.com/certat/intelmq)
|
|
9
|
+
as well as newer solutions.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Install the package on the machine or virtualenv, where you have the IntelMQ, using
|
|
14
|
+
`pip install intelmq-extensions`. Then, the bots will be available as any other IntelMQ
|
|
15
|
+
bot in the Manager as well to import using `intelmq.bots.*.certat` namespace, e.g.
|
|
16
|
+
`intelmq.bots.experts.certat.vulnerability_lookup.expert`
|
|
17
|
+
|
|
18
|
+
## Documentation
|
|
19
|
+
|
|
20
|
+
There is a limited documentation available. Consult bot Python code to see information
|
|
21
|
+
about the usage and available configuration.
|
|
22
|
+
|
|
23
|
+
## Running tests
|
|
24
|
+
|
|
25
|
+
This package comes with test runners configured using `tox`. To use them:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
|
|
29
|
+
tox -elint # run code style checks
|
|
30
|
+
tox -epy310 # run simple unittests against Python 3.10
|
|
31
|
+
|
|
32
|
+
# For running all unittests, including connecting to external services / database
|
|
33
|
+
# use on of the following:
|
|
34
|
+
tox -efull # assuming you run redis, postgres etc. on your own
|
|
35
|
+
tox -efull-with-docker # this will use docker compose to provision services for tests;
|
|
36
|
+
# please note it uses default ports
|
|
37
|
+
|
|
38
|
+
# You can pass arguments to the pytest, e.g. to run a specific test:
|
|
39
|
+
tox -efull-with-docker -- intelmq_extensions/tests/bots/experts/squelcher/test_expert.py::TestSquelcherExpertBot::test_address_match1
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
Part of the development was financed by the European Union.
|
|
46
|
+
|
|
47
|
+

|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
ReplaceInDict allow replacing pattern in any text field in a dict field(s)
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from intelmq.lib.bot import ExpertBot
|
|
7
|
+
from intelmq.lib.exceptions import ConfigurationError, KeyNotExists
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ReplaceInDictExpertBot(ExpertBot):
|
|
11
|
+
old_value: str = None
|
|
12
|
+
new_value: str = None
|
|
13
|
+
fields: str = None # actually str | list on newer Python
|
|
14
|
+
|
|
15
|
+
def init(self):
|
|
16
|
+
if isinstance(self.fields, str):
|
|
17
|
+
self.fields = self.fields.split(",")
|
|
18
|
+
for field in self.fields:
|
|
19
|
+
definition = self.harmonization["event"][field]
|
|
20
|
+
if definition["type"] != "JSONDict":
|
|
21
|
+
raise ConfigurationError("Field is not a JSONDict", field)
|
|
22
|
+
|
|
23
|
+
def process(self):
|
|
24
|
+
event = self.receive_message()
|
|
25
|
+
|
|
26
|
+
for field in self.fields:
|
|
27
|
+
for name, value in event.finditems(f"{field}."):
|
|
28
|
+
if isinstance(value, str):
|
|
29
|
+
try:
|
|
30
|
+
event.change(
|
|
31
|
+
name, value.replace(self.old_value, self.new_value)
|
|
32
|
+
)
|
|
33
|
+
except KeyNotExists:
|
|
34
|
+
# Safeguard for an edge case if we would get default value
|
|
35
|
+
# of an non-existing field
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
self.send_message(event)
|
|
39
|
+
self.acknowledge_message()
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
BOT = ReplaceInDictExpertBot
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Testing ReplaceInDictExpertBot.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import copy
|
|
7
|
+
import unittest
|
|
8
|
+
|
|
9
|
+
from intelmq.lib.exceptions import ConfigurationError
|
|
10
|
+
|
|
11
|
+
from intelmq_extensions.bots.experts.replace_in_dict.expert import (
|
|
12
|
+
ReplaceInDictExpertBot,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
from ....base import BotTestCase
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class TestReplaceInDictExpertBot(BotTestCase, unittest.TestCase):
|
|
19
|
+
"""
|
|
20
|
+
A TestCase for ReplaceInDictExpertBot.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
@classmethod
|
|
24
|
+
def set_bot(cls):
|
|
25
|
+
cls.bot_reference = ReplaceInDictExpertBot
|
|
26
|
+
cls.sysconfig = {
|
|
27
|
+
"old_value": "\\u0000",
|
|
28
|
+
"new_value": "[nullbyte]",
|
|
29
|
+
"fields": "extra",
|
|
30
|
+
}
|
|
31
|
+
cls.default_input_message = {"__type": "Event"}
|
|
32
|
+
|
|
33
|
+
def test_event_no_changes(self):
|
|
34
|
+
message = {
|
|
35
|
+
"__type": "Event",
|
|
36
|
+
"time.observation": "2015-01-01T00:00:00+00:00",
|
|
37
|
+
"extra.payload": "foo",
|
|
38
|
+
"extra.name": "bar",
|
|
39
|
+
"extra.firmwarerev": 1,
|
|
40
|
+
}
|
|
41
|
+
self.input_message = copy.deepcopy(message)
|
|
42
|
+
self.run_bot()
|
|
43
|
+
self.assertMessageEqual(0, message)
|
|
44
|
+
|
|
45
|
+
def test_event_no_extra(self):
|
|
46
|
+
message = {
|
|
47
|
+
"__type": "Event",
|
|
48
|
+
"time.observation": "2015-01-01T00:00:00+00:00",
|
|
49
|
+
"feed.code": "foo",
|
|
50
|
+
}
|
|
51
|
+
self.input_message = copy.deepcopy(message)
|
|
52
|
+
self.run_bot()
|
|
53
|
+
self.assertMessageEqual(0, message)
|
|
54
|
+
|
|
55
|
+
def test_event_changes_one_dict(self):
|
|
56
|
+
message = {
|
|
57
|
+
"__type": "Event",
|
|
58
|
+
"time.observation": "2015-01-01T00:00:00+00:00",
|
|
59
|
+
"extra.payload": "foo\\u0000bar\\u0000",
|
|
60
|
+
"extra.name": "bar ok \\u0001 and not ok \\\\u0000",
|
|
61
|
+
"extra.firmwarerev": 1,
|
|
62
|
+
"feed.code": "foo",
|
|
63
|
+
}
|
|
64
|
+
self.input_message = copy.deepcopy(message)
|
|
65
|
+
self.run_bot()
|
|
66
|
+
|
|
67
|
+
message["extra.payload"] = "foo[nullbyte]bar[nullbyte]"
|
|
68
|
+
message["extra.name"] = "bar ok \\u0001 and not ok \\[nullbyte]"
|
|
69
|
+
self.assertMessageEqual(0, message)
|
|
70
|
+
|
|
71
|
+
def test_event_multiple_dict_fail_if_not_jsondict(self):
|
|
72
|
+
with self.assertRaises(ConfigurationError):
|
|
73
|
+
self.run_bot(
|
|
74
|
+
parameters={
|
|
75
|
+
"fields": "extra,output",
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def test_event_other_fields_not_modified(self):
|
|
80
|
+
message = {
|
|
81
|
+
"__type": "Event",
|
|
82
|
+
"time.observation": "2015-01-01T00:00:00+00:00",
|
|
83
|
+
"feed.code": "foo\\u0000",
|
|
84
|
+
}
|
|
85
|
+
self.input_message = copy.deepcopy(message)
|
|
86
|
+
self.run_bot()
|
|
87
|
+
|
|
88
|
+
self.assertMessageEqual(0, message)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if __name__ == "__main__":
|
|
92
|
+
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intelmq_extensions
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.0
|
|
4
4
|
Summary: Additional bots for IntelMQ
|
|
5
5
|
Author: CERT.at Data & Development Team
|
|
6
6
|
License: AGPLv3
|
|
7
7
|
Project-URL: Repository, https://github.com/certat/intelmq-extensions
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.9
|
|
10
10
|
Description-Content-Type: text/markdown
|
|
11
11
|
License-File: LICENSE
|
|
12
12
|
Requires-Dist: rt<3.0.0,>=1.0.9
|
|
13
|
-
Requires-Dist: netaddr>=0.7.14
|
|
14
|
-
Requires-Dist: psycopg2-binary>=2.5.5
|
|
15
|
-
Requires-Dist: mergedeep
|
|
16
|
-
Requires-Dist: intelmq
|
|
17
13
|
Requires-Dist: slixmpp
|
|
18
|
-
Requires-Dist: tabulate>=0.7.5
|
|
19
|
-
Requires-Dist: psycopg2-binary
|
|
20
|
-
Requires-Dist: netaddr>=0.7.14
|
|
21
14
|
Requires-Dist: python-termstyle>=0.1.10
|
|
15
|
+
Requires-Dist: mergedeep
|
|
22
16
|
Requires-Dist: importlib_metadata; python_version < "3.8"
|
|
17
|
+
Requires-Dist: psycopg2-binary>=2.5.5
|
|
18
|
+
Requires-Dist: psycopg2-binary
|
|
19
|
+
Requires-Dist: netaddr>=0.7.14
|
|
20
|
+
Requires-Dist: netaddr>=0.7.14
|
|
21
|
+
Requires-Dist: intelmq
|
|
22
|
+
Requires-Dist: tabulate>=0.7.5
|
|
23
23
|
Provides-Extra: dev
|
|
24
24
|
Requires-Dist: pytest; extra == "dev"
|
|
25
25
|
Requires-Dist: tox>=4; extra == "dev"
|
|
@@ -33,14 +33,25 @@ Dynamic: requires-dist
|
|
|
33
33
|
|
|
34
34
|
# IntelMQ Extensions
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
[](https://github.com/certat/intelmq-extensions/actions/workflows/ci.yml)
|
|
37
|
+
|
|
38
|
+
This project collects customized bots and some helper scripts for
|
|
39
|
+
[IntelMQ](https://github.com/certtools/intelmq) used primary by CERT.at.
|
|
40
|
+
|
|
41
|
+
It's a combination of customization previously available in [certat/intelmq](https://github.com/certat/intelmq)
|
|
42
|
+
as well as newer solutions.
|
|
37
43
|
|
|
38
44
|
## Usage
|
|
39
45
|
|
|
40
|
-
Install the package on the machine
|
|
41
|
-
|
|
46
|
+
Install the package on the machine or virtualenv, where you have the IntelMQ, using
|
|
47
|
+
`pip install intelmq-extensions`. Then, the bots will be available as any other IntelMQ
|
|
48
|
+
bot in the Manager as well to import using `intelmq.bots.*.certat` namespace, e.g.
|
|
49
|
+
`intelmq.bots.experts.certat.vulnerability_lookup.expert`
|
|
42
50
|
|
|
51
|
+
## Documentation
|
|
43
52
|
|
|
53
|
+
There is a limited documentation available. Consult bot Python code to see information
|
|
54
|
+
about the usage and available configuration.
|
|
44
55
|
|
|
45
56
|
## Running tests
|
|
46
57
|
|
|
@@ -61,3 +72,9 @@ This package comes with test runners configured using `tox`. To use them:
|
|
|
61
72
|
tox -efull-with-docker -- intelmq_extensions/tests/bots/experts/squelcher/test_expert.py::TestSquelcherExpertBot::test_address_match1
|
|
62
73
|
|
|
63
74
|
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
Part of the development was financed by the European Union.
|
|
79
|
+
|
|
80
|
+

|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/SOURCES.txt
RENAMED
|
@@ -27,6 +27,8 @@ intelmq_extensions/bots/experts/event_group_splitter/__init__.py
|
|
|
27
27
|
intelmq_extensions/bots/experts/event_group_splitter/expert.py
|
|
28
28
|
intelmq_extensions/bots/experts/event_splitter/__init__.py
|
|
29
29
|
intelmq_extensions/bots/experts/event_splitter/expert.py
|
|
30
|
+
intelmq_extensions/bots/experts/replace_in_dict/__init__.py
|
|
31
|
+
intelmq_extensions/bots/experts/replace_in_dict/expert.py
|
|
30
32
|
intelmq_extensions/bots/experts/squelcher/__init__.py
|
|
31
33
|
intelmq_extensions/bots/experts/squelcher/expert.py
|
|
32
34
|
intelmq_extensions/bots/experts/vulnerability_lookup/__init__.py
|
|
@@ -79,6 +81,8 @@ intelmq_extensions/tests/bots/experts/event_group_splitter/__init__.py
|
|
|
79
81
|
intelmq_extensions/tests/bots/experts/event_group_splitter/test_expert.py
|
|
80
82
|
intelmq_extensions/tests/bots/experts/event_splitter/__init__.py
|
|
81
83
|
intelmq_extensions/tests/bots/experts/event_splitter/test_expert.py
|
|
84
|
+
intelmq_extensions/tests/bots/experts/replace_in_dict/__init__.py
|
|
85
|
+
intelmq_extensions/tests/bots/experts/replace_in_dict/test_expert.py
|
|
82
86
|
intelmq_extensions/tests/bots/experts/squelcher/__init__.py
|
|
83
87
|
intelmq_extensions/tests/bots/experts/squelcher/test_expert.py
|
|
84
88
|
intelmq_extensions/tests/bots/experts/vulnerability_lookup/__init__.py
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/entry_points.txt
RENAMED
|
@@ -6,6 +6,7 @@ intelmq.bots.experts.certat.certat_contact_intern.expert = intelmq_extensions.bo
|
|
|
6
6
|
intelmq.bots.experts.certat.copy_extra.expert = intelmq_extensions.bots.experts.copy_extra.expert:BOT.run
|
|
7
7
|
intelmq.bots.experts.certat.event_group_splitter.expert = intelmq_extensions.bots.experts.event_group_splitter.expert:BOT.run
|
|
8
8
|
intelmq.bots.experts.certat.event_splitter.expert = intelmq_extensions.bots.experts.event_splitter.expert:BOT.run
|
|
9
|
+
intelmq.bots.experts.certat.replace_in_dict.expert = intelmq_extensions.bots.experts.replace_in_dict.expert:BOT.run
|
|
9
10
|
intelmq.bots.experts.certat.squelcher.expert = intelmq_extensions.bots.experts.squelcher.expert:BOT.run
|
|
10
11
|
intelmq.bots.experts.certat.vulnerability_lookup.expert = intelmq_extensions.bots.experts.vulnerability_lookup.expert:BOT.run
|
|
11
12
|
intelmq.bots.outputs.certat.mattermost.output = intelmq_extensions.bots.outputs.mattermost.output:BOT.run
|
|
@@ -21,6 +22,7 @@ intelmq_extensions.bots.experts.certat_contact_intern.expert = intelmq_extension
|
|
|
21
22
|
intelmq_extensions.bots.experts.copy_extra.expert = intelmq_extensions.bots.experts.copy_extra.expert:BOT.run
|
|
22
23
|
intelmq_extensions.bots.experts.event_group_splitter.expert = intelmq_extensions.bots.experts.event_group_splitter.expert:BOT.run
|
|
23
24
|
intelmq_extensions.bots.experts.event_splitter.expert = intelmq_extensions.bots.experts.event_splitter.expert:BOT.run
|
|
25
|
+
intelmq_extensions.bots.experts.replace_in_dict.expert = intelmq_extensions.bots.experts.replace_in_dict.expert:BOT.run
|
|
24
26
|
intelmq_extensions.bots.experts.squelcher.expert = intelmq_extensions.bots.experts.squelcher.expert:BOT.run
|
|
25
27
|
intelmq_extensions.bots.experts.vulnerability_lookup.expert = intelmq_extensions.bots.experts.vulnerability_lookup.expert:BOT.run
|
|
26
28
|
intelmq_extensions.bots.outputs.mattermost.output = intelmq_extensions.bots.outputs.mattermost.output:BOT.run
|
|
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "intelmq_extensions"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.9.0"
|
|
8
8
|
description = "Additional bots for IntelMQ"
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.9"
|
|
11
11
|
dynamic = ["entry-points", "dependencies", "scripts"]
|
|
12
12
|
|
|
13
13
|
classifiers = ["Programming Language :: Python :: 3"]
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# IntelMQ Extensions
|
|
2
|
-
|
|
3
|
-
This project collects customized bots used primary by CERT.at.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
Install the package on the machine. Then, it's enough to just declare the bot's module
|
|
8
|
-
pointing to this package, e.g. `intelmq_extensions.bots.collectors.xmpp`
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## Running tests
|
|
13
|
-
|
|
14
|
-
This package comes with test runners configured using `tox`. To use them:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
|
|
18
|
-
tox -elint # run code style checks
|
|
19
|
-
tox -epy310 # run simple unittests against Python 3.10
|
|
20
|
-
|
|
21
|
-
# For running all unittests, including connecting to external services / database
|
|
22
|
-
# use on of the following:
|
|
23
|
-
tox -efull # assuming you run redis, postgres etc. on your own
|
|
24
|
-
tox -efull-with-docker # this will use docker compose to provision services for tests;
|
|
25
|
-
# please note it uses default ports
|
|
26
|
-
|
|
27
|
-
# You can pass arguments to the pytest, e.g. to run a specific test:
|
|
28
|
-
tox -efull-with-docker -- intelmq_extensions/tests/bots/experts/squelcher/test_expert.py::TestSquelcherExpertBot::test_address_match1
|
|
29
|
-
|
|
30
|
-
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/experts/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/outputs/xmpp/output.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/bots/parsers/disp/parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/cli/create_reports.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions/etc/harmonization.conf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/requires.txt
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
rt<3.0.0,>=1.0.9
|
|
2
|
-
netaddr>=0.7.14
|
|
3
|
-
psycopg2-binary>=2.5.5
|
|
4
|
-
mergedeep
|
|
5
|
-
intelmq
|
|
6
2
|
slixmpp
|
|
7
|
-
|
|
3
|
+
python-termstyle>=0.1.10
|
|
4
|
+
mergedeep
|
|
5
|
+
psycopg2-binary>=2.5.5
|
|
8
6
|
psycopg2-binary
|
|
9
7
|
netaddr>=0.7.14
|
|
10
|
-
|
|
8
|
+
netaddr>=0.7.14
|
|
9
|
+
intelmq
|
|
10
|
+
tabulate>=0.7.5
|
|
11
11
|
|
|
12
12
|
[:python_version < "3.8"]
|
|
13
13
|
importlib_metadata
|
{intelmq_extensions-1.8.1 → intelmq_extensions-1.9.0}/intelmq_extensions.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|