forked from p15670423/monkey
Merge pull request #1477 from guardicore/report_encryption
Report encryption
This commit is contained in:
commit
ba4aabb67f
|
@ -10,7 +10,7 @@ bcrypt = "==3.2.0"
|
||||||
boto3 = "==1.14.54"
|
boto3 = "==1.14.54"
|
||||||
botocore = "==1.17.54"
|
botocore = "==1.17.54"
|
||||||
cffi = ">=1.8,!=1.11.3"
|
cffi = ">=1.8,!=1.11.3"
|
||||||
dpath = ">=2.0"
|
dpath = ">=2.0.5"
|
||||||
gevent = ">=20.9.0"
|
gevent = ">=20.9.0"
|
||||||
ipaddress = ">=1.0.23"
|
ipaddress = ">=1.0.23"
|
||||||
jsonschema = "==3.2.0"
|
jsonschema = "==3.2.0"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "e7edc14aeb97a7a388e7f1f481feadc0619bac6603be632afaf09a4a886a804d"
|
"sha256": "65cd0e4a81a7cdcdbd72999baf948ec1cdafc7776e3c027ed347cdc02fa0556d"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -18,10 +18,10 @@
|
||||||
"default": {
|
"default": {
|
||||||
"altgraph": {
|
"altgraph": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1f05a47122542f97028caf78775a095fbe6a2699b5089de8477eb583167d69aa",
|
"sha256:743628f2ac6a7c26f5d9223c91ed8ecbba535f506f4b6f558885a8a56a105857",
|
||||||
"sha256:c623e5f3408ca61d4016f23a681b9adb100802ca3e3da5e718915a9e4052cebe"
|
"sha256:ebf2269361b47d97b3b88e696439f6e4cbc607c17c51feb1754f90fb79839158"
|
||||||
],
|
],
|
||||||
"version": "==0.17"
|
"version": "==0.17.2"
|
||||||
},
|
},
|
||||||
"aniso8601": {
|
"aniso8601": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -149,11 +149,11 @@
|
||||||
},
|
},
|
||||||
"charset-normalizer": {
|
"charset-normalizer": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b",
|
"sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6",
|
||||||
"sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"
|
"sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3'",
|
"markers": "python_version >= '3'",
|
||||||
"version": "==2.0.4"
|
"version": "==2.0.6"
|
||||||
},
|
},
|
||||||
"cheroot": {
|
"cheroot": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -204,23 +204,27 @@
|
||||||
},
|
},
|
||||||
"cryptography": {
|
"cryptography": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d",
|
"sha256:0a7dcbcd3f1913f664aca35d47c1331fce738d44ec34b7be8b9d332151b0b01e",
|
||||||
"sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959",
|
"sha256:1eb7bb0df6f6f583dd8e054689def236255161ebbcf62b226454ab9ec663746b",
|
||||||
"sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6",
|
"sha256:21ca464b3a4b8d8e86ba0ee5045e103a1fcfac3b39319727bc0fc58c09c6aff7",
|
||||||
"sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873",
|
"sha256:34dae04a0dce5730d8eb7894eab617d8a70d0c97da76b905de9efb7128ad7085",
|
||||||
"sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2",
|
"sha256:3520667fda779eb788ea00080124875be18f2d8f0848ec00733c0ec3bb8219fc",
|
||||||
"sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713",
|
"sha256:3fa3a7ccf96e826affdf1a0a9432be74dc73423125c8f96a909e3835a5ef194a",
|
||||||
"sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1",
|
"sha256:5b0fbfae7ff7febdb74b574055c7466da334a5371f253732d7e2e7525d570498",
|
||||||
"sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177",
|
"sha256:695104a9223a7239d155d7627ad912953b540929ef97ae0c34c7b8bf30857e89",
|
||||||
"sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250",
|
"sha256:8695456444f277af73a4877db9fc979849cd3ee74c198d04fc0776ebc3db52b9",
|
||||||
"sha256:b01fd6f2737816cb1e08ed4807ae194404790eac7ad030b34f2ce72b332f5586",
|
"sha256:94cc5ed4ceaefcbe5bf38c8fba6a21fc1d365bb8fb826ea1688e3370b2e24a1c",
|
||||||
"sha256:bf40af59ca2465b24e54f671b2de2c59257ddc4f7e5706dbd6930e26823668d3",
|
"sha256:94fff993ee9bc1b2440d3b7243d488c6a3d9724cc2b09cdb297f6a886d040ef7",
|
||||||
"sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca",
|
"sha256:9965c46c674ba8cc572bc09a03f4c649292ee73e1b683adb1ce81e82e9a6a0fb",
|
||||||
"sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d",
|
"sha256:a00cf305f07b26c351d8d4e1af84ad7501eca8a342dedf24a7acb0e7b7406e14",
|
||||||
"sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9"
|
"sha256:a305600e7a6b7b855cd798e00278161b681ad6e9b7eca94c721d5f588ab212af",
|
||||||
|
"sha256:cd65b60cfe004790c795cc35f272e41a3df4631e2fb6b35aa7ac6ef2859d554e",
|
||||||
|
"sha256:d2a6e5ef66503da51d2110edf6c403dc6b494cc0082f85db12f54e9c5d4c3ec5",
|
||||||
|
"sha256:d9ec0e67a14f9d1d48dd87a2531009a9b251c02ea42851c060b25c782516ff06",
|
||||||
|
"sha256:f44d141b8c4ea5eb4dbc9b3ad992d45580c1d22bf5e24363f2fbf50c2d7ae8a7"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==3.4.7"
|
"version": "==3.4.8"
|
||||||
},
|
},
|
||||||
"docutils": {
|
"docutils": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -233,10 +237,11 @@
|
||||||
},
|
},
|
||||||
"dpath": {
|
"dpath": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:bea06b5f4ff620a28dfc9848cf4d6b2bfeed34238edeb8ebe815c433b54eb1fa"
|
"sha256:e7813fd8a9dd0d4c7cd4014533ce955eff712bcb2e8189be79bb893890a9db01",
|
||||||
|
"sha256:ef74321b01479653c812fee69c53922364614d266a8e804d22058c5c02e5674e"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.0.1"
|
"version": "==2.0.5"
|
||||||
},
|
},
|
||||||
"flask": {
|
"flask": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -248,11 +253,11 @@
|
||||||
},
|
},
|
||||||
"flask-jwt-extended": {
|
"flask-jwt-extended": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:22b8ffa7587d50aaf65f3009f1d55ef7287da8260eaf4655a5837e33479216c3",
|
"sha256:6e2b40d548b9dfc6051740c4552c097ac38e514e500c16c682d9a533d17ca418",
|
||||||
"sha256:26969d931bd959dd6b82b2ac07733b499d52c8967229e70bf4ad5859de6cb3b2"
|
"sha256:80d06d3893089824659c26d0cb261999a12f425a66f09c3685f993065bc47b3a"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==4.2.3"
|
"version": "==4.3.0"
|
||||||
},
|
},
|
||||||
"flask-pymongo": {
|
"flask-pymongo": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -373,11 +378,11 @@
|
||||||
},
|
},
|
||||||
"humanfriendly": {
|
"humanfriendly": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:332da98c24cc150efcc91b5508b19115209272bfdf4b0764a56795932f854271",
|
"sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477",
|
||||||
"sha256:f7dba53ac7935fd0b4a2fc9a29e316ddd9ea135fb3052d3d0279d10c18ff9c48"
|
"sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||||
"version": "==9.2"
|
"version": "==10.0"
|
||||||
},
|
},
|
||||||
"idna": {
|
"idna": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -389,11 +394,11 @@
|
||||||
},
|
},
|
||||||
"importlib-metadata": {
|
"importlib-metadata": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:7b30a78db2922d78a6f47fb30683156a14f3c6aa5cc23f77cc8967e9ab2d002f",
|
"sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15",
|
||||||
"sha256:ed5157fef23a4bc4594615a0dd8eba94b2bb36bf2a343fa3d8bb2fa0a62a99d5"
|
"sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.8'",
|
"markers": "python_version < '3.8'",
|
||||||
"version": "==4.6.4"
|
"version": "==4.8.1"
|
||||||
},
|
},
|
||||||
"ipaddress": {
|
"ipaddress": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -537,11 +542,11 @@
|
||||||
},
|
},
|
||||||
"more-itertools": {
|
"more-itertools": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2cf89ec599962f2ddc4d568a05defc40e0a587fbc10d5989713638864c36be4d",
|
"sha256:1debcabeb1df793814859d64a81ad7cb10504c24349368ccf214c664c474f41f",
|
||||||
"sha256:83f0308e05477c68f56ea3a888172c78ed5d5b3c282addb67508e7ba6c8f813a"
|
"sha256:56ddac45541718ba332db05f464bebfb0768110111affd27f66e0051f276fa43"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.5'",
|
"markers": "python_version >= '3.5'",
|
||||||
"version": "==8.8.0"
|
"version": "==8.10.0"
|
||||||
},
|
},
|
||||||
"netaddr": {
|
"netaddr": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -588,17 +593,17 @@
|
||||||
},
|
},
|
||||||
"pefile": {
|
"pefile": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:ed79b2353daa58421459abf4d685953bde0adf9f6e188944f97ba9795f100246"
|
"sha256:344a49e40a94e10849f0fe34dddc80f773a12b40675bf2f7be4b8be578bdd94a"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==2021.5.24"
|
"version": "==2021.9.3"
|
||||||
},
|
},
|
||||||
"policyuniverse": {
|
"policyuniverse": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1d5136329b4c4d33b114f8c781ebb2e306ff9dc6969d106ece2567e312b2dd15",
|
"sha256:184f854fc716754ff07cd9f601923d1ce30a6826617e7c2b252abebe76746b6d",
|
||||||
"sha256:a95adcecd8c5b6aafedbf0094217f9251589a5a350b3db54aa55b6cabc26a7ff"
|
"sha256:44145447d473c37ff2776667b5e1018a00c0a493c16a0a489399521b3786a8be"
|
||||||
],
|
],
|
||||||
"version": "==1.4.0.20210816"
|
"version": "==1.4.0.20210819"
|
||||||
},
|
},
|
||||||
"portend": {
|
"portend": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -807,7 +812,7 @@
|
||||||
"sha256:65540c21bfe14405a3a77e4c085ecfce88724743a4ead47c66b84defcf82c32e",
|
"sha256:65540c21bfe14405a3a77e4c085ecfce88724743a4ead47c66b84defcf82c32e",
|
||||||
"sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"
|
"sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"
|
||||||
],
|
],
|
||||||
"markers": "sys_platform == 'win32'",
|
"markers": "python_version < '3.8' and sys_platform == 'win32'",
|
||||||
"version": "==2.1"
|
"version": "==2.1"
|
||||||
},
|
},
|
||||||
"pyrsistent": {
|
"pyrsistent": {
|
||||||
|
@ -931,55 +936,55 @@
|
||||||
},
|
},
|
||||||
"simplejson": {
|
"simplejson": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0040b8d823801120719390696a2c910e10024eccf63e7851748fba02bb1c2b0f",
|
"sha256:065230b9659ac38c8021fa512802562d122afb0cf8d4b89e257014dcddb5730a",
|
||||||
"sha256:007d6c4babace6abe4092cddc2f557cb123e19bdc24c3b6e8319bafc210dae43",
|
"sha256:07707ba69324eaf58f0c6f59d289acc3e0ed9ec528dae5b0d4219c0d6da27dc5",
|
||||||
"sha256:02db01370c3c60d09184b297b1ac702daece46eb6005e7fae7fab204dad3f8cc",
|
"sha256:10defa88dd10a0a4763f16c1b5504e96ae6dc68953cfe5fc572b4a8fcaf9409b",
|
||||||
"sha256:09e20701a2319f5af3923ca6a83bd183803719823481692123423697c6c63f98",
|
"sha256:140eb58809f24d843736edb8080b220417e22c82ac07a3dfa473f57e78216b5f",
|
||||||
"sha256:0e44d6f3bf93fcc09a9eefb09ccc7035a811157327c13ae8376a5c89c3540078",
|
"sha256:188f2c78a8ac1eb7a70a4b2b7b9ad11f52181044957bf981fb3e399c719e30ee",
|
||||||
"sha256:0f61981554c2bacbe968e70696c65f03c6c1ec2e50d8ecb2af926fcb18a97b7d",
|
"sha256:1c2688365743b0f190392e674af5e313ebe9d621813d15f9332e874b7c1f2d04",
|
||||||
"sha256:1ea0682aced01a5bbe9bb040b68ae3271c10fde3132542550b6e04921ef1c41b",
|
"sha256:24e413bd845bd17d4d72063d64e053898543fb7abc81afeae13e5c43cef9c171",
|
||||||
"sha256:2397a156bdf2f7e78ebaf2fae0c999cc54b271595e2728c0c2ca89c22f54ba7f",
|
"sha256:2b59acd09b02da97728d0bae8ff48876d7efcbbb08e569c55e2d0c2e018324f5",
|
||||||
"sha256:2af85e028714c4b6cb2eb6fc03aa91f39ffd654f2eb2f6f8f860e14aeefa6be1",
|
"sha256:2df15814529a4625ea6f7b354a083609b3944c269b954ece0d0e7455872e1b2a",
|
||||||
"sha256:2da83b371e5d0023f343fba038d677b60006e24aeddb2ddd80513ad808d96e04",
|
"sha256:352c11582aa1e49a2f0f7f7d8fd5ec5311da890d1354287e83c63ab6af857cf5",
|
||||||
"sha256:2f647e5fe9783e7fe49c6c036102da31dc0db396b4ead6ed785033f2beb982df",
|
"sha256:36b08b886027eac67e7a0e822e3a5bf419429efad7612e69501669d6252a21f2",
|
||||||
"sha256:302959ee24a4cf0ba91609d3c0878e524e4d65550d6c457b903c09a767e86bfe",
|
"sha256:376023f51edaf7290332dacfb055bc00ce864cb013c0338d0dea48731f37e42f",
|
||||||
"sha256:31a51d317695a1c214f5aa1405d7970c91ec92f205ac4ef6997f7fd8946cc70f",
|
"sha256:3ba82f8b421886f4a2311c43fb98faaf36c581976192349fef2a89ed0fcdbdef",
|
||||||
"sha256:33bbbaab29b4a15f85b48364fa8bd8a651d4a89d4ceebbc4e0c2ba73f2d07238",
|
"sha256:3d72aa9e73134dacd049a2d6f9bd219f7be9c004d03d52395831611d66cedb71",
|
||||||
"sha256:3a0175f6e0958a602fbff81777a59f7ea5294c3f657f1e467de586bbdfaa4e5d",
|
"sha256:40ece8fa730d1a947bff792bcc7824bd02d3ce6105432798e9a04a360c8c07b0",
|
||||||
"sha256:45b9d8f725ac81f434759ec75d54884745f31f29960570ac02664438a8567663",
|
"sha256:417b7e119d66085dc45bdd563dcb2c575ee10a3b1c492dd3502a029448d4be1c",
|
||||||
"sha256:530ea1e44065a7bb27135ef49ae581882ab217137b66ec0771e3271fcc0a423e",
|
"sha256:42b7c7264229860fe879be961877f7466d9f7173bd6427b3ba98144a031d49fb",
|
||||||
"sha256:5c572ed94842440192da2ed4bb61015f9e2d295714d0c1925fe565a138f58520",
|
"sha256:457d9cfe7ece1571770381edccdad7fc255b12cd7b5b813219441146d4f47595",
|
||||||
"sha256:60a956a896dd6bfa64057d13b3f837fecf0b554fc4c5daf399aa28ddd47912ab",
|
"sha256:4a6943816e10028eeed512ea03be52b54ea83108b408d1049b999f58a760089b",
|
||||||
"sha256:651061490eff527eef5e6d81ee81978a0e3215348d27799f36b39c0012e11606",
|
"sha256:5b94df70bd34a3b946c0eb272022fb0f8a9eb27cad76e7f313fedbee2ebe4317",
|
||||||
"sha256:6b84897e40d3938eb089a5601a79248898c6d21777a25dcc6869b1f8614848bf",
|
"sha256:5f5051a13e7d53430a990604b532c9124253c5f348857e2d5106d45fc8533860",
|
||||||
"sha256:70e74bf39efc0199413b50885fc622b01fd892c5d8161af7dda7381233358135",
|
"sha256:5f7f53b1edd4b23fb112b89208377480c0bcee45d43a03ffacf30f3290e0ed85",
|
||||||
"sha256:77e1beb769f584a52ef6f5ac414bb50adedfe15ab8149d4e9bfaaa98d149d7b5",
|
"sha256:5fe8c6dcb9e6f7066bdc07d3c410a2fca78c0d0b4e0e72510ffd20a60a20eb8e",
|
||||||
"sha256:7b5c5e1004ebc2cf3cf0b9ed2d0b4987e459d2c6d4b4887926b875e72938b7e8",
|
"sha256:71a54815ec0212b0cba23adc1b2a731bdd2df7b9e4432718b2ed20e8aaf7f01a",
|
||||||
"sha256:7bff90dff74c5ebac682b50f590e3535f1256ed9be8ff38f19a59c40d7998320",
|
"sha256:7332f7b06d42153255f7bfeb10266141c08d48cc1a022a35473c95238ff2aebc",
|
||||||
"sha256:80dd583a1c6a02fd5d735195a7e04b21f3d9ac51205065a0d9e859a23e859942",
|
"sha256:78c6f0ed72b440ebe1892d273c1e5f91e55e6861bea611d3b904e673152a7a4c",
|
||||||
"sha256:819a7a369628511e129098d0f99e0a2a6702c0aba395d52ef06332d2463031ab",
|
"sha256:7c9b30a2524ae6983b708f12741a31fbc2fb8d6fecd0b6c8584a62fd59f59e09",
|
||||||
"sha256:8a60cb29a9dcbb0dffbf3dd460d45b19e8de9bdb2bb26221a762a1ddf310597f",
|
"sha256:86fcffc06f1125cb443e2bed812805739d64ceb78597ac3c1b2d439471a09717",
|
||||||
"sha256:92d2f0c92174fc91bc36806e14717e70d8f5e63374d4e7c30d31d0bb510b3b33",
|
"sha256:87572213965fd8a4fb7a97f837221e01d8fddcfb558363c671b8aa93477fb6a2",
|
||||||
"sha256:93a23b0fdeefddb41bd382a59d3cb7b7c4c8b1f14052c821575856e2dc828ccf",
|
"sha256:8e595de17178dd3bbeb2c5b8ea97536341c63b7278639cb8ee2681a84c0ef037",
|
||||||
"sha256:9b2f7cfe67bc98b9123984520df014e7e9f4ed93b65ee0472af3e1230e967cb4",
|
"sha256:917f01db71d5e720b731effa3ff4a2c702a1b6dacad9bcdc580d86a018dfc3ca",
|
||||||
"sha256:9dff1ffa871c2fc31aebf7dfe942dff20858823dc1bbc59e9797c85bf0b1a5e5",
|
"sha256:91cfb43fb91ff6d1e4258be04eee84b51a4ef40a28d899679b9ea2556322fb50",
|
||||||
"sha256:9e5f0580b60fda8d2ea930424ef23180599e119bf3b4c7518b0668494bc96e58",
|
"sha256:aa86cfdeb118795875855589934013e32895715ec2d9e8eb7a59be3e7e07a7e1",
|
||||||
"sha256:a6418959866bd14d49444dd5b9e65914d5cc1438dbdc25cdf968bd927849c36e",
|
"sha256:ade09aa3c284d11f39640aebdcbb748e1996f0c60504f8c4a0c5a9fec821e67a",
|
||||||
"sha256:c22beb7c6c89343490ac9ad0c1360c4092f97efb2393c007d8a767b7160c8939",
|
"sha256:b2a5688606dffbe95e1347a05b77eb90489fe337edde888e23bbb7fd81b0d93b",
|
||||||
"sha256:c452413cb3c9a39f52156bf21c9020ea7540bab323dafd0db7abeac2c12940f3",
|
"sha256:b92fbc2bc549c5045c8233d954f3260ccf99e0f3ec9edfd2372b74b350917752",
|
||||||
"sha256:c4ce22af9c884803498432cbe2da70ec276ead17150fbaad28264e1342330592",
|
"sha256:c2d5334d935af711f6d6dfeec2d34e071cdf73ec0df8e8bd35ac435b26d8da97",
|
||||||
"sha256:cca54a1ea98b579b25d39154d353c4d4dbb4622217a49cceec79151005943133",
|
"sha256:cb0afc3bad49eb89a579103616574a54b523856d20fc539a4f7a513a0a8ba4b2",
|
||||||
"sha256:d479f2d5cd4e3be25296f151cd912c8712ed8084d1be8ad2f999cba09b8d81df",
|
"sha256:ce66f730031b9b3683b2fc6ad4160a18db86557c004c3d490a29bf8d450d7ab9",
|
||||||
"sha256:d7132977504a16c63ced62926fdef5a7d6b92addcf912b44b66a8abf3ddccf81",
|
"sha256:e29b9cea4216ec130df85d8c36efb9985fda1c9039e4706fb30e0fb6a67602ff",
|
||||||
"sha256:da2b9425e12835500eab4e4eb304ea832a4c7baad0546f8eb4a1958515793afb",
|
"sha256:e2cc4b68e59319e3de778325e34fbff487bfdb2225530e89995402989898d681",
|
||||||
"sha256:dbe07d4039f55323483cc881cc95e5e2cf589b0daccb69118a048c328e2d7ecd",
|
"sha256:e90d2e219c3dce1500dda95f5b893c293c4d53c4e330c968afbd4e7a90ff4a5b",
|
||||||
"sha256:dc65e10aca9e24e975106ebd442059823ceb80babeaccd968290b5a59086bb08",
|
"sha256:f13c48cc4363829bdfecc0c181b6ddf28008931de54908a492dc8ccd0066cd60",
|
||||||
"sha256:e2fb03cd1ec443aaecd13d42970243795df39817b93aadfc484ee0013632eb2d",
|
"sha256:f550730d18edec4ff9d4252784b62adfe885d4542946b6d5a54c8a6521b56afd",
|
||||||
"sha256:ed967cac20cd84ad811ba5a66021fbb87dd208b5bea94f8871876e1afbd2742a",
|
"sha256:fa843ee0d34c7193f5a816e79df8142faff851549cab31e84b526f04878ac778",
|
||||||
"sha256:fdaa9e8576c529bdd714df5a1c08c703e6d3bb34660c51a32197a7ca83acb2df"
|
"sha256:fe1c33f78d2060719d52ea9459d97d7ae3a5b707ec02548575c4fbed1d1d345b"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
"version": "==3.17.4"
|
"version": "==3.17.5"
|
||||||
},
|
},
|
||||||
"six": {
|
"six": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1027,12 +1032,12 @@
|
||||||
},
|
},
|
||||||
"typing-extensions": {
|
"typing-extensions": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497",
|
"sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e",
|
||||||
"sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342",
|
"sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7",
|
||||||
"sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84"
|
"sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.8'",
|
"markers": "python_version < '3.8'",
|
||||||
"version": "==3.10.0.0"
|
"version": "==3.10.0.2"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1184,11 +1189,11 @@
|
||||||
},
|
},
|
||||||
"charset-normalizer": {
|
"charset-normalizer": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b",
|
"sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6",
|
||||||
"sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"
|
"sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3'",
|
"markers": "python_version >= '3'",
|
||||||
"version": "==2.0.4"
|
"version": "==2.0.6"
|
||||||
},
|
},
|
||||||
"click": {
|
"click": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1303,11 +1308,11 @@
|
||||||
},
|
},
|
||||||
"importlib-metadata": {
|
"importlib-metadata": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:7b30a78db2922d78a6f47fb30683156a14f3c6aa5cc23f77cc8967e9ab2d002f",
|
"sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15",
|
||||||
"sha256:ed5157fef23a4bc4594615a0dd8eba94b2bb36bf2a343fa3d8bb2fa0a62a99d5"
|
"sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.8'",
|
"markers": "python_version < '3.8'",
|
||||||
"version": "==4.6.4"
|
"version": "==4.8.1"
|
||||||
},
|
},
|
||||||
"iniconfig": {
|
"iniconfig": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1363,19 +1368,19 @@
|
||||||
},
|
},
|
||||||
"platformdirs": {
|
"platformdirs": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4666d822218db6a262bdfdc9c39d21f23b4cfdb08af331a81e92751daf6c866c",
|
"sha256:15b056538719b1c94bdaccb29e5f81879c7f7f0f4a153f46086d155dffcd4f0f",
|
||||||
"sha256:632daad3ab546bd8e6af0537d09805cec458dce201bccfe23012df73332e181e"
|
"sha256:8003ac87717ae2c7ee1ea5a84a1a61e87f3fbd16eb5aadba194ea30a9019f648"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==2.2.0"
|
"version": "==2.3.0"
|
||||||
},
|
},
|
||||||
"pluggy": {
|
"pluggy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
|
"sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159",
|
||||||
"sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"
|
"sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==0.13.1"
|
"version": "==1.0.0"
|
||||||
},
|
},
|
||||||
"py": {
|
"py": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1411,11 +1416,11 @@
|
||||||
},
|
},
|
||||||
"pytest": {
|
"pytest": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b",
|
"sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89",
|
||||||
"sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"
|
"sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==6.2.4"
|
"version": "==6.2.5"
|
||||||
},
|
},
|
||||||
"pytest-cov": {
|
"pytest-cov": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1427,49 +1432,49 @@
|
||||||
},
|
},
|
||||||
"regex": {
|
"regex": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:03840a07a402576b8e3a6261f17eb88abd653ad4e18ec46ef10c9a63f8c99ebd",
|
"sha256:04f6b9749e335bb0d2f68c707f23bb1773c3fb6ecd10edf0f04df12a8920d468",
|
||||||
"sha256:06ba444bbf7ede3890a912bd4904bb65bf0da8f0d8808b90545481362c978642",
|
"sha256:08d74bfaa4c7731b8dac0a992c63673a2782758f7cfad34cf9c1b9184f911354",
|
||||||
"sha256:1f9974826aeeda32a76648fc677e3125ade379869a84aa964b683984a2dea9f1",
|
"sha256:0fc1f8f06977c2d4f5e3d3f0d4a08089be783973fc6b6e278bde01f0544ff308",
|
||||||
"sha256:330836ad89ff0be756b58758878409f591d4737b6a8cef26a162e2a4961c3321",
|
"sha256:121f4b3185feaade3f85f70294aef3f777199e9b5c0c0245c774ae884b110a2d",
|
||||||
"sha256:38600fd58c2996829480de7d034fb2d3a0307110e44dae80b6b4f9b3d2eea529",
|
"sha256:1413b5022ed6ac0d504ba425ef02549a57d0f4276de58e3ab7e82437892704fc",
|
||||||
"sha256:3a195e26df1fbb40ebee75865f9b64ba692a5824ecb91c078cc665b01f7a9a36",
|
"sha256:1743345e30917e8c574f273f51679c294effba6ad372db1967852f12c76759d8",
|
||||||
"sha256:41acdd6d64cd56f857e271009966c2ffcbd07ec9149ca91f71088574eaa4278a",
|
"sha256:28fc475f560d8f67cc8767b94db4c9440210f6958495aeae70fac8faec631797",
|
||||||
"sha256:45f97ade892ace20252e5ccecdd7515c7df5feeb42c3d2a8b8c55920c3551c30",
|
"sha256:31a99a4796bf5aefc8351e98507b09e1b09115574f7c9dbb9cf2111f7220d2e2",
|
||||||
"sha256:4b0c211c55d4aac4309c3209833c803fada3fc21cdf7b74abedda42a0c9dc3ce",
|
"sha256:328a1fad67445550b982caa2a2a850da5989fd6595e858f02d04636e7f8b0b13",
|
||||||
"sha256:5d5209c3ba25864b1a57461526ebde31483db295fc6195fdfc4f8355e10f7376",
|
"sha256:473858730ef6d6ff7f7d5f19452184cd0caa062a20047f6d6f3e135a4648865d",
|
||||||
"sha256:615fb5a524cffc91ab4490b69e10ae76c1ccbfa3383ea2fad72e54a85c7d47dd",
|
"sha256:4cde065ab33bcaab774d84096fae266d9301d1a2f5519d7bd58fc55274afbf7a",
|
||||||
"sha256:61e734c2bcb3742c3f454dfa930ea60ea08f56fd1a0eb52d8cb189a2f6be9586",
|
"sha256:5f6a808044faae658f546dd5f525e921de9fa409de7a5570865467f03a626fc0",
|
||||||
"sha256:640ccca4d0a6fcc6590f005ecd7b16c3d8f5d52174e4854f96b16f34c39d6cb7",
|
"sha256:610b690b406653c84b7cb6091facb3033500ee81089867ee7d59e675f9ca2b73",
|
||||||
"sha256:6dbd51c3db300ce9d3171f4106da18fe49e7045232630fe3d4c6e37cb2b39ab9",
|
"sha256:66256b6391c057305e5ae9209941ef63c33a476b73772ca967d4a2df70520ec1",
|
||||||
"sha256:71a904da8c9c02aee581f4452a5a988c3003207cb8033db426f29e5b2c0b7aea",
|
"sha256:6eebf512aa90751d5ef6a7c2ac9d60113f32e86e5687326a50d7686e309f66ed",
|
||||||
"sha256:8021dee64899f993f4b5cca323aae65aabc01a546ed44356a0965e29d7893c94",
|
"sha256:79aef6b5cd41feff359acaf98e040844613ff5298d0d19c455b3d9ae0bc8c35a",
|
||||||
"sha256:8b8d551f1bd60b3e1c59ff55b9e8d74607a5308f66e2916948cafd13480b44a3",
|
"sha256:808ee5834e06f57978da3e003ad9d6292de69d2bf6263662a1a8ae30788e080b",
|
||||||
"sha256:93f9f720081d97acee38a411e861d4ce84cbc8ea5319bc1f8e38c972c47af49f",
|
"sha256:8e44769068d33e0ea6ccdf4b84d80c5afffe5207aa4d1881a629cf0ef3ec398f",
|
||||||
"sha256:96f0c79a70642dfdf7e6a018ebcbea7ea5205e27d8e019cad442d2acfc9af267",
|
"sha256:999ad08220467b6ad4bd3dd34e65329dd5d0df9b31e47106105e407954965256",
|
||||||
"sha256:9966337353e436e6ba652814b0a957a517feb492a98b8f9d3b6ba76d22301dcc",
|
"sha256:9b006628fe43aa69259ec04ca258d88ed19b64791693df59c422b607b6ece8bb",
|
||||||
"sha256:a34ba9e39f8269fd66ab4f7a802794ffea6d6ac500568ec05b327a862c21ce23",
|
"sha256:9d05ad5367c90814099000442b2125535e9d77581855b9bee8780f1b41f2b1a2",
|
||||||
"sha256:a49f85f0a099a5755d0a2cc6fc337e3cb945ad6390ec892332c691ab0a045882",
|
"sha256:a577a21de2ef8059b58f79ff76a4da81c45a75fe0bfb09bc8b7bb4293fa18983",
|
||||||
"sha256:a795829dc522227265d72b25d6ee6f6d41eb2105c15912c230097c8f5bfdbcdc",
|
"sha256:a617593aeacc7a691cc4af4a4410031654f2909053bd8c8e7db837f179a630eb",
|
||||||
"sha256:a89ca4105f8099de349d139d1090bad387fe2b208b717b288699ca26f179acbe",
|
"sha256:abb48494d88e8a82601af905143e0de838c776c1241d92021e9256d5515b3645",
|
||||||
"sha256:ac95101736239260189f426b1e361dc1b704513963357dc474beb0f39f5b7759",
|
"sha256:ac88856a8cbccfc14f1b2d0b829af354cc1743cb375e7f04251ae73b2af6adf8",
|
||||||
"sha256:ae87ab669431f611c56e581679db33b9a467f87d7bf197ac384e71e4956b4456",
|
"sha256:b4c220a1fe0d2c622493b0a1fd48f8f991998fb447d3cd368033a4b86cf1127a",
|
||||||
"sha256:b091dcfee169ad8de21b61eb2c3a75f9f0f859f851f64fdaf9320759a3244239",
|
"sha256:b844fb09bd9936ed158ff9df0ab601e2045b316b17aa8b931857365ea8586906",
|
||||||
"sha256:b511c6009d50d5c0dd0bab85ed25bc8ad6b6f5611de3a63a59786207e82824bb",
|
"sha256:bdc178caebd0f338d57ae445ef8e9b737ddf8fbc3ea187603f65aec5b041248f",
|
||||||
"sha256:b79dc2b2e313565416c1e62807c7c25c67a6ff0a0f8d83a318df464555b65948",
|
"sha256:c206587c83e795d417ed3adc8453a791f6d36b67c81416676cad053b4104152c",
|
||||||
"sha256:bca14dfcfd9aae06d7d8d7e105539bd77d39d06caaae57a1ce945670bae744e0",
|
"sha256:c61dcc1cf9fd165127a2853e2c31eb4fb961a4f26b394ac9fe5669c7a6592892",
|
||||||
"sha256:c835c30f3af5c63a80917b72115e1defb83de99c73bc727bddd979a3b449e183",
|
"sha256:c7cb4c512d2d3b0870e00fbbac2f291d4b4bf2634d59a31176a87afe2777c6f0",
|
||||||
"sha256:ccd721f1d4fc42b541b633d6e339018a08dd0290dc67269df79552843a06ca92",
|
"sha256:d4a332404baa6665b54e5d283b4262f41f2103c255897084ec8f5487ce7b9e8e",
|
||||||
"sha256:d6c2b1d78ceceb6741d703508cd0e9197b34f6bf6864dab30f940f8886e04ade",
|
"sha256:d5111d4c843d80202e62b4fdbb4920db1dcee4f9366d6b03294f45ed7b18b42e",
|
||||||
"sha256:d6ec4ae13760ceda023b2e5ef1f9bc0b21e4b0830458db143794a117fdbdc044",
|
"sha256:e1e8406b895aba6caa63d9fd1b6b1700d7e4825f78ccb1e5260551d168db38ed",
|
||||||
"sha256:d8b623fc429a38a881ab2d9a56ef30e8ea20c72a891c193f5ebbddc016e083ee",
|
"sha256:e8690ed94481f219a7a967c118abaf71ccc440f69acd583cab721b90eeedb77c",
|
||||||
"sha256:ea9753d64cba6f226947c318a923dadaf1e21cd8db02f71652405263daa1f033",
|
"sha256:ed283ab3a01d8b53de3a05bfdf4473ae24e43caee7dcb5584e86f3f3e5ab4374",
|
||||||
"sha256:ebbceefbffae118ab954d3cd6bf718f5790db66152f95202ebc231d58ad4e2c2",
|
"sha256:ed4b50355b066796dacdd1cf538f2ce57275d001838f9b132fab80b75e8c84dd",
|
||||||
"sha256:ecb6e7c45f9cd199c10ec35262b53b2247fb9a408803ed00ee5bb2b54aa626f5",
|
"sha256:ee329d0387b5b41a5dddbb6243a21cb7896587a651bebb957e2d2bb8b63c0791",
|
||||||
"sha256:ef9326c64349e2d718373415814e754183057ebc092261387a2c2f732d9172b2",
|
"sha256:f3bf1bc02bc421047bfec3343729c4bbbea42605bcfd6d6bfe2c07ade8b12d2a",
|
||||||
"sha256:f93a9d8804f4cec9da6c26c8cfae2c777028b4fdd9f49de0302e26e00bb86504",
|
"sha256:f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1",
|
||||||
"sha256:faf08b0341828f6a29b8f7dd94d5cf8cc7c39bfc3e67b78514c54b494b66915a"
|
"sha256:f60667673ff9c249709160529ab39667d1ae9fd38634e006bec95611f632e759"
|
||||||
],
|
],
|
||||||
"version": "==2021.8.21"
|
"version": "==2021.8.28"
|
||||||
},
|
},
|
||||||
"requests": {
|
"requests": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1546,12 +1551,12 @@
|
||||||
},
|
},
|
||||||
"typing-extensions": {
|
"typing-extensions": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497",
|
"sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e",
|
||||||
"sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342",
|
"sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7",
|
||||||
"sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84"
|
"sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.8'",
|
"markers": "python_version < '3.8'",
|
||||||
"version": "==3.10.0.0"
|
"version": "==3.10.0.2"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -1563,11 +1568,11 @@
|
||||||
},
|
},
|
||||||
"virtualenv": {
|
"virtualenv": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:9ef4e8ee4710826e98ff3075c9a4739e2cb1040de6a2a8d35db0055840dc96a0",
|
"sha256:4da4ac43888e97de9cf4fdd870f48ed864bbfd133d2c46cbdec941fed4a25aef",
|
||||||
"sha256:e4670891b3a03eb071748c569a87cceaefbf643c5bac46d996c5a45c34aa0f06"
|
"sha256:a4b987ec31c3c9996cf1bc865332f967fe4a0512c41b39652d6224f696e69da5"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==20.7.2"
|
"version": "==20.8.0"
|
||||||
},
|
},
|
||||||
"vulture": {
|
"vulture": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
|
|
@ -7,3 +7,4 @@ from .creds import Creds # noqa: F401, E402
|
||||||
from .monkey import Monkey # noqa: F401, E402
|
from .monkey import Monkey # noqa: F401, E402
|
||||||
from .monkey_ttl import MonkeyTtl # noqa: F401, E402
|
from .monkey_ttl import MonkeyTtl # noqa: F401, E402
|
||||||
from .pba_results import PbaResults # noqa: F401, E402
|
from .pba_results import PbaResults # noqa: F401, E402
|
||||||
|
from .report import Report # noqa: F401, E402
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from bson import json_util
|
||||||
|
from mongoengine import DictField, Document
|
||||||
|
|
||||||
|
from monkey_island.cc.models.utils import report_encryptor
|
||||||
|
|
||||||
|
|
||||||
|
class Report(Document):
|
||||||
|
|
||||||
|
overview = DictField(required=True)
|
||||||
|
glance = DictField(required=True)
|
||||||
|
recommendations = DictField(required=True)
|
||||||
|
meta_info = DictField(required=True)
|
||||||
|
|
||||||
|
meta = {"strict": False}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def save_report(report_dict: dict):
|
||||||
|
report_dict = _encode_dot_char_before_mongo_insert(report_dict)
|
||||||
|
report_dict = report_encryptor.encrypt(report_dict)
|
||||||
|
Report.objects.delete()
|
||||||
|
Report(
|
||||||
|
overview=report_dict["overview"],
|
||||||
|
glance=report_dict["glance"],
|
||||||
|
recommendations=report_dict["recommendations"],
|
||||||
|
meta_info=report_dict["meta_info"],
|
||||||
|
).save()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_report() -> dict:
|
||||||
|
report_dict = Report.objects.first().to_mongo()
|
||||||
|
return _decode_dot_char_before_mongo_insert(report_encryptor.decrypt(report_dict))
|
||||||
|
|
||||||
|
|
||||||
|
def _encode_dot_char_before_mongo_insert(report_dict):
|
||||||
|
"""
|
||||||
|
mongodb doesn't allow for '.' and '$' in a key's name, this function replaces the '.'
|
||||||
|
char with the unicode
|
||||||
|
,,, combo instead.
|
||||||
|
:return: dict with formatted keys with no dots.
|
||||||
|
"""
|
||||||
|
report_as_json = json_util.dumps(report_dict).replace(".", ",,,")
|
||||||
|
return json_util.loads(report_as_json)
|
||||||
|
|
||||||
|
|
||||||
|
def _decode_dot_char_before_mongo_insert(report_dict):
|
||||||
|
"""
|
||||||
|
this function replaces the ',,,' combo with the '.' char instead.
|
||||||
|
:return: report dict with formatted keys (',,,' -> '.')
|
||||||
|
"""
|
||||||
|
report_as_json = json_util.dumps(report_dict).replace(",,,", ".")
|
||||||
|
return json_util.loads(report_as_json)
|
|
@ -0,0 +1,24 @@
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
class IFieldEncryptor(ABC):
|
||||||
|
@staticmethod
|
||||||
|
@abstractmethod
|
||||||
|
def encrypt(value: Any) -> Any:
|
||||||
|
"""Encrypts data and returns the ciphertext.
|
||||||
|
|
||||||
|
:param value: Data that will be encrypted
|
||||||
|
:return: Ciphertext generated by encrypting value
|
||||||
|
:rtype: Any
|
||||||
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@abstractmethod
|
||||||
|
def decrypt(value: Any):
|
||||||
|
"""Decrypts data and returns the plaintext.
|
||||||
|
|
||||||
|
:param value: Ciphertext that will be decrypted
|
||||||
|
:return: Plaintext generated by decrypting value
|
||||||
|
:rtype: Any
|
||||||
|
"""
|
|
@ -0,0 +1,14 @@
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from monkey_island.cc.models.utils.field_encryptors.i_field_encryptor import IFieldEncryptor
|
||||||
|
from monkey_island.cc.server_utils.encryptor import get_encryptor
|
||||||
|
|
||||||
|
|
||||||
|
class StringListEncryptor(IFieldEncryptor):
|
||||||
|
@staticmethod
|
||||||
|
def encrypt(value: List[str]):
|
||||||
|
return [get_encryptor().enc(string) for string in value]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def decrypt(value: List[str]):
|
||||||
|
return [get_encryptor().dec(string) for string in value]
|
|
@ -0,0 +1,50 @@
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Callable, Type
|
||||||
|
|
||||||
|
import dpath.util
|
||||||
|
|
||||||
|
from monkey_island.cc.models.utils.field_encryptors.i_field_encryptor import IFieldEncryptor
|
||||||
|
from monkey_island.cc.models.utils.field_encryptors.string_list_encryptor import StringListEncryptor
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class SensitiveField:
|
||||||
|
path: str
|
||||||
|
path_separator = "."
|
||||||
|
field_type: Type[IFieldEncryptor]
|
||||||
|
|
||||||
|
|
||||||
|
sensitive_fields = [
|
||||||
|
SensitiveField(path="overview.config_passwords", field_type=StringListEncryptor)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def encrypt(report: dict) -> dict:
|
||||||
|
for sensitive_field in sensitive_fields:
|
||||||
|
_apply_operation_to_report_field(
|
||||||
|
report, sensitive_field, sensitive_field.field_type.encrypt
|
||||||
|
)
|
||||||
|
|
||||||
|
return report
|
||||||
|
|
||||||
|
|
||||||
|
def decrypt(report: dict) -> dict:
|
||||||
|
for sensitive_field in sensitive_fields:
|
||||||
|
_apply_operation_to_report_field(
|
||||||
|
report, sensitive_field, sensitive_field.field_type.decrypt
|
||||||
|
)
|
||||||
|
return report
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_operation_to_report_field(
|
||||||
|
report: dict, sensitive_field: SensitiveField, operation: Callable
|
||||||
|
):
|
||||||
|
field_value = dpath.util.get(report, sensitive_field.path, sensitive_field.path_separator, None)
|
||||||
|
if field_value is None:
|
||||||
|
raise Exception(
|
||||||
|
f"Can't encrypt object because the path {sensitive_field.path} doesn't exist."
|
||||||
|
)
|
||||||
|
|
||||||
|
modified_value = operation(field_value)
|
||||||
|
|
||||||
|
dpath.util.set(report, sensitive_field.path, modified_value, sensitive_field.path_separator)
|
|
@ -4,8 +4,6 @@ import itertools
|
||||||
import logging
|
import logging
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from bson import json_util
|
|
||||||
|
|
||||||
from common.config_value_paths import (
|
from common.config_value_paths import (
|
||||||
EXPLOITER_CLASSES_PATH,
|
EXPLOITER_CLASSES_PATH,
|
||||||
LOCAL_NETWORK_SCAN_PATH,
|
LOCAL_NETWORK_SCAN_PATH,
|
||||||
|
@ -16,7 +14,7 @@ from common.config_value_paths import (
|
||||||
from common.network.network_range import NetworkRange
|
from common.network.network_range import NetworkRange
|
||||||
from common.network.segmentation_utils import get_ip_in_src_and_not_in_dst
|
from common.network.segmentation_utils import get_ip_in_src_and_not_in_dst
|
||||||
from monkey_island.cc.database import mongo
|
from monkey_island.cc.database import mongo
|
||||||
from monkey_island.cc.models import Monkey
|
from monkey_island.cc.models import Monkey, Report
|
||||||
from monkey_island.cc.services.config import ConfigService
|
from monkey_island.cc.services.config import ConfigService
|
||||||
from monkey_island.cc.services.configuration.utils import (
|
from monkey_island.cc.services.configuration.utils import (
|
||||||
get_config_network_segments_as_subnet_groups,
|
get_config_network_segments_as_subnet_groups,
|
||||||
|
@ -633,12 +631,10 @@ class ReportService:
|
||||||
"strong_users": PTHReportService.get_strong_users_on_crit_details(),
|
"strong_users": PTHReportService.get_strong_users_on_crit_details(),
|
||||||
},
|
},
|
||||||
"recommendations": {"issues": issues, "domain_issues": domain_issues},
|
"recommendations": {"issues": issues, "domain_issues": domain_issues},
|
||||||
"meta": {"latest_monkey_modifytime": monkey_latest_modify_time},
|
"meta_info": {"latest_monkey_modifytime": monkey_latest_modify_time},
|
||||||
}
|
}
|
||||||
ReportExporterManager().export(report)
|
ReportExporterManager().export(report)
|
||||||
mongo.db.report.drop()
|
Report.save_report(report)
|
||||||
mongo.db.report.insert_one(ReportService.encode_dot_char_before_mongo_insert(report))
|
|
||||||
|
|
||||||
return report
|
return report
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -667,17 +663,6 @@ class ReportService:
|
||||||
logger.info("Issues generated for reporting")
|
logger.info("Issues generated for reporting")
|
||||||
return issues_dict
|
return issues_dict
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def encode_dot_char_before_mongo_insert(report_dict):
|
|
||||||
"""
|
|
||||||
mongodb doesn't allow for '.' and '$' in a key's name, this function replaces the '.'
|
|
||||||
char with the unicode
|
|
||||||
,,, combo instead.
|
|
||||||
:return: dict with formatted keys with no dots.
|
|
||||||
"""
|
|
||||||
report_as_json = json_util.dumps(report_dict).replace(".", ",,,")
|
|
||||||
return json_util.loads(report_as_json)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def is_latest_report_exists():
|
def is_latest_report_exists():
|
||||||
"""
|
"""
|
||||||
|
@ -685,10 +670,10 @@ class ReportService:
|
||||||
:return: True if report is the latest one, False if there isn't a report or its not the
|
:return: True if report is the latest one, False if there isn't a report or its not the
|
||||||
latest.
|
latest.
|
||||||
"""
|
"""
|
||||||
latest_report_doc = mongo.db.report.find_one({}, {"meta.latest_monkey_modifytime": 1})
|
latest_report_doc = mongo.db.report.find_one({}, {"meta_info.latest_monkey_modifytime": 1})
|
||||||
|
|
||||||
if latest_report_doc:
|
if latest_report_doc:
|
||||||
report_latest_modifytime = latest_report_doc["meta"]["latest_monkey_modifytime"]
|
report_latest_modifytime = latest_report_doc["meta_info"]["latest_monkey_modifytime"]
|
||||||
latest_monkey_modifytime = Monkey.get_latest_modifytime()
|
latest_monkey_modifytime = Monkey.get_latest_modifytime()
|
||||||
return report_latest_modifytime == latest_monkey_modifytime
|
return report_latest_modifytime == latest_monkey_modifytime
|
||||||
|
|
||||||
|
@ -706,17 +691,9 @@ class ReportService:
|
||||||
"Report cache not cleared. DeleteResult: " + delete_result.raw_result
|
"Report cache not cleared. DeleteResult: " + delete_result.raw_result
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def decode_dot_char_before_mongo_insert(report_dict):
|
|
||||||
"""
|
|
||||||
this function replaces the ',,,' combo with the '.' char instead.
|
|
||||||
:return: report dict with formatted keys (',,,' -> '.')
|
|
||||||
"""
|
|
||||||
report_as_json = json_util.dumps(report_dict).replace(",,,", ".")
|
|
||||||
return json_util.loads(report_as_json)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_report():
|
def get_report():
|
||||||
if ReportService.is_latest_report_exists():
|
if not ReportService.is_latest_report_exists():
|
||||||
return ReportService.decode_dot_char_before_mongo_insert(mongo.db.report.find_one())
|
return safe_generate_regular_report()
|
||||||
return safe_generate_regular_report()
|
|
||||||
|
return Report.get_report()
|
||||||
|
|
|
@ -5,7 +5,7 @@ import os
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from tests.unit_tests.monkey_island.cc.mongomock_fixtures import * # noqa: F401,F403,E402
|
from tests.unit_tests.monkey_island.cc.mongomock_fixtures import * # noqa: F401,F403,E402
|
||||||
from tests.unit_tests.monkey_island.cc.services.utils.test_config_encryption import (
|
from tests.unit_tests.monkey_island.cc.services.utils.test_encryption import (
|
||||||
MONKEY_CONFIGS_DIR_PATH,
|
MONKEY_CONFIGS_DIR_PATH,
|
||||||
STANDARD_PLAINTEXT_MONKEY_CONFIG_FILENAME,
|
STANDARD_PLAINTEXT_MONKEY_CONFIG_FILENAME,
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
import copy
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from monkey_island.cc.models import Report
|
||||||
|
from monkey_island.cc.models.utils.field_encryptors.i_field_encryptor import IFieldEncryptor
|
||||||
|
from monkey_island.cc.models.utils.report_encryptor import SensitiveField
|
||||||
|
|
||||||
|
MOCK_SENSITIVE_FIELD_CONTENTS = ["the_string", "the_string2"]
|
||||||
|
MOCK_REPORT_DICT = {
|
||||||
|
"overview": {
|
||||||
|
"foo": {"the_key": MOCK_SENSITIVE_FIELD_CONTENTS, "other_key": "other_value"},
|
||||||
|
"bar": {"the_key": []},
|
||||||
|
},
|
||||||
|
"glance": {"foo": "bar"},
|
||||||
|
"recommendations": {"foo": "bar"},
|
||||||
|
"meta_info": {"foo": "bar"},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class MockFieldEncryptor(IFieldEncryptor):
|
||||||
|
plaintext = []
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def encrypt(value: List[str]) -> List[str]:
|
||||||
|
return [MockFieldEncryptor._encrypt(v) for v in value]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _encrypt(value: str) -> str:
|
||||||
|
MockFieldEncryptor.plaintext.append(value)
|
||||||
|
return f"ENCRYPTED_{str(len(MockFieldEncryptor.plaintext) - 1)}"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def decrypt(value: List[str]) -> List[str]:
|
||||||
|
return MockFieldEncryptor.plaintext
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def patch_sensitive_fields(monkeypatch):
|
||||||
|
mock_sensitive_fields = [
|
||||||
|
SensitiveField("overview.foo.the_key", MockFieldEncryptor),
|
||||||
|
SensitiveField("overview.bar.the_key", MockFieldEncryptor),
|
||||||
|
]
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"monkey_island.cc.models.utils.report_encryptor.sensitive_fields", mock_sensitive_fields
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("uses_database")
|
||||||
|
def test_report_encryption():
|
||||||
|
Report.save_report(MOCK_REPORT_DICT)
|
||||||
|
|
||||||
|
assert Report.objects.first()["overview"]["foo"]["the_key"] == ["ENCRYPTED_0", "ENCRYPTED_1"]
|
||||||
|
assert Report.objects.first()["overview"]["bar"]["the_key"] == []
|
||||||
|
assert Report.get_report()["overview"]["foo"]["the_key"] == MOCK_SENSITIVE_FIELD_CONTENTS
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("uses_database")
|
||||||
|
def test_report_dot_encoding():
|
||||||
|
mrd = copy.deepcopy(MOCK_REPORT_DICT)
|
||||||
|
mrd["meta_info"] = {"foo.bar": "baz"}
|
||||||
|
Report.save_report(mrd)
|
||||||
|
|
||||||
|
assert "foo.bar" not in Report.objects.first()["meta_info"]
|
||||||
|
assert "foo,,,bar" in Report.objects.first()["meta_info"]
|
||||||
|
|
||||||
|
report = Report.get_report()
|
||||||
|
assert "foo.bar" in report["meta_info"]
|
|
@ -0,0 +1,24 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from monkey_island.cc.models.utils.field_encryptors.string_list_encryptor import StringListEncryptor
|
||||||
|
from monkey_island.cc.server_utils.encryptor import initialize_encryptor
|
||||||
|
|
||||||
|
MOCK_STRING_LIST = ["test_1", "test_2"]
|
||||||
|
EMPTY_LIST = []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def uses_encryptor(data_for_tests_dir):
|
||||||
|
initialize_encryptor(data_for_tests_dir)
|
||||||
|
|
||||||
|
|
||||||
|
def test_string_list_encryptor(uses_encryptor):
|
||||||
|
encrypted_list = StringListEncryptor.encrypt(MOCK_STRING_LIST)
|
||||||
|
assert not encrypted_list == MOCK_STRING_LIST
|
||||||
|
decrypted_list = StringListEncryptor.decrypt(encrypted_list)
|
||||||
|
assert decrypted_list == MOCK_STRING_LIST
|
||||||
|
|
||||||
|
|
||||||
|
def test_string_list_encryptor__empty_list(uses_encryptor):
|
||||||
|
encrypted_list = StringListEncryptor.encrypt(EMPTY_LIST)
|
||||||
|
StringListEncryptor.decrypt(encrypted_list)
|
|
@ -2,7 +2,7 @@ import pytest
|
||||||
from tests.unit_tests.monkey_island.cc.services.utils.ciphertexts_for_encryption_test import (
|
from tests.unit_tests.monkey_island.cc.services.utils.ciphertexts_for_encryption_test import (
|
||||||
MALFORMED_CIPHER_TEXT_CORRUPTED,
|
MALFORMED_CIPHER_TEXT_CORRUPTED,
|
||||||
)
|
)
|
||||||
from tests.unit_tests.monkey_island.cc.services.utils.test_config_encryption import PASSWORD
|
from tests.unit_tests.monkey_island.cc.services.utils.test_encryption import PASSWORD
|
||||||
|
|
||||||
from common.utils.exceptions import InvalidConfigurationError
|
from common.utils.exceptions import InvalidConfigurationError
|
||||||
from monkey_island.cc.resources.configuration_import import ConfigurationImport
|
from monkey_island.cc.resources.configuration_import import ConfigurationImport
|
||||||
|
|
|
@ -3,7 +3,7 @@ Everything in this file is what Vulture found as dead code but either isn't real
|
||||||
dead or is kept deliberately. Referencing these in a file like this makes sure that
|
dead or is kept deliberately. Referencing these in a file like this makes sure that
|
||||||
Vulture doesn't mark these as dead again.
|
Vulture doesn't mark these as dead again.
|
||||||
"""
|
"""
|
||||||
|
from monkey_island.cc.models import Report
|
||||||
|
|
||||||
fake_monkey_dir_path # unused variable (monkey/tests/infection_monkey/post_breach/actions/test_users_custom_pba.py:37)
|
fake_monkey_dir_path # unused variable (monkey/tests/infection_monkey/post_breach/actions/test_users_custom_pba.py:37)
|
||||||
set_os_linux # unused variable (monkey/tests/infection_monkey/post_breach/actions/test_users_custom_pba.py:37)
|
set_os_linux # unused variable (monkey/tests/infection_monkey/post_breach/actions/test_users_custom_pba.py:37)
|
||||||
|
@ -176,6 +176,12 @@ import_status # monkey_island\cc\resources\configuration_import.py:19
|
||||||
config_schema # monkey_island\cc\resources\configuration_import.py:25
|
config_schema # monkey_island\cc\resources\configuration_import.py:25
|
||||||
exception_stream # unused attribute (monkey_island/cc/server_setup.py:104)
|
exception_stream # unused attribute (monkey_island/cc/server_setup.py:104)
|
||||||
ADVANCED # unused attribute (monkey/monkey_island/cc/services/mode/mode_enum.py:6:)
|
ADVANCED # unused attribute (monkey/monkey_island/cc/services/mode/mode_enum.py:6:)
|
||||||
|
Report.overview
|
||||||
|
Report.recommendations
|
||||||
|
Report.glance
|
||||||
|
Report.meta_info
|
||||||
|
Report.meta
|
||||||
|
Report.save_report
|
||||||
|
|
||||||
# these are not needed for it to work, but may be useful extra information to understand what's going on
|
# these are not needed for it to work, but may be useful extra information to understand what's going on
|
||||||
WINDOWS_PBA_TYPE # unused variable (monkey/monkey_island/cc/resources/pba_file_upload.py:23)
|
WINDOWS_PBA_TYPE # unused variable (monkey/monkey_island/cc/resources/pba_file_upload.py:23)
|
||||||
|
|
Loading…
Reference in New Issue