intelmq-extensions 1.8.1__py3-none-any.whl

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.
Files changed (100) hide show
  1. intelmq_extensions/__init__.py +0 -0
  2. intelmq_extensions/bots/__init__.py +0 -0
  3. intelmq_extensions/bots/collectors/blackkite/__init__.py +0 -0
  4. intelmq_extensions/bots/collectors/blackkite/_client.py +167 -0
  5. intelmq_extensions/bots/collectors/blackkite/collector.py +182 -0
  6. intelmq_extensions/bots/collectors/disp/__init__.py +0 -0
  7. intelmq_extensions/bots/collectors/disp/_client.py +121 -0
  8. intelmq_extensions/bots/collectors/disp/collector.py +104 -0
  9. intelmq_extensions/bots/collectors/xmpp/__init__.py +0 -0
  10. intelmq_extensions/bots/collectors/xmpp/collector.py +210 -0
  11. intelmq_extensions/bots/experts/__init__.py +0 -0
  12. intelmq_extensions/bots/experts/certat_contact_intern/__init__.py +0 -0
  13. intelmq_extensions/bots/experts/certat_contact_intern/expert.py +139 -0
  14. intelmq_extensions/bots/experts/copy_extra/__init__.py +0 -0
  15. intelmq_extensions/bots/experts/copy_extra/expert.py +27 -0
  16. intelmq_extensions/bots/experts/event_group_splitter/__init__.py +0 -0
  17. intelmq_extensions/bots/experts/event_group_splitter/expert.py +117 -0
  18. intelmq_extensions/bots/experts/event_splitter/__init__.py +0 -0
  19. intelmq_extensions/bots/experts/event_splitter/expert.py +41 -0
  20. intelmq_extensions/bots/experts/squelcher/__init__.py +0 -0
  21. intelmq_extensions/bots/experts/squelcher/expert.py +316 -0
  22. intelmq_extensions/bots/experts/vulnerability_lookup/__init__.py +0 -0
  23. intelmq_extensions/bots/experts/vulnerability_lookup/expert.py +136 -0
  24. intelmq_extensions/bots/outputs/__init__.py +0 -0
  25. intelmq_extensions/bots/outputs/mattermost/__init__.py +0 -0
  26. intelmq_extensions/bots/outputs/mattermost/output.py +113 -0
  27. intelmq_extensions/bots/outputs/to_logs/__init__.py +0 -0
  28. intelmq_extensions/bots/outputs/to_logs/output.py +12 -0
  29. intelmq_extensions/bots/outputs/xmpp/__init__.py +0 -0
  30. intelmq_extensions/bots/outputs/xmpp/output.py +180 -0
  31. intelmq_extensions/bots/parsers/__init__.py +0 -0
  32. intelmq_extensions/bots/parsers/blackkite/__init__.py +0 -0
  33. intelmq_extensions/bots/parsers/blackkite/_transformers.py +202 -0
  34. intelmq_extensions/bots/parsers/blackkite/parser.py +65 -0
  35. intelmq_extensions/bots/parsers/disp/__init__.py +0 -0
  36. intelmq_extensions/bots/parsers/disp/parser.py +125 -0
  37. intelmq_extensions/bots/parsers/malwaredomains/__init__.py +0 -0
  38. intelmq_extensions/bots/parsers/malwaredomains/parser.py +63 -0
  39. intelmq_extensions/cli/__init__.py +0 -0
  40. intelmq_extensions/cli/create_reports.py +161 -0
  41. intelmq_extensions/cli/intelmqcli.py +657 -0
  42. intelmq_extensions/cli/lib.py +670 -0
  43. intelmq_extensions/cli/utils.py +12 -0
  44. intelmq_extensions/etc/harmonization.conf +434 -0
  45. intelmq_extensions/etc/squelcher.conf +52 -0
  46. intelmq_extensions/lib/__init__.py +0 -0
  47. intelmq_extensions/lib/api_helpers.py +105 -0
  48. intelmq_extensions/lib/blackkite.py +29 -0
  49. intelmq_extensions/tests/__init__.py +0 -0
  50. intelmq_extensions/tests/base.py +336 -0
  51. intelmq_extensions/tests/bots/__init__.py +0 -0
  52. intelmq_extensions/tests/bots/collectors/__init__.py +0 -0
  53. intelmq_extensions/tests/bots/collectors/blackkite/__init__.py +0 -0
  54. intelmq_extensions/tests/bots/collectors/blackkite/base.py +45 -0
  55. intelmq_extensions/tests/bots/collectors/blackkite/test_client.py +154 -0
  56. intelmq_extensions/tests/bots/collectors/blackkite/test_collector.py +287 -0
  57. intelmq_extensions/tests/bots/collectors/disp/__init__.py +0 -0
  58. intelmq_extensions/tests/bots/collectors/disp/base.py +147 -0
  59. intelmq_extensions/tests/bots/collectors/disp/test_client.py +134 -0
  60. intelmq_extensions/tests/bots/collectors/disp/test_collector.py +137 -0
  61. intelmq_extensions/tests/bots/collectors/xmpp/__init__.py +0 -0
  62. intelmq_extensions/tests/bots/collectors/xmpp/test_collector.py +10 -0
  63. intelmq_extensions/tests/bots/experts/__init__.py +0 -0
  64. intelmq_extensions/tests/bots/experts/certat_contact_intern/__init__.py +0 -0
  65. intelmq_extensions/tests/bots/experts/certat_contact_intern/test_expert.py +176 -0
  66. intelmq_extensions/tests/bots/experts/copy_extra/__init__.py +0 -0
  67. intelmq_extensions/tests/bots/experts/copy_extra/test_expert.py +42 -0
  68. intelmq_extensions/tests/bots/experts/event_group_splitter/__init__.py +0 -0
  69. intelmq_extensions/tests/bots/experts/event_group_splitter/test_expert.py +302 -0
  70. intelmq_extensions/tests/bots/experts/event_splitter/__init__.py +0 -0
  71. intelmq_extensions/tests/bots/experts/event_splitter/test_expert.py +101 -0
  72. intelmq_extensions/tests/bots/experts/squelcher/__init__.py +0 -0
  73. intelmq_extensions/tests/bots/experts/squelcher/test_expert.py +548 -0
  74. intelmq_extensions/tests/bots/experts/vulnerability_lookup/__init__.py +0 -0
  75. intelmq_extensions/tests/bots/experts/vulnerability_lookup/test_expert.py +203 -0
  76. intelmq_extensions/tests/bots/outputs/__init__.py +0 -0
  77. intelmq_extensions/tests/bots/outputs/mattermost/__init__.py +0 -0
  78. intelmq_extensions/tests/bots/outputs/mattermost/test_output.py +138 -0
  79. intelmq_extensions/tests/bots/outputs/xmpp/__init__.py +0 -0
  80. intelmq_extensions/tests/bots/outputs/xmpp/test_output.py +10 -0
  81. intelmq_extensions/tests/bots/parsers/__init__.py +0 -0
  82. intelmq_extensions/tests/bots/parsers/blackkite/__init__.py +0 -0
  83. intelmq_extensions/tests/bots/parsers/blackkite/data.py +69 -0
  84. intelmq_extensions/tests/bots/parsers/blackkite/test_parser.py +197 -0
  85. intelmq_extensions/tests/bots/parsers/disp/__init__.py +0 -0
  86. intelmq_extensions/tests/bots/parsers/disp/test_parser.py +282 -0
  87. intelmq_extensions/tests/bots/parsers/malwaredomains/__init__.py +0 -0
  88. intelmq_extensions/tests/bots/parsers/malwaredomains/test_parser.py +62 -0
  89. intelmq_extensions/tests/cli/__init__.py +0 -0
  90. intelmq_extensions/tests/cli/test_create_reports.py +97 -0
  91. intelmq_extensions/tests/cli/test_intelmqcli.py +158 -0
  92. intelmq_extensions/tests/lib/__init__.py +0 -0
  93. intelmq_extensions/tests/lib/base.py +81 -0
  94. intelmq_extensions/tests/lib/test_api_helpers.py +126 -0
  95. intelmq_extensions-1.8.1.dist-info/METADATA +60 -0
  96. intelmq_extensions-1.8.1.dist-info/RECORD +100 -0
  97. intelmq_extensions-1.8.1.dist-info/WHEEL +5 -0
  98. intelmq_extensions-1.8.1.dist-info/entry_points.txt +33 -0
  99. intelmq_extensions-1.8.1.dist-info/licenses/LICENSE +661 -0
  100. intelmq_extensions-1.8.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,126 @@
