pymisp 2.5.12__py3-none-any.whl → 2.5.17__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.
Potentially problematic release.
This version of pymisp might be problematic. Click here for more details.
- pymisp/__init__.py +1 -1
- pymisp/abstract.py +1 -1
- pymisp/api.py +6 -6
- pymisp/data/misp-objects/objects/{flowintel-cm-case → flowintel-case}/definition.json +3 -3
- pymisp/data/misp-objects/objects/{flowintel-cm-task → flowintel-task}/definition.json +3 -3
- pymisp/data/misp-objects/objects/{flowintel-cm-task-note → flowintel-task-note}/definition.json +3 -3
- pymisp/data/misp-objects/objects/flowintel-task-resource/definition.json +35 -0
- pymisp/data/misp-objects/objects/greynoise-ip/definition.json +56 -8
- pymisp/data/misp-objects/objects/network-data/definition.json +167 -0
- pymisp/data/misp-objects/objects/original-imported-file/definition.json +1 -0
- pymisp/data/misp-objects/objects/query/definition.json +4 -2
- pymisp/mispevent.py +27 -25
- pymisp/tools/emailobject.py +3 -5
- pymisp/tools/peobject.py +1 -1
- {pymisp-2.5.12.dist-info → pymisp-2.5.17.dist-info}/METADATA +6 -6
- {pymisp-2.5.12.dist-info → pymisp-2.5.17.dist-info}/RECORD +18 -16
- {pymisp-2.5.12.dist-info → pymisp-2.5.17.dist-info}/LICENSE +0 -0
- {pymisp-2.5.12.dist-info → pymisp-2.5.17.dist-info}/WHEEL +0 -0
pymisp/__init__.py
CHANGED
|
@@ -77,7 +77,7 @@ __all__ = ['PyMISP', 'register_user', 'AbstractMISP', 'MISPTag',
|
|
|
77
77
|
'MISPOrganisationBlocklist', 'MISPEventReport', 'MISPCorrelationExclusion',
|
|
78
78
|
'MISPDecayingModel', 'MISPGalaxy', 'MISPGalaxyCluster', 'MISPGalaxyClusterElement',
|
|
79
79
|
'MISPGalaxyClusterRelation', 'MISPNote', 'MISPOpinion', 'MISPRelationship',
|
|
80
|
-
'PyMISPError', 'NewEventError', 'NewAttributeError',
|
|
80
|
+
'PyMISPError', 'NewEventError', 'NewAttributeError', 'MISPServerError',
|
|
81
81
|
'NoURL', 'NoKey', 'InvalidMISPObject', 'UnknownMISPObjectTemplate', 'PyMISPInvalidFormat',
|
|
82
82
|
'Distribution', 'ThreatLevel', 'Analysis', 'ExpandedPyMISP'
|
|
83
83
|
]
|
pymisp/abstract.py
CHANGED
|
@@ -383,7 +383,7 @@ class MISPTag(AbstractMISP):
|
|
|
383
383
|
|
|
384
384
|
def from_dict(self, **kwargs) -> None: # type: ignore[no-untyped-def]
|
|
385
385
|
if kwargs.get('Tag'):
|
|
386
|
-
kwargs = kwargs.get('Tag')
|
|
386
|
+
kwargs = kwargs.get('Tag')
|
|
387
387
|
super().from_dict(**kwargs)
|
|
388
388
|
|
|
389
389
|
def _set_default(self) -> None:
|
pymisp/api.py
CHANGED
|
@@ -129,10 +129,10 @@ def brotli_supported() -> bool:
|
|
|
129
129
|
# urllib >= 1.25.1 includes brotli support
|
|
130
130
|
version_splitted = version('urllib3').split('.') # noqa: F811
|
|
131
131
|
if len(version_splitted) == 2:
|
|
132
|
-
major, minor = version_splitted
|
|
132
|
+
major, minor = version_splitted
|
|
133
133
|
patch = 0
|
|
134
134
|
else:
|
|
135
|
-
major, minor, patch = version_splitted
|
|
135
|
+
major, minor, patch = version_splitted
|
|
136
136
|
major, minor, patch = int(major), int(minor), int(patch)
|
|
137
137
|
urllib3_with_brotli = (major == 1 and ((minor == 25 and patch >= 1) or (minor >= 26))) or major >= 2
|
|
138
138
|
|
|
@@ -1050,7 +1050,7 @@ class PyMISP:
|
|
|
1050
1050
|
# At this point, we assume the user tried to add an attribute on an event they don't own
|
|
1051
1051
|
# Re-try with a proposal
|
|
1052
1052
|
if isinstance(attribute, (MISPAttribute, dict)):
|
|
1053
|
-
return self.add_attribute_proposal(event_id, attribute, pythonify)
|
|
1053
|
+
return self.add_attribute_proposal(event_id, attribute, pythonify)
|
|
1054
1054
|
if not (self.global_pythonify or pythonify) or 'errors' in new_attribute:
|
|
1055
1055
|
return new_attribute
|
|
1056
1056
|
a = MISPAttribute()
|
|
@@ -1563,7 +1563,7 @@ class PyMISP:
|
|
|
1563
1563
|
if isinstance(warninglist_id, list):
|
|
1564
1564
|
query['id'] = warninglist_id
|
|
1565
1565
|
else:
|
|
1566
|
-
query['id'] = [warninglist_id]
|
|
1566
|
+
query['id'] = [warninglist_id]
|
|
1567
1567
|
if warninglist_name is not None:
|
|
1568
1568
|
if isinstance(warninglist_name, list):
|
|
1569
1569
|
query['name'] = warninglist_name
|
|
@@ -3032,7 +3032,7 @@ class PyMISP:
|
|
|
3032
3032
|
if return_format == 'csv':
|
|
3033
3033
|
normalized_response_text = self._check_response(response)
|
|
3034
3034
|
if (self.global_pythonify or pythonify) and not headerless:
|
|
3035
|
-
return self._csv_to_dict(normalized_response_text)
|
|
3035
|
+
return self._csv_to_dict(normalized_response_text)
|
|
3036
3036
|
else:
|
|
3037
3037
|
return normalized_response_text
|
|
3038
3038
|
elif return_format not in ['json', 'yara-json']:
|
|
@@ -3060,7 +3060,7 @@ class PyMISP:
|
|
|
3060
3060
|
to_return.append(me)
|
|
3061
3061
|
elif controller == 'attributes':
|
|
3062
3062
|
# FIXME: obvs, this is hurting my soul. We need something generic.
|
|
3063
|
-
for a in normalized_response['Attribute']:
|
|
3063
|
+
for a in normalized_response['Attribute']:
|
|
3064
3064
|
ma = MISPAttribute()
|
|
3065
3065
|
ma.from_dict(**a)
|
|
3066
3066
|
if 'Event' in ma:
|
|
@@ -88,9 +88,9 @@
|
|
|
88
88
|
"ui-priority": 1
|
|
89
89
|
}
|
|
90
90
|
},
|
|
91
|
-
"description": "A case as defined by flowintel
|
|
91
|
+
"description": "A case as defined by flowintel.",
|
|
92
92
|
"meta-category": "misc",
|
|
93
|
-
"name": "flowintel-
|
|
93
|
+
"name": "flowintel-case",
|
|
94
94
|
"uuid": "19df57c7-b315-4fd2-84e5-d81ab221425e",
|
|
95
|
-
"version":
|
|
95
|
+
"version": 4
|
|
96
96
|
}
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
"ui-priority": 0
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
|
-
"description": "A task as defined by flowintel
|
|
81
|
+
"description": "A task as defined by flowintel.",
|
|
82
82
|
"meta-category": "misc",
|
|
83
|
-
"name": "flowintel-
|
|
83
|
+
"name": "flowintel-task",
|
|
84
84
|
"uuid": "2f525f6e-d3f2-4cb9-9ca0-f1160d99397d",
|
|
85
|
-
"version":
|
|
85
|
+
"version": 5
|
|
86
86
|
}
|
pymisp/data/misp-objects/objects/{flowintel-cm-task-note → flowintel-task-note}/definition.json
RENAMED
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"ui-priority": 2
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
|
-
"description": "A task's note as defined by flowintel
|
|
30
|
+
"description": "A task's note as defined by flowintel.",
|
|
31
31
|
"meta-category": "misc",
|
|
32
|
-
"name": "flowintel-
|
|
32
|
+
"name": "flowintel-task-note",
|
|
33
33
|
"uuid": "2c6f6aba-48b6-482f-a810-81934d29be9a",
|
|
34
|
-
"version":
|
|
34
|
+
"version": 2
|
|
35
35
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"attributes": {
|
|
3
|
+
"origin-url": {
|
|
4
|
+
"description": "Origin of the task",
|
|
5
|
+
"disable_correlation": true,
|
|
6
|
+
"misp-attribute": "url",
|
|
7
|
+
"to_ids": false,
|
|
8
|
+
"ui-priority": 1
|
|
9
|
+
},
|
|
10
|
+
"resource": {
|
|
11
|
+
"description": "Resources of the task",
|
|
12
|
+
"disable_correlation": true,
|
|
13
|
+
"misp-attribute": "text",
|
|
14
|
+
"to_ids": false,
|
|
15
|
+
"ui-priority": 0
|
|
16
|
+
},
|
|
17
|
+
"resource-uuid": {
|
|
18
|
+
"description": "UUID of the resource",
|
|
19
|
+
"disable_correlation": true,
|
|
20
|
+
"misp-attribute": "text",
|
|
21
|
+
"ui-priority": 2
|
|
22
|
+
},
|
|
23
|
+
"task-uuid": {
|
|
24
|
+
"description": "UUID of the parent task",
|
|
25
|
+
"disable_correlation": true,
|
|
26
|
+
"misp-attribute": "text",
|
|
27
|
+
"ui-priority": 2
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"description": "A task's note as defined by flowintel.",
|
|
31
|
+
"meta-category": "misc",
|
|
32
|
+
"name": "flowintel-task-resource",
|
|
33
|
+
"uuid": "dc1d5bae-3611-499c-bbd6-1ca3ad4048dd",
|
|
34
|
+
"version": 1
|
|
35
|
+
}
|
|
@@ -4,59 +4,107 @@
|
|
|
4
4
|
"description": "GreyNoise Actor",
|
|
5
5
|
"disable_correlation": true,
|
|
6
6
|
"misp-attribute": "text",
|
|
7
|
+
"ui-priority": 4
|
|
8
|
+
},
|
|
9
|
+
"asn": {
|
|
10
|
+
"description": "GreyNoise ASN",
|
|
11
|
+
"disable_correlation": true,
|
|
12
|
+
"misp-attribute": "AS",
|
|
13
|
+
"ui-priority": 3
|
|
14
|
+
},
|
|
15
|
+
"bot": {
|
|
16
|
+
"description": "GreyNoise Is Bot Flag",
|
|
17
|
+
"disable_correlation": true,
|
|
18
|
+
"misp-attribute": "boolean",
|
|
7
19
|
"ui-priority": 1
|
|
8
20
|
},
|
|
9
21
|
"classification": {
|
|
10
22
|
"description": "GreyNoise Classification",
|
|
11
23
|
"disable_correlation": true,
|
|
12
24
|
"misp-attribute": "text",
|
|
13
|
-
"ui-priority":
|
|
25
|
+
"ui-priority": 6
|
|
26
|
+
},
|
|
27
|
+
"domain": {
|
|
28
|
+
"description": "GreyNoise Domain",
|
|
29
|
+
"disable_correlation": false,
|
|
30
|
+
"misp-attribute": "domain",
|
|
31
|
+
"ui-priority": 6
|
|
14
32
|
},
|
|
15
33
|
"first-seen": {
|
|
16
34
|
"description": "First Seen",
|
|
17
35
|
"disable_correlation": true,
|
|
18
36
|
"misp-attribute": "datetime",
|
|
19
|
-
"ui-priority":
|
|
37
|
+
"ui-priority": 5
|
|
20
38
|
},
|
|
21
39
|
"ip-src": {
|
|
22
40
|
"description": "Source IP address of the network connection.",
|
|
23
41
|
"misp-attribute": "ip-src",
|
|
24
|
-
"ui-priority":
|
|
42
|
+
"ui-priority": 7
|
|
25
43
|
},
|
|
26
44
|
"last-seen": {
|
|
27
45
|
"description": "Last Seen",
|
|
28
46
|
"disable_correlation": true,
|
|
29
47
|
"misp-attribute": "datetime",
|
|
30
|
-
"ui-priority":
|
|
48
|
+
"ui-priority": 5
|
|
31
49
|
},
|
|
32
50
|
"link": {
|
|
33
51
|
"description": "GreyNoise Visualizer Link",
|
|
34
52
|
"disable_correlation": true,
|
|
35
53
|
"misp-attribute": "link",
|
|
36
|
-
"ui-priority":
|
|
54
|
+
"ui-priority": 4
|
|
37
55
|
},
|
|
38
56
|
"noise": {
|
|
39
57
|
"description": "GreyNoise Internet Scanning Flag",
|
|
40
58
|
"disable_correlation": true,
|
|
41
59
|
"misp-attribute": "text",
|
|
42
|
-
"ui-priority":
|
|
60
|
+
"ui-priority": 4
|
|
43
61
|
},
|
|
44
62
|
"provider": {
|
|
45
63
|
"description": "GreyNoise Service Provider",
|
|
46
64
|
"disable_correlation": true,
|
|
47
65
|
"misp-attribute": "text",
|
|
48
|
-
"ui-priority":
|
|
66
|
+
"ui-priority": 4
|
|
67
|
+
},
|
|
68
|
+
"rdns": {
|
|
69
|
+
"description": "GreyNoise Reverse DNS Hostname",
|
|
70
|
+
"disable_correlation": false,
|
|
71
|
+
"misp-attribute": "hostname",
|
|
72
|
+
"ui-priority": 2
|
|
73
|
+
},
|
|
74
|
+
"rdns_parent": {
|
|
75
|
+
"description": "GreyNoise Reverse DNS Domain",
|
|
76
|
+
"disable_correlation": true,
|
|
77
|
+
"misp-attribute": "domain",
|
|
78
|
+
"ui-priority": 2
|
|
49
79
|
},
|
|
50
80
|
"riot": {
|
|
51
81
|
"description": "GreyNoise Common Business Service Flag",
|
|
52
82
|
"disable_correlation": true,
|
|
53
83
|
"misp-attribute": "text",
|
|
84
|
+
"ui-priority": 4
|
|
85
|
+
},
|
|
86
|
+
"source_country": {
|
|
87
|
+
"description": "GreyNoise Source Country",
|
|
88
|
+
"disable_correlation": true,
|
|
89
|
+
"misp-attribute": "text",
|
|
90
|
+
"ui-priority": 3
|
|
91
|
+
},
|
|
92
|
+
"tor": {
|
|
93
|
+
"description": "GreyNoise Is Tor Flag",
|
|
94
|
+
"disable_correlation": true,
|
|
95
|
+
"misp-attribute": "boolean",
|
|
54
96
|
"ui-priority": 1
|
|
55
97
|
},
|
|
56
98
|
"trust-level": {
|
|
57
99
|
"description": "GreyNoise RIOT Trust Level",
|
|
58
100
|
"disable_correlation": true,
|
|
59
101
|
"misp-attribute": "text",
|
|
102
|
+
"ui-priority": 4
|
|
103
|
+
},
|
|
104
|
+
"vpn": {
|
|
105
|
+
"description": "GreyNoise Is VPN Flag",
|
|
106
|
+
"disable_correlation": true,
|
|
107
|
+
"misp-attribute": "boolean",
|
|
60
108
|
"ui-priority": 1
|
|
61
109
|
}
|
|
62
110
|
},
|
|
@@ -67,5 +115,5 @@
|
|
|
67
115
|
"ip-src"
|
|
68
116
|
],
|
|
69
117
|
"uuid": "6B14A94A-46E4-4B82-B24D-0DBF8E8B3FD9",
|
|
70
|
-
"version":
|
|
118
|
+
"version": 2
|
|
71
119
|
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
{
|
|
2
|
+
"attributes": {
|
|
3
|
+
"counter": {
|
|
4
|
+
"description": "counter (ex.: bytes, packets, flows, events, etc)",
|
|
5
|
+
"disable_correlation": true,
|
|
6
|
+
"misp-attribute": "counter",
|
|
7
|
+
"multiple": true,
|
|
8
|
+
"ui-priority": 3
|
|
9
|
+
},
|
|
10
|
+
"data": {
|
|
11
|
+
"description": "network traffic (ex.: payload, log lines, etc)",
|
|
12
|
+
"disable_correlation": true,
|
|
13
|
+
"misp-attribute": "text",
|
|
14
|
+
"multiple": true,
|
|
15
|
+
"ui-priority": 0
|
|
16
|
+
},
|
|
17
|
+
"description": {
|
|
18
|
+
"categories": [
|
|
19
|
+
"Network activity",
|
|
20
|
+
"External analysis"
|
|
21
|
+
],
|
|
22
|
+
"description": "describe type/content of the network data",
|
|
23
|
+
"disable_correlation": true,
|
|
24
|
+
"misp-attribute": "text",
|
|
25
|
+
"multiple": true,
|
|
26
|
+
"ui-priority": 15
|
|
27
|
+
},
|
|
28
|
+
"dst_ASN": {
|
|
29
|
+
"categories": [
|
|
30
|
+
"Network activity",
|
|
31
|
+
"External analysis"
|
|
32
|
+
],
|
|
33
|
+
"description": "destination autonomous system number",
|
|
34
|
+
"disable_correlation": true,
|
|
35
|
+
"misp-attribute": "AS",
|
|
36
|
+
"multiple": true,
|
|
37
|
+
"ui-priority": 8
|
|
38
|
+
},
|
|
39
|
+
"dst_CC": {
|
|
40
|
+
"categories": [
|
|
41
|
+
"Network activity",
|
|
42
|
+
"External analysis"
|
|
43
|
+
],
|
|
44
|
+
"description": "destination country code",
|
|
45
|
+
"disable_correlation": true,
|
|
46
|
+
"misp-attribute": "text",
|
|
47
|
+
"multiple": true,
|
|
48
|
+
"ui-priority": 9
|
|
49
|
+
},
|
|
50
|
+
"dst_IP": {
|
|
51
|
+
"categories": [
|
|
52
|
+
"Network activity",
|
|
53
|
+
"External analysis"
|
|
54
|
+
],
|
|
55
|
+
"description": "destination IP address",
|
|
56
|
+
"misp-attribute": "ip-dst",
|
|
57
|
+
"multiple": true,
|
|
58
|
+
"ui-priority": 7
|
|
59
|
+
},
|
|
60
|
+
"dst_hostname": {
|
|
61
|
+
"categories": [
|
|
62
|
+
"Network activity",
|
|
63
|
+
"External analysis"
|
|
64
|
+
],
|
|
65
|
+
"description": "destination hostname",
|
|
66
|
+
"misp-attribute": "hostname",
|
|
67
|
+
"multiple": true,
|
|
68
|
+
"ui-priority": 5
|
|
69
|
+
},
|
|
70
|
+
"dst_port": {
|
|
71
|
+
"categories": [
|
|
72
|
+
"Network activity",
|
|
73
|
+
"External analysis"
|
|
74
|
+
],
|
|
75
|
+
"description": "destination port",
|
|
76
|
+
"disable_correlation": true,
|
|
77
|
+
"misp-attribute": "port",
|
|
78
|
+
"multiple": true,
|
|
79
|
+
"ui-priority": 6
|
|
80
|
+
},
|
|
81
|
+
"first_seen": {
|
|
82
|
+
"description": "timestamp of the first data seen",
|
|
83
|
+
"disable_correlation": true,
|
|
84
|
+
"misp-attribute": "datetime",
|
|
85
|
+
"ui-priority": 2
|
|
86
|
+
},
|
|
87
|
+
"last_seen": {
|
|
88
|
+
"description": "timestamp of the last data seen",
|
|
89
|
+
"disable_correlation": true,
|
|
90
|
+
"misp-attribute": "datetime",
|
|
91
|
+
"ui-priority": 1
|
|
92
|
+
},
|
|
93
|
+
"protocol": {
|
|
94
|
+
"categories": [
|
|
95
|
+
"Network activity",
|
|
96
|
+
"External analysis"
|
|
97
|
+
],
|
|
98
|
+
"description": "protocol (ex.: TCP, UDP, ICMP, TLS, HTTP, HTTPS, SIP, etc)",
|
|
99
|
+
"disable_correlation": true,
|
|
100
|
+
"misp-attribute": "text",
|
|
101
|
+
"multiple": true,
|
|
102
|
+
"ui-priority": 4
|
|
103
|
+
},
|
|
104
|
+
"src_ASN": {
|
|
105
|
+
"categories": [
|
|
106
|
+
"Network activity",
|
|
107
|
+
"External analysis"
|
|
108
|
+
],
|
|
109
|
+
"description": "source autonomous system number",
|
|
110
|
+
"disable_correlation": true,
|
|
111
|
+
"misp-attribute": "AS",
|
|
112
|
+
"multiple": true,
|
|
113
|
+
"ui-priority": 13
|
|
114
|
+
},
|
|
115
|
+
"src_CC": {
|
|
116
|
+
"categories": [
|
|
117
|
+
"Network activity",
|
|
118
|
+
"External analysis"
|
|
119
|
+
],
|
|
120
|
+
"description": "source country code",
|
|
121
|
+
"disable_correlation": true,
|
|
122
|
+
"misp-attribute": "text",
|
|
123
|
+
"multiple": true,
|
|
124
|
+
"ui-priority": 14
|
|
125
|
+
},
|
|
126
|
+
"src_IP": {
|
|
127
|
+
"categories": [
|
|
128
|
+
"Network activity",
|
|
129
|
+
"External analysis"
|
|
130
|
+
],
|
|
131
|
+
"description": "source IP address",
|
|
132
|
+
"misp-attribute": "ip-src",
|
|
133
|
+
"multiple": true,
|
|
134
|
+
"ui-priority": 12
|
|
135
|
+
},
|
|
136
|
+
"src_hostname": {
|
|
137
|
+
"categories": [
|
|
138
|
+
"Network activity",
|
|
139
|
+
"External analysis"
|
|
140
|
+
],
|
|
141
|
+
"description": "source hostname",
|
|
142
|
+
"misp-attribute": "hostname",
|
|
143
|
+
"multiple": true,
|
|
144
|
+
"ui-priority": 10
|
|
145
|
+
},
|
|
146
|
+
"src_port": {
|
|
147
|
+
"categories": [
|
|
148
|
+
"Network activity",
|
|
149
|
+
"External analysis"
|
|
150
|
+
],
|
|
151
|
+
"description": "source port",
|
|
152
|
+
"disable_correlation": true,
|
|
153
|
+
"misp-attribute": "port",
|
|
154
|
+
"multiple": true,
|
|
155
|
+
"ui-priority": 11
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"description": "network data, including payloads/logs, relevant timestamps, data volume and enrichment of the TCP/IP 5-tuple connection information.",
|
|
159
|
+
"meta-category": "network",
|
|
160
|
+
"name": "network-data",
|
|
161
|
+
"requiredOneOf": [
|
|
162
|
+
"src_IP",
|
|
163
|
+
"data"
|
|
164
|
+
],
|
|
165
|
+
"uuid": "64d5949b-98ac-459d-83b8-4688f45795de",
|
|
166
|
+
"version": 2
|
|
167
|
+
}
|
|
@@ -27,7 +27,9 @@
|
|
|
27
27
|
"Google search query",
|
|
28
28
|
"Ariel Query Language (qradar)",
|
|
29
29
|
"Grep",
|
|
30
|
-
"Devo LINQ"
|
|
30
|
+
"Devo LINQ",
|
|
31
|
+
"Microsoft Defender XDR",
|
|
32
|
+
"Sentinel Advanced Security Information Model"
|
|
31
33
|
],
|
|
32
34
|
"ui-priority": 0
|
|
33
35
|
},
|
|
@@ -49,5 +51,5 @@
|
|
|
49
51
|
"query"
|
|
50
52
|
],
|
|
51
53
|
"uuid": "006539b3-f68a-4a02-a213-e600762d39b5",
|
|
52
|
-
"version":
|
|
54
|
+
"version": 4
|
|
53
55
|
}
|
pymisp/mispevent.py
CHANGED
|
@@ -2,9 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from datetime import timezone, datetime, date
|
|
4
4
|
import copy
|
|
5
|
+
from dateutil.parser import parse
|
|
5
6
|
import os
|
|
6
7
|
import base64
|
|
7
|
-
import sys
|
|
8
8
|
from io import BytesIO, BufferedIOBase, TextIOBase
|
|
9
9
|
from zipfile import ZipFile
|
|
10
10
|
import uuid
|
|
@@ -111,12 +111,6 @@ class AnalystDataBehaviorMixin(AbstractMISP):
|
|
|
111
111
|
self.add_relationship(**relationship)
|
|
112
112
|
|
|
113
113
|
|
|
114
|
-
try:
|
|
115
|
-
from dateutil.parser import parse
|
|
116
|
-
except ImportError:
|
|
117
|
-
logger.exception("Cannot import dateutil")
|
|
118
|
-
|
|
119
|
-
|
|
120
114
|
def _make_datetime(value: int | float | str | datetime | date) -> datetime:
|
|
121
115
|
if isinstance(value, (int, float)):
|
|
122
116
|
# Timestamp
|
|
@@ -126,7 +120,7 @@ def _make_datetime(value: int | float | str | datetime | date) -> datetime:
|
|
|
126
120
|
# faster
|
|
127
121
|
value = datetime.fromisoformat(value)
|
|
128
122
|
except Exception:
|
|
129
|
-
value = parse(value)
|
|
123
|
+
value = parse(value)
|
|
130
124
|
elif isinstance(value, datetime):
|
|
131
125
|
pass
|
|
132
126
|
elif isinstance(value, date): # NOTE: date has to be *after* datetime, or it will be overwritten
|
|
@@ -399,7 +393,7 @@ class MISPAttribute(AnalystDataBehaviorMixin):
|
|
|
399
393
|
if self.type == 'malware-sample':
|
|
400
394
|
try:
|
|
401
395
|
# Ignore type, if data is None -> exception
|
|
402
|
-
with ZipFile(self.data) as f:
|
|
396
|
+
with ZipFile(self.data) as f:
|
|
403
397
|
if not self.__is_misp_encrypted_file(f):
|
|
404
398
|
raise PyMISPError('Not an existing malware sample')
|
|
405
399
|
for name in f.namelist():
|
|
@@ -415,7 +409,12 @@ class MISPAttribute(AnalystDataBehaviorMixin):
|
|
|
415
409
|
|
|
416
410
|
def __setattr__(self, name: str, value: Any) -> None:
|
|
417
411
|
if name in ['first_seen', 'last_seen']:
|
|
418
|
-
|
|
412
|
+
try:
|
|
413
|
+
_datetime = _make_datetime(value)
|
|
414
|
+
except Exception:
|
|
415
|
+
if value is not None:
|
|
416
|
+
logger.warning(f'Invalid value ({value}) for {name}, skipping.')
|
|
417
|
+
return None
|
|
419
418
|
|
|
420
419
|
# NOTE: the two following should be exceptions, but there are existing events in this state,
|
|
421
420
|
# And we cannot dump them if it is there.
|
|
@@ -488,7 +487,7 @@ class MISPAttribute(AnalystDataBehaviorMixin):
|
|
|
488
487
|
return self._malware_binary
|
|
489
488
|
elif hasattr(self, 'malware_filename'):
|
|
490
489
|
# Have a binary, but didn't decrypt it yet
|
|
491
|
-
with ZipFile(self.data) as f:
|
|
490
|
+
with ZipFile(self.data) as f:
|
|
492
491
|
for name in f.namelist():
|
|
493
492
|
if not name.endswith('.filename.txt'):
|
|
494
493
|
with f.open(name, pwd=b'infected') as unpacked:
|
|
@@ -585,18 +584,13 @@ class MISPAttribute(AnalystDataBehaviorMixin):
|
|
|
585
584
|
if self.type == 'datetime' and isinstance(self.value, str):
|
|
586
585
|
try:
|
|
587
586
|
# Faster
|
|
588
|
-
|
|
589
|
-
self.value = datetime.fromisoformat(self.value)
|
|
590
|
-
else:
|
|
591
|
-
if '+' in self.value or '-' in self.value:
|
|
592
|
-
self.value = datetime.strptime(self.value, "%Y-%m-%dT%H:%M:%S.%f%z")
|
|
593
|
-
elif '.' in self.value:
|
|
594
|
-
self.value = datetime.strptime(self.value, "%Y-%m-%dT%H:%M:%S.%f")
|
|
595
|
-
else:
|
|
596
|
-
self.value = datetime.strptime(self.value, "%Y-%m-%dT%H:%M:%S")
|
|
587
|
+
self.value = datetime.fromisoformat(self.value)
|
|
597
588
|
except ValueError:
|
|
598
589
|
# Slower, but if the other ones fail, that's a good fallback
|
|
599
|
-
|
|
590
|
+
try:
|
|
591
|
+
self.value = parse(self.value)
|
|
592
|
+
except Exception:
|
|
593
|
+
raise NewAttributeError(f'{self.value} is not a valid datetime, the attribute is broken.')
|
|
600
594
|
|
|
601
595
|
# Default values
|
|
602
596
|
self.category = kwargs.pop('category', type_defaults['default_category'])
|
|
@@ -862,7 +856,12 @@ class MISPObject(AnalystDataBehaviorMixin):
|
|
|
862
856
|
|
|
863
857
|
def __setattr__(self, name: str, value: Any) -> None:
|
|
864
858
|
if name in ['first_seen', 'last_seen']:
|
|
865
|
-
|
|
859
|
+
try:
|
|
860
|
+
value = _make_datetime(value)
|
|
861
|
+
except Exception:
|
|
862
|
+
if value is not None:
|
|
863
|
+
logger.warning(f'Invalid value ({value}) for {name}, skipping.')
|
|
864
|
+
return None
|
|
866
865
|
|
|
867
866
|
if name == 'last_seen' and hasattr(self, 'first_seen') and self.first_seen > value:
|
|
868
867
|
logger.warning(f'last_seen ({value}) has to be after first_seen ({self.first_seen})')
|
|
@@ -1855,7 +1854,10 @@ class MISPEvent(AnalystDataBehaviorMixin):
|
|
|
1855
1854
|
# faster
|
|
1856
1855
|
value = date.fromisoformat(value)
|
|
1857
1856
|
except Exception:
|
|
1858
|
-
|
|
1857
|
+
try:
|
|
1858
|
+
value = parse(value).date()
|
|
1859
|
+
except Exception as e:
|
|
1860
|
+
raise NewEventError(f'Invalid format for the date: {e} - {type(value)} - {value}')
|
|
1859
1861
|
elif isinstance(value, (int, float)):
|
|
1860
1862
|
value = date.fromtimestamp(value)
|
|
1861
1863
|
elif isinstance(value, datetime):
|
|
@@ -1871,7 +1873,7 @@ class MISPEvent(AnalystDataBehaviorMixin):
|
|
|
1871
1873
|
:param ignore_invalid: if True, assigns current date if d is not an expected type
|
|
1872
1874
|
"""
|
|
1873
1875
|
if isinstance(d, (str, int, float, datetime, date)):
|
|
1874
|
-
self.date = d
|
|
1876
|
+
self.date = d
|
|
1875
1877
|
elif ignore_invalid:
|
|
1876
1878
|
self.date = date.today()
|
|
1877
1879
|
else:
|
|
@@ -1938,7 +1940,7 @@ class MISPEvent(AnalystDataBehaviorMixin):
|
|
|
1938
1940
|
for rel_event in kwargs.pop('RelatedEvent'):
|
|
1939
1941
|
sub_event = MISPEvent()
|
|
1940
1942
|
sub_event.load(rel_event)
|
|
1941
|
-
self.RelatedEvent.append({'Event': sub_event})
|
|
1943
|
+
self.RelatedEvent.append({'Event': sub_event})
|
|
1942
1944
|
if kwargs.get('Tag'):
|
|
1943
1945
|
[self.add_tag(tag) for tag in kwargs.pop('Tag')]
|
|
1944
1946
|
if kwargs.get('Object'):
|
pymisp/tools/emailobject.py
CHANGED
|
@@ -10,7 +10,7 @@ from email import policy, message_from_bytes
|
|
|
10
10
|
from email.message import EmailMessage
|
|
11
11
|
from io import BytesIO
|
|
12
12
|
from pathlib import Path
|
|
13
|
-
from typing import
|
|
13
|
+
from typing import Any
|
|
14
14
|
|
|
15
15
|
from extract_msg import openMsg
|
|
16
16
|
from extract_msg.msg_classes import MessageBase
|
|
@@ -50,7 +50,6 @@ class EMailObject(AbstractMISPObjectGenerator):
|
|
|
50
50
|
eml = message_from_bytes(content_in_bytes,
|
|
51
51
|
_class=EmailMessage,
|
|
52
52
|
policy=policy.default)
|
|
53
|
-
eml = cast(EmailMessage, eml) # Only needed to quiet mypy
|
|
54
53
|
if len(eml) != 0:
|
|
55
54
|
self.raw_emails['eml'] = self.__pseudofile
|
|
56
55
|
return eml
|
|
@@ -73,7 +72,6 @@ class EMailObject(AbstractMISPObjectGenerator):
|
|
|
73
72
|
eml_bytes = content_in_bytes.decode("utf_8_sig").encode("utf-8")
|
|
74
73
|
eml = email.message_from_bytes(eml_bytes,
|
|
75
74
|
policy=policy.default)
|
|
76
|
-
eml = cast(EmailMessage, eml) # Only needed to quiet mypy
|
|
77
75
|
if len(eml) != 0:
|
|
78
76
|
self.raw_emails['eml'] = BytesIO(eml_bytes)
|
|
79
77
|
return eml
|
|
@@ -99,7 +97,7 @@ class EMailObject(AbstractMISPObjectGenerator):
|
|
|
99
97
|
def _msg_to_eml(self, msg_bytes: bytes) -> EmailMessage:
|
|
100
98
|
"""Converts a msg into an eml."""
|
|
101
99
|
# NOTE: openMsg returns a MessageBase, not a MSGFile
|
|
102
|
-
msg_obj: MessageBase = openMsg(msg_bytes)
|
|
100
|
+
msg_obj: MessageBase = openMsg(msg_bytes)
|
|
103
101
|
# msg obj stores the original raw header here
|
|
104
102
|
message, body, attachments = self._extract_msg_objects(msg_obj)
|
|
105
103
|
eml = self._build_eml(message, body, attachments)
|
|
@@ -107,7 +105,7 @@ class EMailObject(AbstractMISPObjectGenerator):
|
|
|
107
105
|
|
|
108
106
|
def _extract_msg_objects(self, msg_obj: MessageBase) -> tuple[EmailMessage, dict[str, Any], list[AttachmentBase] | list[SignedAttachment]]:
|
|
109
107
|
"""Extracts email objects needed to construct an eml from a msg."""
|
|
110
|
-
message: EmailMessage = email.message_from_string(msg_obj.header.as_string(), policy=policy.default)
|
|
108
|
+
message: EmailMessage = email.message_from_string(msg_obj.header.as_string(), policy=policy.default)
|
|
111
109
|
body = {}
|
|
112
110
|
if msg_obj.body is not None:
|
|
113
111
|
body['text'] = {"obj": msg_obj.body,
|
pymisp/tools/peobject.py
CHANGED
|
@@ -202,7 +202,7 @@ class PESigners(AbstractMISPObjectGenerator):
|
|
|
202
202
|
self.add_attribute('digest_algorithm', value=str(self.__signer.digest_algorithm))
|
|
203
203
|
self.add_attribute('encryption_algorithm', value=str(self.__signer.encryption_algorithm))
|
|
204
204
|
self.add_attribute('digest-base64', value=b64encode(self.__signer.encrypted_digest))
|
|
205
|
-
info: lief.PE.SpcSpOpusInfo = self.__signer.get_attribute(lief.PE.Attribute.TYPE.SPC_SP_OPUS_INFO)
|
|
205
|
+
info: lief.PE.SpcSpOpusInfo = self.__signer.get_attribute(lief.PE.Attribute.TYPE.SPC_SP_OPUS_INFO)
|
|
206
206
|
if info:
|
|
207
207
|
self.add_attribute('program-name', value=info.program_name)
|
|
208
208
|
self.add_attribute('url', value=info.more_info)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pymisp
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.17
|
|
4
4
|
Summary: Python API for MISP.
|
|
5
5
|
License: BSD-2-Clause
|
|
6
6
|
Author: Raphaël Vinot
|
|
@@ -31,20 +31,20 @@ Provides-Extra: virustotal
|
|
|
31
31
|
Requires-Dist: RTFDE (>=0.1.2.1) ; (python_version <= "3.9") and (extra == "email")
|
|
32
32
|
Requires-Dist: beautifulsoup4 (>=4.13.4) ; extra == "openioc"
|
|
33
33
|
Requires-Dist: deprecated (>=1.2.18)
|
|
34
|
-
Requires-Dist: docutils (
|
|
34
|
+
Requires-Dist: docutils (<0.22) ; (python_version >= "3.11") and (extra == "docs")
|
|
35
35
|
Requires-Dist: extract_msg (>=0.54.1) ; extra == "email"
|
|
36
|
-
Requires-Dist: lief (>=0.16.
|
|
36
|
+
Requires-Dist: lief (>=0.16.6) ; extra == "fileobjects"
|
|
37
37
|
Requires-Dist: myst-parser (>=4.0.1) ; (python_version >= "3.11") and (extra == "docs")
|
|
38
38
|
Requires-Dist: oletools (>=0.60.2) ; extra == "email"
|
|
39
39
|
Requires-Dist: pydeep2 (>=0.5.1) ; extra == "fileobjects"
|
|
40
40
|
Requires-Dist: pyfaup (>=1.2) ; extra == "url"
|
|
41
41
|
Requires-Dist: python-dateutil (>=2.9.0.post0)
|
|
42
42
|
Requires-Dist: python-magic (>=0.4.27) ; extra == "fileobjects"
|
|
43
|
-
Requires-Dist: reportlab (>=4.4.
|
|
44
|
-
Requires-Dist: requests (>=2.32.
|
|
43
|
+
Requires-Dist: reportlab (>=4.4.3) ; extra == "pdfexport"
|
|
44
|
+
Requires-Dist: requests (>=2.32.4)
|
|
45
45
|
Requires-Dist: sphinx (>=8.2.3) ; (python_version >= "3.11") and (extra == "docs")
|
|
46
46
|
Requires-Dist: sphinx-autodoc-typehints (>=3.2.0) ; (python_version >= "3.11") and (extra == "docs")
|
|
47
|
-
Requires-Dist: urllib3 (>=2.
|
|
47
|
+
Requires-Dist: urllib3 (>=2.5.0) ; extra == "brotli"
|
|
48
48
|
Requires-Dist: validators (>=0.35.0) ; extra == "virustotal"
|
|
49
49
|
Project-URL: Documentation, https://pymisp.readthedocs.io
|
|
50
50
|
Project-URL: Repository, https://github.com/MISP/PyMISP
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
pymisp/__init__.py,sha256=
|
|
2
|
-
pymisp/abstract.py,sha256=
|
|
3
|
-
pymisp/api.py,sha256
|
|
1
|
+
pymisp/__init__.py,sha256=0xHLChUKY2NJ6iTd7XTRjZz1ypm5w83dNDiKqmL2n9g,4023
|
|
2
|
+
pymisp/abstract.py,sha256=QQ7qrgAzbNdTdmYBL3lRq_qn-xC-33Ao6O_De4xIr4Q,15717
|
|
3
|
+
pymisp/api.py,sha256=-9E_cnascTsGzLlngC5lf1TAHcmRnn4jSmmeDYv6VJU,209360
|
|
4
4
|
pymisp/data/describeTypes.json,sha256=hoOy6U_FDVmfk9EdaFgGfEe_GMifmRnIrW8FAJ1ylJ4,45889
|
|
5
5
|
pymisp/data/misp-objects/objects/ADS/definition.json,sha256=EtPXOaNcngjtH0ylJ0gw9UfErgkjzUWFOyzvzC6pGfM,3048
|
|
6
6
|
pymisp/data/misp-objects/objects/abuseipdb/definition.json,sha256=xWtZfdAwWWTR5_J76K8chrxFViJeH9T8CQQ6aRhEk3Q,1070
|
|
@@ -91,9 +91,10 @@ pymisp/data/misp-objects/objects/facial-composite/definition.json,sha256=gj4wK-V
|
|
|
91
91
|
pymisp/data/misp-objects/objects/fail2ban/definition.json,sha256=5bAMbq3txZHWQrIX-NDZMQRg6vrpUBTbimJcCyk4Ixw,1601
|
|
92
92
|
pymisp/data/misp-objects/objects/favicon/definition.json,sha256=KL6P9RGHjaLRj41DPzszif0mmEvUsnbEj5I4nOz497g,996
|
|
93
93
|
pymisp/data/misp-objects/objects/file/definition.json,sha256=wPPyh74-tOLlphUHlKfAtjEUYoYY7jNHn8JwzUgF_MA,12900
|
|
94
|
-
pymisp/data/misp-objects/objects/flowintel-
|
|
95
|
-
pymisp/data/misp-objects/objects/flowintel-
|
|
96
|
-
pymisp/data/misp-objects/objects/flowintel-
|
|
94
|
+
pymisp/data/misp-objects/objects/flowintel-case/definition.json,sha256=LCDG0OOJdpY_GbrGkv20edtyYfW6IUNn8rKc9hKiSbw,2488
|
|
95
|
+
pymisp/data/misp-objects/objects/flowintel-task/definition.json,sha256=9ON-1bXHSOB7A07t8fRNQ0_37aY32EuLvBd5bfSDuNQ,2193
|
|
96
|
+
pymisp/data/misp-objects/objects/flowintel-task-note/definition.json,sha256=wU5HLbzediH2Rol-dx45bClRIkXG-k8xxdUjCeTXSs4,889
|
|
97
|
+
pymisp/data/misp-objects/objects/flowintel-task-resource/definition.json,sha256=iO0K2Gj5-TYJ9C0nkmzJDR0Ui8R4z3cYxPpK5CHzozU,908
|
|
97
98
|
pymisp/data/misp-objects/objects/forensic-case/definition.json,sha256=tOaSEp9SAleSBXVVe8ms8G8jjd2q_IpaIDmfqt8NAsY,1281
|
|
98
99
|
pymisp/data/misp-objects/objects/forensic-evidence/definition.json,sha256=d1Sjj0mts5mZ5YiKTXEYrNJXtC-ZJ0lN7Q7ux0-FN9c,2274
|
|
99
100
|
pymisp/data/misp-objects/objects/forged-document/definition.json,sha256=xBpiPFyJjwuBVM0xrmQSHY4wmm0bTOQIg45avB3NgLw,2816
|
|
@@ -159,7 +160,7 @@ pymisp/data/misp-objects/objects/gitlab-user/definition.json,sha256=xCqY6NAG1Dht
|
|
|
159
160
|
pymisp/data/misp-objects/objects/google-account/definition.json,sha256=fsyjqkMU12X0F4NpI1Mx4i09MQHNb1n-1HwJSIVrO0Q,3467
|
|
160
161
|
pymisp/data/misp-objects/objects/google-safe-browsing/definition.json,sha256=Bxo1eu_EbY8Q1mMv0y0lDv9Rn0xDwmPtesuZ8jtk4Xc,739
|
|
161
162
|
pymisp/data/misp-objects/objects/google-threat-intelligence-report/definition.json,sha256=EZgeF_PbgrxLVGaszm_BJPoWbEB8D7O52anB68vkA8s,1879
|
|
162
|
-
pymisp/data/misp-objects/objects/greynoise-ip/definition.json,sha256=
|
|
163
|
+
pymisp/data/misp-objects/objects/greynoise-ip/definition.json,sha256=KQ99REeJsj3v63dMkxVOsVctR0CTV-_WdeMrkf1PXn0,3144
|
|
163
164
|
pymisp/data/misp-objects/objects/gtp-attack/definition.json,sha256=WjQ4t_Iu1oMx74W20FWZ70UFJUJn9ta5hu7MPxXNZ7o,2611
|
|
164
165
|
pymisp/data/misp-objects/objects/hashlookup/definition.json,sha256=rm3xJoDfJKqUuKhfGd8t17XE0xBJ2QMTWg6H7WJvKzI,2888
|
|
165
166
|
pymisp/data/misp-objects/objects/hhhash/definition.json,sha256=HmPa_bN-FBaZQWDdz2_9fzZHqIREh1dkyio7OsWbzyo,1474
|
|
@@ -209,6 +210,7 @@ pymisp/data/misp-objects/objects/mutex/definition.json,sha256=zqun14zDa2seXkX5BG
|
|
|
209
210
|
pymisp/data/misp-objects/objects/narrative/definition.json,sha256=VXEm_lcQgR7uFtMalrdbI73-ivv6HJHQVx6lPU0FYzA,2200
|
|
210
211
|
pymisp/data/misp-objects/objects/netflow/definition.json,sha256=pQ_meRpiPEchaTBNTBUyUT5zPmL7QNIQgLGKdd_KTqE,4103
|
|
211
212
|
pymisp/data/misp-objects/objects/network-connection/definition.json,sha256=6rGG8ZhW3YxgGAV_l91GFpZXk4QpyJ7iuedH5FU38HE,4248
|
|
213
|
+
pymisp/data/misp-objects/objects/network-data/definition.json,sha256=XxC2GxhybnzSfYOXNI6iufmj7EFFj_4by6cLTogreeA,4322
|
|
212
214
|
pymisp/data/misp-objects/objects/network-profile/definition.json,sha256=urPC6ysgZ5kaiB2L2ilL19iGmR2GNUzjO4pcUngQl5E,6175
|
|
213
215
|
pymisp/data/misp-objects/objects/network-socket/definition.json,sha256=qEE1yvRnrpylHut3jFDJnPWWfsz61ZJO0-Lp40WOSjM,6571
|
|
214
216
|
pymisp/data/misp-objects/objects/network-traffic/definition.json,sha256=jZSGhItwP-1Vxm7fv_IqbijXqnAvPFFKhjxolaDXudE,3144
|
|
@@ -217,7 +219,7 @@ pymisp/data/misp-objects/objects/news-media/definition.json,sha256=Mb4TQz-Cj035H
|
|
|
217
219
|
pymisp/data/misp-objects/objects/open-data-security/definition.json,sha256=fNTNdk-Hjd83DkmhbhGst6PJv09ZJzuXC6RitsEinZg,3052
|
|
218
220
|
pymisp/data/misp-objects/objects/opentide/definition.json,sha256=KAhBYWYMp_PF0lTMjanOBKZirdju2120Y9tNOlpMzy8,1496
|
|
219
221
|
pymisp/data/misp-objects/objects/organization/definition.json,sha256=2Dq4Gs4ynlcaP1rnxfvDCU8cCARO39_Z3azkHYJjhh4,3956
|
|
220
|
-
pymisp/data/misp-objects/objects/original-imported-file/definition.json,sha256=
|
|
222
|
+
pymisp/data/misp-objects/objects/original-imported-file/definition.json,sha256=3GwBNwKhwKGjxM4V_mVxH7Za5t0yRgQ1i01ogIcHMvk,941
|
|
221
223
|
pymisp/data/misp-objects/objects/paloalto-threat-event/definition.json,sha256=F1qMo6LN32i3e7ODjv38twX3BEzrgdLIqXN9PqL-3x4,2597
|
|
222
224
|
pymisp/data/misp-objects/objects/parler-account/definition.json,sha256=YRDWupU7kbSGgTKzwnj7iIqNuAAlBCOPmocWBaYqcQw,3431
|
|
223
225
|
pymisp/data/misp-objects/objects/parler-comment/definition.json,sha256=F6dwrsaryCXAmlu-EIjuqJq1ygDRqnfZcoaBsu2CI-8,3900
|
|
@@ -244,7 +246,7 @@ pymisp/data/misp-objects/objects/probabilistic-data-structure/definition.json,sh
|
|
|
244
246
|
pymisp/data/misp-objects/objects/process/definition.json,sha256=JmRNrY6JTu5zw3C7uc8fcT4tgZBmBnfrg32NEKYreIM,5089
|
|
245
247
|
pymisp/data/misp-objects/objects/publication/definition.json,sha256=j_ZEp8Xk0ZRNN-Gt2cGknPEL6fsN4rdFNpZX30CgoCI,3667
|
|
246
248
|
pymisp/data/misp-objects/objects/python-etvx-event-log/definition.json,sha256=pEa37XSenCrGwPkJ3SqRd6umycXVoLWs5r3oZcKqcmc,4863
|
|
247
|
-
pymisp/data/misp-objects/objects/query/definition.json,sha256=
|
|
249
|
+
pymisp/data/misp-objects/objects/query/definition.json,sha256=aInnfBGGVw0gKf2rD0GOMQFzgnCNsvLvE-Z4C3Bi59c,1476
|
|
248
250
|
pymisp/data/misp-objects/objects/r2graphity/definition.json,sha256=ESpT5SLLUnlCpYjB20wd88kXgUMFwTLE9UsKrXZgFpo,4596
|
|
249
251
|
pymisp/data/misp-objects/objects/ransom-negotiation/definition.json,sha256=jvbnAloyXHIHI0rI4XyZ-fAPKzK5baym11PXGQF-9xg,4588
|
|
250
252
|
pymisp/data/misp-objects/objects/ransomware-group-post/definition.json,sha256=dUZsHN7brIVgu1CgZo7rJRlwWmPoy3TZypiiFytnwBc,3132
|
|
@@ -370,7 +372,7 @@ pymisp/data/misp-objects/schema_relationships.json,sha256=MCusp9GAyuHTo3lLyBrsvl
|
|
|
370
372
|
pymisp/data/schema-lax.json,sha256=2QICdCbtfXRJkTVjwb7xjF3ypys2wOtrUyE1ZDz_qes,8561
|
|
371
373
|
pymisp/data/schema.json,sha256=79N2hObemthb_syUHksDqM4djFttsWZQDg1sTYZYxys,9178
|
|
372
374
|
pymisp/exceptions.py,sha256=IgGGadv5lnLAvO7Q6AjF0vEbjoWwwDWLYwMn-8pkU_k,1965
|
|
373
|
-
pymisp/mispevent.py,sha256=
|
|
375
|
+
pymisp/mispevent.py,sha256=2FM7k1EwTSEiyUcyeCc2joUpTCInXbnXKp5DYpLTMYo,121613
|
|
374
376
|
pymisp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
375
377
|
pymisp/tools/__init__.py,sha256=_KCihYo82e8G5cHV321ak2sgbao2GyFjf4sSTMiN_IM,2233
|
|
376
378
|
pymisp/tools/_psl_faup.py,sha256=JyK8RQm8DPWvNuoF4rQpiE0rBm-Az-sr38Kl46dmWcs,7034
|
|
@@ -380,7 +382,7 @@ pymisp/tools/create_misp_object.py,sha256=PP78t4Gc7jiZtjt3MGC-0NuH976vSadSmhbaSk
|
|
|
380
382
|
pymisp/tools/csvloader.py,sha256=d-Ox4KEehuXi9YxPE3hhf62etaj7D0pUHr5Qy4rPoqo,2588
|
|
381
383
|
pymisp/tools/domainipobject.py,sha256=2w1ckOWPZvp9EW6TOAguT1Kwov72K1jJuJLqgU1whoo,847
|
|
382
384
|
pymisp/tools/elfobject.py,sha256=thylyAVcAdF31II8ykVzG75Fe4Fgokc9qR90g1ybI8s,4966
|
|
383
|
-
pymisp/tools/emailobject.py,sha256=
|
|
385
|
+
pymisp/tools/emailobject.py,sha256=GjOj4MJ0IQsdStkfAk0pshxBe40OGn1_g0jTftym_0o,22500
|
|
384
386
|
pymisp/tools/ext_lookups.py,sha256=acRbOVQftw7XpbjDZDrrdYzDmLDU4HmhoW48Og3UfaY,1022
|
|
385
387
|
pymisp/tools/fail2banobject.py,sha256=VWxK8qWVL0AqO_YZSKmsOcaEnG_5j0jOok7OfEXWfMQ,740
|
|
386
388
|
pymisp/tools/feed.py,sha256=eRG1D4fnG-2hZTFFy7SYUhGVozaAMVSiJXwxHoLP5Gg,700
|
|
@@ -393,7 +395,7 @@ pymisp/tools/machoobject.py,sha256=tSyuWz6z_i-ChZ0uFVwxAh8LE2vW30L82SnoPDPuvWs,4
|
|
|
393
395
|
pymisp/tools/microblogobject.py,sha256=8_53_6M79VhfrJzR_itZ8HnPPclQwX9j0JdI9gMB2kg,6899
|
|
394
396
|
pymisp/tools/neo4j.py,sha256=3Jr2QlOTk8D-P5c1DefYDEP6IIgKNswlZA7F5FocHjU,2088
|
|
395
397
|
pymisp/tools/openioc.py,sha256=TwXcbUkWNzkZavmPoVXdZpjM_GcKB9bqLrw7o3xI24E,14458
|
|
396
|
-
pymisp/tools/peobject.py,sha256=
|
|
398
|
+
pymisp/tools/peobject.py,sha256=FAOiJvvYsrmUdjvGLz5Xk2QYT44XvoCx5nsCh2OAWFw,11791
|
|
397
399
|
pymisp/tools/reportlab_generator.py,sha256=njt0sP-WTWywQ2ieF7Qy5h-dk5FLA0P1i_HF9qhz_4I,76994
|
|
398
400
|
pymisp/tools/sbsignatureobject.py,sha256=aq5To8zcBJe7BHBRZzlqC9xG7N31Naem6yp6bGTOwrU,790
|
|
399
401
|
pymisp/tools/sshauthkeyobject.py,sha256=GEByZkdR7QN3KgE4GcDw3LYS_h-DrUw5cWAy6rMvA_Y,1284
|
|
@@ -401,7 +403,7 @@ pymisp/tools/update_objects.py,sha256=sp_XshzgtRjAU0Mqg8FgRTaokjVKLImyQ02xIcPSrH
|
|
|
401
403
|
pymisp/tools/urlobject.py,sha256=PIucy1356zaljUm1NbeKmEpHpAUK9yiK2lAugcMp2t8,2489
|
|
402
404
|
pymisp/tools/vehicleobject.py,sha256=bs7f4d47IBi2-VumssSM3HlqkH0viyHTLmIHQxe8Iz8,3687
|
|
403
405
|
pymisp/tools/vtreportobject.py,sha256=NsdYzgqm47dywYeW8UnWmEDeIsf07xZreD2iJzFm2wg,3217
|
|
404
|
-
pymisp-2.5.
|
|
405
|
-
pymisp-2.5.
|
|
406
|
-
pymisp-2.5.
|
|
407
|
-
pymisp-2.5.
|
|
406
|
+
pymisp-2.5.17.dist-info/LICENSE,sha256=1oPSVvs96qLjbJVi3mPn0yvWs-6aoIF6BNXi6pVlFmY,1615
|
|
407
|
+
pymisp-2.5.17.dist-info/METADATA,sha256=bPg_gLL2CrOxXMgV-UqPtjrw-gWl1DmmxlGrBIuo_8E,8881
|
|
408
|
+
pymisp-2.5.17.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
409
|
+
pymisp-2.5.17.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|