1
+ """Tests for API helpers
2
+
3
+ SPDX-FileCopyrightText: 2023 CERT.at GmbH <https://cert.at/>
4
+ SPDX-License-Identifier: AGPL-3.0-or-later
5
+ """
6
+
7
+ import time
8
+ from datetime import datetime, timedelta
9
+ from unittest import TestCase
10
+
11
+ import requests
12
+ from dateutil.tz import UTC
13
+
14
+ from intelmq_extensions.lib.api_helpers import OAuthAccessMixin, RateLimiter
15
+
16
+ from .base import OAuthAccess_APIMockMixIn
17
+
18
+
19
+ class OAuthAccessMixinTestCase(OAuthAccess_APIMockMixIn, TestCase):
20
+ def setUp(self) -> None:
21
+ super().setUp()
22
+ self.oauth_config = {
23
+ "oauth_clientid": "client1",
24
+ "oauth_clientsecret": "secret1",
25
+ "oauth_url": "https://oauthip.example.at/v1",
26
+ "oauth_scope": "my_scope",
27
+ "oauth_grant_type": "my_type",
28
+ }
29
+
30
+ self.session = requests.Session()
31
+ self.setup_oauth_mock(
32
+ **self.oauth_config,
33
+ session=self.session,
34
+ )
35
+ self.mixin = OAuthAccessMixin()
36
+ self.mixin.init_oauth(session=self.session, **self.oauth_config)
37
+
38
+ def test_get_access_token(self):
39
+ self.assertIn(".xxx", self.mixin.access_token)
40
+ self.assertEqual(1, self.auth_requests.call_count)
41
+
42
+ def test_refresh_access_token(self):
43
+ # the client has a valid token
44
+ valid_token = self.gen_fake_token(datetime.now(tz=UTC) + timedelta(minutes=30))
45
+ self.mixin._access_token = valid_token
46
+
47
+ # current token is used without calling the IdP
48
+ self.assertEqual(valid_token, self.mixin.access_token)
49
+ self.assertEqual(0, self.auth_requests.call_count)
50
+
51
+ # but when token is about to be expired, the new one is requested
52
+ self.mixin._access_token = self.gen_fake_token(
53
+ datetime.utcnow() + timedelta(minutes=5)
54
+ )
55
+ self.assertEqual(self.mocked_access_token, self.mixin.access_token)
56
+ self.assertEqual(1, self.auth_requests.call_count)
57
+
58
+
59
+ class RateLimiterTestCase(TestCase):
60
+ def setUp(self) -> None:
61
+ self.limiter = RateLimiter(2, 1)
62
+
63
+ def test_call_in_limit(self):
64
+ counter = 0
65
+ start = time.monotonic_ns()
66
+
67
+ with self.limiter.call():
68
+ counter += 1
69
+ with self.limiter.call():
70
+ counter += 1
71
+
72
+ stop = time.monotonic_ns()
73
+
74
+ self.assertEqual(2, counter)
75
+ self.assertLess(stop - start, 10**9)
76
+
77
+ def test_call_exceed_limit(self):
78
+ counter = 0
79
+
80
+ start = time.monotonic_ns()
81
+ with self.limiter.call():
82
+ counter += 1
83
+ with self.limiter.call():
84
+ counter += 1
85
+ middle = time.monotonic_ns()
86
+ with self.limiter.call():
87
+ counter += 1
88
+ stop = time.monotonic_ns()
89
+
90
+ self.assertEqual(3, counter)
91
+ self.assertGreater(stop - start, 10**9)
92
+ # Ensure there was a waiting time between second and 3rd call
93
+ self.assertGreater(stop - middle, middle - start)
94
+
95
+ def test_call_no_limit(self):
96
+ counter = 0
97
+ limiter = RateLimiter(2, period_seconds=0)
98
+
99
+ start = time.monotonic_ns()
100
+ with limiter.call():
101
+ counter += 1
102
+ with limiter.call():
103
+ counter += 1
104
+ with limiter.call():
105
+ counter += 1
106
+ stop = time.monotonic_ns()
107
+
108
+ self.assertEqual(3, counter)
109
+ self.assertLess(stop - start, 10**9)
110
+
111
+ def test_call_nested(self):
112
+ """Ensure the limiter is safe to eventually nest"""
113
+ counter = 0
114
+ start = time.monotonic_ns()
115
+
116
+ with self.limiter.call():
117
+ counter += 1
118
+ with self.limiter.call():
119
+ counter += 1
120
+ with self.limiter.call():
121
+ counter += 1
122
+
123
+ stop = time.monotonic_ns()
124
+
125
+ self.assertEqual(3, counter)
126
+ self.assertGreater(stop - start, 10**9)
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.4
2
+ Name: intelmq_extensions
3
+ Version: 1.8.1
4
+ Summary: Additional bots for IntelMQ
5
+ Author: CERT.at Data & Development Team
6
+ License: AGPLv3
7
+ Project-URL: Repository, https://github.com/certat/intelmq-extensions
8
+ Classifier: Programming Language :: Python :: 3
9
+ Requires-Python: >=3.7
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Requires-Dist: rt<3.0.0,>=1.0.9
13
+ Requires-Dist: mergedeep
14
+ Requires-Dist: intelmq
15
+ Requires-Dist: tabulate>=0.7.5
16
+ Requires-Dist: psycopg2-binary
17
+ Requires-Dist: netaddr>=0.7.14
18
+ Requires-Dist: python-termstyle>=0.1.10
19
+ Requires-Dist: importlib_metadata; python_version < "3.8"
20
+ Provides-Extra: dev
21
+ Requires-Dist: pytest; extra == "dev"
22
+ Requires-Dist: tox>=4; extra == "dev"
23
+ Requires-Dist: ruff; extra == "dev"
24
+ Requires-Dist: isort; extra == "dev"
25
+ Requires-Dist: flake8; extra == "dev"
26
+ Requires-Dist: requests-mock; extra == "dev"
27
+ Requires-Dist: freezegun; extra == "dev"
28
+ Dynamic: license-file
29
+ Dynamic: requires-dist
30
+
31
+ # IntelMQ Extensions
32
+
33
+ This project collects customized bots used primary by CERT.at.
34
+
35
+ ## Usage
36
+
37
+ Install the package on the machine. Then, it's enough to just declare the bot's module
38
+ pointing to this package, e.g. `intelmq_extensions.bots.collectors.xmpp`
39
+
40
+
41
+
42
+ ## Running tests
43
+
44
+ This package comes with test runners configured using `tox`. To use them:
45
+
46
+ ```bash
47
+
48
+ tox -elint # run code style checks
49
+ tox -epy310 # run simple unittests against Python 3.10
50
+
51
+ # For running all unittests, including connecting to external services / database
52
+ # use on of the following:
53
+ tox -efull # assuming you run redis, postgres etc. on your own
54
+ tox -efull-with-docker # this will use docker compose to provision services for tests;
55
+ # please note it uses default ports
56
+
57
+ # You can pass arguments to the pytest, e.g. to run a specific test:
58
+ tox -efull-with-docker -- intelmq_extensions/tests/bots/experts/squelcher/test_expert.py::TestSquelcherExpertBot::test_address_match1
59
+
60
+ ```
@@ -0,0 +1,100 @@
1
+ intelmq_extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ intelmq_extensions/bots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ intelmq_extensions/bots/collectors/blackkite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ intelmq_extensions/bots/collectors/blackkite/_client.py,sha256=nIGXJC-VvMWCfPhERsjc4Ea8Vu1E4msTwZti9TQmB8s,4932
5
+ intelmq_extensions/bots/collectors/blackkite/collector.py,sha256=ZpAgJOOMKRh-q2TYhUir7XIT8AiR7P-k1bKNk6E1gtQ,6749
6
+ intelmq_extensions/bots/collectors/disp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ intelmq_extensions/bots/collectors/disp/_client.py,sha256=iLHDV6gu2uBwUPUe8x_rIVfnTrrjgIUdk9khFigXYX8,3929
8
+ intelmq_extensions/bots/collectors/disp/collector.py,sha256=j1EEQx8awDxLs-K1vl7tjBQ2GaRRGhsaZ_mICeUdjrw,3374
9
+ intelmq_extensions/bots/collectors/xmpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ intelmq_extensions/bots/collectors/xmpp/collector.py,sha256=6jOSwjkHCuPQShG_2gwczrxIevUA83-Go18mrlvFmzw,7415
11
+ intelmq_extensions/bots/experts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ intelmq_extensions/bots/experts/certat_contact_intern/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ intelmq_extensions/bots/experts/certat_contact_intern/expert.py,sha256=FfW8JQKARWMZceHLOS2pqYA0y8m-U0WgEf5Yndyhyxs,4410
14
+ intelmq_extensions/bots/experts/copy_extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ intelmq_extensions/bots/experts/copy_extra/expert.py,sha256=VsX18GZObP_Sj92Kj86uloqro4eSWXkgcupHopAe8r8,608
16
+ intelmq_extensions/bots/experts/event_group_splitter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ intelmq_extensions/bots/experts/event_group_splitter/expert.py,sha256=Jq9v1p94dwbiFKeaulf7pg5XA15hlb967Wwvjp-fZ3g,4095
18
+ intelmq_extensions/bots/experts/event_splitter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ intelmq_extensions/bots/experts/event_splitter/expert.py,sha256=DcAXwapXMmP-IP7sPwDBWJ9cMu9UCcKh3nJPSDJbGfU,1204
20
+ intelmq_extensions/bots/experts/squelcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ intelmq_extensions/bots/experts/squelcher/expert.py,sha256=cvmA4N5MjC_QazcEmCgW_uffn0P-4jPIPMikjtOcEd0,11022
22
+ intelmq_extensions/bots/experts/vulnerability_lookup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ intelmq_extensions/bots/experts/vulnerability_lookup/expert.py,sha256=eDMWvgDWJ98xAXtnYByXsDLBvzbarLn2i-CPJVAfyNc,4666
24
+ intelmq_extensions/bots/outputs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ intelmq_extensions/bots/outputs/mattermost/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ intelmq_extensions/bots/outputs/mattermost/output.py,sha256=JUPB5psHSGI1XK4GlZyXeYRoOMko6QjrZxYNDJKOPFE,2970
27
+ intelmq_extensions/bots/outputs/to_logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ intelmq_extensions/bots/outputs/to_logs/output.py,sha256=TNRJlQRLmmhbELN63huj-N7Fr96uUhFg1ShGNyTyHC4,259
29
+ intelmq_extensions/bots/outputs/xmpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ intelmq_extensions/bots/outputs/xmpp/output.py,sha256=BBFHsCBKvPoPFvDcvFid6XwqGP0XIdzeOrMVWbvkcsM,6263
31
+ intelmq_extensions/bots/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ intelmq_extensions/bots/parsers/blackkite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ intelmq_extensions/bots/parsers/blackkite/_transformers.py,sha256=msiXw_Ex8baCnFAXZTykpIRgnVcIQ-lL3nV_ExmTPTw,7121
34
+ intelmq_extensions/bots/parsers/blackkite/parser.py,sha256=3NxC84xpR3bIPlVZdZEjcNsBvCdGn4fL54sE-F7sCTg,1880
35
+ intelmq_extensions/bots/parsers/disp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ intelmq_extensions/bots/parsers/disp/parser.py,sha256=co-eOx8aR3-z2BYe50Rlyr9dYWlX1w0ZoBAFZVgCdbg,4401
37
+ intelmq_extensions/bots/parsers/malwaredomains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ intelmq_extensions/bots/parsers/malwaredomains/parser.py,sha256=FEp0YxZ44bD5KoeO162nRols48Xtq_8haAA8zA7BgZg,1996
39
+ intelmq_extensions/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ intelmq_extensions/cli/create_reports.py,sha256=aPANN6VeHQhTSl6XT0SKulo9WhEuR1lFZVfWJ3TaOYk,5591
41
+ intelmq_extensions/cli/intelmqcli.py,sha256=1DhGm_wAyyUEA45CEFkbLN-k29O9o6XPcSZFvjOc_Ls,24085
42
+ intelmq_extensions/cli/lib.py,sha256=mrMuRVvd-nKd1ASVBhTZn28B13VIK6VVSv-MZO2FFx4,20767
43
+ intelmq_extensions/cli/utils.py,sha256=CpK4rvYtJDYiW5CDhxtBwK7VIY-MOV6FSSEQpwf4HmE,410
44
+ intelmq_extensions/etc/harmonization.conf,sha256=n6PXTYYD5LQRIBgNmDIeco1dy5gwxu77_g_qj6P8Qz8,22018
45
+ intelmq_extensions/etc/squelcher.conf,sha256=36hrMfzBL2C36tFExvDc4OxmIA_Z1x8UEUDfiY1vH5A,989
46
+ intelmq_extensions/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ intelmq_extensions/lib/api_helpers.py,sha256=wi4Jau_9MThoborMhAi4Qpq3w2sviHNpxSJDce1JXfw,3453
48
+ intelmq_extensions/lib/blackkite.py,sha256=485pqyPMWlGQmnzvLp-h___8RChzgD2TnrntODN__o4,752
49
+ intelmq_extensions/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ intelmq_extensions/tests/base.py,sha256=R7itEUljirs35bvKmFYeHvt9X3GFgWHp9XI28r19sok,11070
51
+ intelmq_extensions/tests/bots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ intelmq_extensions/tests/bots/collectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ intelmq_extensions/tests/bots/collectors/blackkite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ intelmq_extensions/tests/bots/collectors/blackkite/base.py,sha256=7B8fnC-nX2ZMVwN2Lu2wSrssXl4_MxwHn9oik4D3STw,1316
55
+ intelmq_extensions/tests/bots/collectors/blackkite/test_client.py,sha256=_KtjjyuN2KdV-1-VEC3euCAlp7gaFQjYkkXuyc4-HoI,5101
56
+ intelmq_extensions/tests/bots/collectors/blackkite/test_collector.py,sha256=eOE2HNGzsPIArQOOp4BgOlatV_keRzGhlxJ2aJA3e0c,9699
57
+ intelmq_extensions/tests/bots/collectors/disp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ intelmq_extensions/tests/bots/collectors/disp/base.py,sha256=BDFdvkWs4hQNtYU35CaK_yLvIvk1DJnmclmrxpzNfBU,4655
59
+ intelmq_extensions/tests/bots/collectors/disp/test_client.py,sha256=FsEUyhgWtv9OaPADhVv-FbG9lH5Vqk7hJ_mHTXYp0rA,4366
60
+ intelmq_extensions/tests/bots/collectors/disp/test_collector.py,sha256=-yeRJPS1fqbbZhFAFMbivCEIsfn6Sr3nT77kyY_t7S4,4385
61
+ intelmq_extensions/tests/bots/collectors/xmpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ intelmq_extensions/tests/bots/collectors/xmpp/test_collector.py,sha256=KyzENq4kYkFvANy19IWhHSGGW9ed7vbFk_dDS-sag0I,187
63
+ intelmq_extensions/tests/bots/experts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ intelmq_extensions/tests/bots/experts/certat_contact_intern/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ intelmq_extensions/tests/bots/experts/certat_contact_intern/test_expert.py,sha256=1WYzfOEjlJwxeLGoHyuXfxyC14B7dBovVDrRXnLpsxw,5102
66
+ intelmq_extensions/tests/bots/experts/copy_extra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ intelmq_extensions/tests/bots/experts/copy_extra/test_expert.py,sha256=07XYaJZ5nLPQZ3-tq1LCm_j0tKlYiJ0A17D40M2Sqpo,1026
68
+ intelmq_extensions/tests/bots/experts/event_group_splitter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ intelmq_extensions/tests/bots/experts/event_group_splitter/test_expert.py,sha256=FcuFOzOGctWQ0whG5e7t9_K2Vf7a_doDEl5WoWhDqq8,9124
70
+ intelmq_extensions/tests/bots/experts/event_splitter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ intelmq_extensions/tests/bots/experts/event_splitter/test_expert.py,sha256=KGjh86BacNiUcJGg8kxggHoJY3ORZPmPFmVPYJK0J6A,2752
72
+ intelmq_extensions/tests/bots/experts/squelcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ intelmq_extensions/tests/bots/experts/squelcher/test_expert.py,sha256=oHE3E9q2fMwPVavgZM4Bs8kQCGehpMFEv3biJQs_JJk,17731
74
+ intelmq_extensions/tests/bots/experts/vulnerability_lookup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ intelmq_extensions/tests/bots/experts/vulnerability_lookup/test_expert.py,sha256=Jt6K2Tw56WnQc_zdWEjkGqmug4CZA_haamy5LvJ8Aww,7651
76
+ intelmq_extensions/tests/bots/outputs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ intelmq_extensions/tests/bots/outputs/mattermost/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ intelmq_extensions/tests/bots/outputs/mattermost/test_output.py,sha256=iSIa9VuDpjmWITJv5Ho8AKsD8TUfGrpMgl1xTjwLl3g,4874
79
+ intelmq_extensions/tests/bots/outputs/xmpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ intelmq_extensions/tests/bots/outputs/xmpp/test_output.py,sha256=y0fnxlYMgTOLRFLmbeflQTfxSakJR68R3RsSJYYv81o,178
81
+ intelmq_extensions/tests/bots/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ intelmq_extensions/tests/bots/parsers/blackkite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
+ intelmq_extensions/tests/bots/parsers/blackkite/data.py,sha256=gwfaErTsUmS04vovH_VTk0O0owifTOPE-fCptScJjR8,2155
84
+ intelmq_extensions/tests/bots/parsers/blackkite/test_parser.py,sha256=VWDj0iwhI96twlWj9ZRU8VtZ-DDIH9YiVlfbiOarj5I,7491
85
+ intelmq_extensions/tests/bots/parsers/disp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
+ intelmq_extensions/tests/bots/parsers/disp/test_parser.py,sha256=geUXWaKpOUW_k9-Qb_VAtp99cr6vDTcnSBmT9LfDHec,9714
87
+ intelmq_extensions/tests/bots/parsers/malwaredomains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ intelmq_extensions/tests/bots/parsers/malwaredomains/test_parser.py,sha256=zkfjcyniiPRcpABVurdRrRpZyZ2zV_PQ84xiU1eUJv0,1882
89
+ intelmq_extensions/tests/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
+ intelmq_extensions/tests/cli/test_create_reports.py,sha256=hZ-3lhNJJPhi9xetyMAG7k-G5crZ9kf0bbvQj-nMSrg,3343
91
+ intelmq_extensions/tests/cli/test_intelmqcli.py,sha256=Izy0FHVkj44DCgp4Zm8f1vYTdl5wDyCP1sZV0xgMrgY,5009
92
+ intelmq_extensions/tests/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ intelmq_extensions/tests/lib/base.py,sha256=iD4MuDq0Dh-CqFDgyXf4CfaJgT4AL7XAcNjPGxUlkPM,2560
94
+ intelmq_extensions/tests/lib/test_api_helpers.py,sha256=cO6KNfVjwpYgevyyxxokOAmk7VXo-8T8OCH8hQhf980,3807
95
+ intelmq_extensions-1.8.1.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
96
+ intelmq_extensions-1.8.1.dist-info/METADATA,sha256=FjXDB14UgCsC5FRaLxnsnGThgiC6p9k7ztXhi9zop5o,1988
97
+ intelmq_extensions-1.8.1.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
98
+ intelmq_extensions-1.8.1.dist-info/entry_points.txt,sha256=dW_TN7JbkRT4zV7cJoFGIVzAcuqEL9OA1k7fI9Qtipk,3489
99
+ intelmq_extensions-1.8.1.dist-info/top_level.txt,sha256=YVqZnmAiBfQPNdJPAv64Afvc41p3B24Akx2v2-3BFyc,19
100
+ intelmq_extensions-1.8.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.7.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,33 @@
1
+ [console_scripts]
2
+ intelmq.bots.collectors.certat.blackkite.collector = intelmq_extensions.bots.collectors.blackkite.collector:BOT.run
3
+ intelmq.bots.collectors.certat.disp.collector = intelmq_extensions.bots.collectors.disp.collector:BOT.run
4
+ intelmq.bots.collectors.certat.xmpp.collector = intelmq_extensions.bots.collectors.xmpp.collector:BOT.run
5
+ intelmq.bots.experts.certat.certat_contact_intern.expert = intelmq_extensions.bots.experts.certat_contact_intern.expert:BOT.run
6
+ intelmq.bots.experts.certat.copy_extra.expert = intelmq_extensions.bots.experts.copy_extra.expert:BOT.run
7
+ intelmq.bots.experts.certat.event_group_splitter.expert = intelmq_extensions.bots.experts.event_group_splitter.expert:BOT.run
8
+ intelmq.bots.experts.certat.event_splitter.expert = intelmq_extensions.bots.experts.event_splitter.expert:BOT.run
9
+ intelmq.bots.experts.certat.squelcher.expert = intelmq_extensions.bots.experts.squelcher.expert:BOT.run
10
+ intelmq.bots.experts.certat.vulnerability_lookup.expert = intelmq_extensions.bots.experts.vulnerability_lookup.expert:BOT.run
11
+ intelmq.bots.outputs.certat.mattermost.output = intelmq_extensions.bots.outputs.mattermost.output:BOT.run
12
+ intelmq.bots.outputs.certat.to_logs.output = intelmq_extensions.bots.outputs.to_logs.output:BOT.run
13
+ intelmq.bots.outputs.certat.xmpp.output = intelmq_extensions.bots.outputs.xmpp.output:BOT.run
14
+ intelmq.bots.parsers.certat.blackkite.parser = intelmq_extensions.bots.parsers.blackkite.parser:BOT.run
15
+ intelmq.bots.parsers.certat.disp.parser = intelmq_extensions.bots.parsers.disp.parser:BOT.run
16
+ intelmq.bots.parsers.certat.malwaredomains.parser = intelmq_extensions.bots.parsers.malwaredomains.parser:BOT.run
17
+ intelmq_extensions.bots.collectors.blackkite.collector = intelmq_extensions.bots.collectors.blackkite.collector:BOT.run
18
+ intelmq_extensions.bots.collectors.disp.collector = intelmq_extensions.bots.collectors.disp.collector:BOT.run
19
+ intelmq_extensions.bots.collectors.xmpp.collector = intelmq_extensions.bots.collectors.xmpp.collector:BOT.run
20
+ intelmq_extensions.bots.experts.certat_contact_intern.expert = intelmq_extensions.bots.experts.certat_contact_intern.expert:BOT.run
21
+ intelmq_extensions.bots.experts.copy_extra.expert = intelmq_extensions.bots.experts.copy_extra.expert:BOT.run
22
+ intelmq_extensions.bots.experts.event_group_splitter.expert = intelmq_extensions.bots.experts.event_group_splitter.expert:BOT.run
23
+ intelmq_extensions.bots.experts.event_splitter.expert = intelmq_extensions.bots.experts.event_splitter.expert:BOT.run
24
+ intelmq_extensions.bots.experts.squelcher.expert = intelmq_extensions.bots.experts.squelcher.expert:BOT.run
25
+ intelmq_extensions.bots.experts.vulnerability_lookup.expert = intelmq_extensions.bots.experts.vulnerability_lookup.expert:BOT.run
26
+ intelmq_extensions.bots.outputs.mattermost.output = intelmq_extensions.bots.outputs.mattermost.output:BOT.run
27
+ intelmq_extensions.bots.outputs.to_logs.output = intelmq_extensions.bots.outputs.to_logs.output:BOT.run
28
+ intelmq_extensions.bots.outputs.xmpp.output = intelmq_extensions.bots.outputs.xmpp.output:BOT.run
29
+ intelmq_extensions.bots.parsers.blackkite.parser = intelmq_extensions.bots.parsers.blackkite.parser:BOT.run
30
+ intelmq_extensions.bots.parsers.disp.parser = intelmq_extensions.bots.parsers.disp.parser:BOT.run
31
+ intelmq_extensions.bots.parsers.malwaredomains.parser = intelmq_extensions.bots.parsers.malwaredomains.parser:BOT.run
32
+ intelmqcli = intelmq_extensions.cli.intelmqcli:main
33
+ intelmqcli_create_reports = intelmq_extensions.cli.create_reports:main