Merge remote-tracking branch 'upstream/main' into feature/misp-galaxy-2

pull/682/head
Tom King 2021-02-08 11:50:38 +00:00
commit a94b81ae72
11 changed files with 484 additions and 94 deletions

View File

@ -33,7 +33,7 @@ jobs:
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip poetry
poetry install -E fileobjects -E openioc -E virustotal -E docs -E pdfexport -E url -E email
poetry install -E fileobjects -E openioc -E virustotal -E docs -E pdfexport -E url -E email -E brotli
- name: Test with nosetests
run: |

View File

@ -2,6 +2,166 @@ Changelog
=========
v2.4.138 (2021-02-08)
---------------------
Changes
~~~~~~~
- Bump version. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
v2.4.137.4 (2021-02-04)
-----------------------
Changes
~~~~~~~
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Bump objects. [Raphaël Vinot]
- Add kw_params to tags. [Raphaël Vinot]
- Bump objects. [Raphaël Vinot]
- Bump template ID in test case. [Raphaël Vinot]
v2.4.137.3 (2021-02-02)
-----------------------
Changes
~~~~~~~
- Bump version. [Raphaël Vinot]
- Bump changelog. [Raphaël Vinot]
- Bump objects. [Raphaël Vinot]
- Fix and improve optional dependencies. [Raphaël Vinot]
- Make brotli optional. [Raphaël Vinot]
v2.4.137.2 (2021-02-01)
-----------------------
New
~~~
- Add in ability to create/update/delete MISP Event Reports. [Tom King]
- Hard delete flag for objects. [Raphaël Vinot]
- Fail if a duplicate object is added to an event. [Raphaël Vinot]
- Support brotli compression. [Jakub Onderka]
- Hard delete flag for objects. [Raphaël Vinot]
- Fail if a duplicate object is added to an event. [Raphaël Vinot]
- Add in ability to create/update/delete MISP Event Reports. [Tom King]
- Add in ability to create/update/delete MISP Event Reports. [Tom King]
- Hard delete flag for objects. [Raphaël Vinot]
Changes
~~~~~~~
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Add brotli support in the dependencies. [Raphaël Vinot]
- Make mypy happy. [Raphaël Vinot]
- Make clear that to_json returns str. [Raphaël Vinot]
- Disable correlation on malware-sample for FileObject. [Raphaël Vinot]
- Bump objects templates. [Raphaël Vinot]
- Add missing autodoc. [Raphaël Vinot]
fix #693
- Add in delete function for a MISP Object. [Tom King]
- Fix return of delete_event_report. [Raphaël Vinot]
- Remove critical warning if lief is not installed. [Raphaël Vinot]
Fix https://github.com/MISP/MISP/issues/6908
- Bump deps. [Raphaël Vinot]
- Allow response of delete to be pythonify, add in nosetest. [Tom King]
- Add ability to get event reports from the Event ID. [Tom King]
- Remove travis file, GH Actions is better. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Remove critical warning if lief is not installed. [Raphaël Vinot]
Fix https://github.com/MISP/MISP/issues/6908
- Add test case fir add_attribute and enforceWarninglist=True. [Raphaël
Vinot]
- Add testcase with breakOnDuplicate in a MISPObject. [Raphaël Vinot]
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Add test case for page/limit in logs search. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Improve docstring for get_event. [Raphaël Vinot]
fix #686
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Show size when the json is not loadable. [Raphaël Vinot]
- Add authenticode support in generate_file_objects. [Raphaël Vinot]
- Use lief 0.11.0, generate authenticode entries. [Raphaël Vinot]
- Bump objects. [Raphaël Vinot]
- Bump deps, add 3.9 in GH. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Bump deps, objects templates. [Raphaël Vinot]
- Make clear that to_json returns str. [Raphaël Vinot]
- Disable correlation on malware-sample for FileObject. [Raphaël Vinot]
- Bump objects templates. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Add missing autodoc. [Raphaël Vinot]
fix #693
- Add in delete function for a MISP Object. [Tom King]
- Bump deps. [Raphaël Vinot]
- Fix return of delete_event_report. [Raphaël Vinot]
- Remove travis file, GH Actions is better. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Remove critical warning if lief is not installed. [Raphaël Vinot]
Fix https://github.com/MISP/MISP/issues/6908
- Add test case fir add_attribute and enforceWarninglist=True. [Raphaël
Vinot]
- Add testcase with breakOnDuplicate in a MISPObject. [Raphaël Vinot]
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Add test case for page/limit in logs search. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Improve docstring for get_event. [Raphaël Vinot]
fix #686
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Show size when the json is not loadable. [Raphaël Vinot]
- Add authenticode support in generate_file_objects. [Raphaël Vinot]
- Use lief 0.11.0, generate authenticode entries. [Raphaël Vinot]
- Bump objects. [Raphaël Vinot]
- Bump deps, add 3.9 in GH. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Bump deps, objects templates. [Raphaël Vinot]
- Allow response of delete to be pythonify, add in nosetest. [Tom King]
- Add ability to get event reports from the Event ID. [Tom King]
- Remove travis file, GH Actions is better. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]
- Remove critical warning if lief is not installed. [Raphaël Vinot]
Fix https://github.com/MISP/MISP/issues/6908
- Add test case fir add_attribute and enforceWarninglist=True. [Raphaël
Vinot]
- Add testcase with breakOnDuplicate in a MISPObject. [Raphaël Vinot]
Fix
~~~
- Flake error. [Raphaël Vinot]
- Update testlive accordingly. [Raphaël Vinot]
- Better warning if lief is outdated. [Raphaël Vinot]
- Call the AbstractMISP.from_dict at the end of the function to ensure
the edited flag remains false. [Tom King]
- Better warning if lief is outdated. [Raphaël Vinot]
- Update minimal dependency for lief in setup.py. [Raphaël Vinot]
- [dev mode only] force older jedi to avoid ipython exception. [Raphaël
Vinot]
- Add python 3.9 in GH Actions. [Raphaël Vinot]
- Update testlive accordingly. [Raphaël Vinot]
- Better warning if lief is outdated. [Raphaël Vinot]
- Update minimal dependency for lief in setup.py. [Raphaël Vinot]
- [dev mode only] force older jedi to avoid ipython exception. [Raphaël
Vinot]
- Add python 3.9 in GH Actions. [Raphaël Vinot]
- Call the AbstractMISP.from_dict at the end of the function to ensure
the edited flag remains false. [Tom King]
v2.4.137.1 (2021-01-21)
-----------------------
@ -11,6 +171,7 @@ New
Changes
~~~~~~~
- Bump changelog. [Raphaël Vinot]
- Bump version. [Raphaël Vinot]
- Add test case for page/limit in logs search. [Raphaël Vinot]
- Bump deps. [Raphaël Vinot]

View File

@ -1,4 +1,4 @@
pymisp - Modules
pymisp - Classes
================
.. toctree::
@ -33,6 +33,20 @@ MISPEvent
:members:
:inherited-members:
MISPEventBlocklist
------------------
.. autoclass:: MISPEventBlocklist
:members:
:inherited-members:
MISPEventDelegation
-------------------
.. autoclass:: MISPEventDelegation
:members:
:inherited-members:
MISPAttribute
-------------
@ -61,6 +75,13 @@ MISPObjectReference
:members:
:inherited-members:
MISPObjectTemplate
------------------
.. autoclass:: MISPObjectTemplate
:members:
:inherited-members:
MISPTag
-------
@ -75,6 +96,12 @@ MISPUser
:members:
:inherited-members:
MISPUserSetting
---------------
.. autoclass:: MISPUserSetting
:members:
:inherited-members:
MISPOrganisation
----------------
@ -83,3 +110,87 @@ MISPOrganisation
:members:
:inherited-members:
MISPOrganisationBlocklist
-------------------------
.. autoclass:: MISPOrganisationBlocklist
:members:
:inherited-members:
MISPFeed
--------
.. autoclass:: MISPFeed
:members:
:inherited-members:
MISPInbox
---------
.. autoclass:: MISPInbox
:members:
:inherited-members:
MISPLog
-------
.. autoclass:: MISPLog
:members:
:inherited-members:
MISPNoticelist
--------------
.. autoclass:: MISPNoticelist
:members:
:inherited-members:
MISPRole
--------
.. autoclass:: MISPRole
:members:
:inherited-members:
MISPServer
----------
.. autoclass:: MISPServer
:members:
:inherited-members:
MISPShadowAttribute
-------------------
.. autoclass:: MISPShadowAttribute
:members:
:inherited-members:
MISPSharingGroup
----------------
.. autoclass:: MISPSharingGroup
:members:
:inherited-members:
MISPSighting
------------
.. autoclass:: MISPSighting
:members:
:inherited-members:
MISPTaxonomy
------------
.. autoclass:: MISPTaxonomy
:members:
:inherited-members:
MISPWarninglist
---------------
.. autoclass:: MISPWarninglist
:members:
:inherited-members:

252
poetry.lock generated
View File

@ -89,7 +89,7 @@ lxml = ["lxml"]
[[package]]
name = "bleach"
version = "3.2.3"
version = "3.3.0"
description = "An easy safelist-based HTML-sanitizing tool."
category = "dev"
optional = false
@ -100,6 +100,17 @@ packaging = "*"
six = ">=1.9.0"
webencodings = "*"
[[package]]
name = "brotlipy"
version = "0.7.0"
description = "Python binding to the Brotli library"
category = "main"
optional = true
python-versions = "*"
[package.dependencies]
cffi = ">=1.0.0"
[[package]]
name = "certifi"
version = "2020.12.5"
@ -152,7 +163,7 @@ name = "colorclass"
version = "2.2.0"
description = "Colorful worry-free console applications for Linux, Mac OS X, and Windows."
category = "main"
optional = false
optional = true
python-versions = "*"
[[package]]
@ -171,7 +182,7 @@ name = "compressed-rtf"
version = "1.0.6"
description = "Compressed Rich Text Format (RTF) compression and decompression package"
category = "main"
optional = false
optional = true
python-versions = "*"
[[package]]
@ -203,22 +214,22 @@ yaml = ["PyYAML (>=3.10)"]
[[package]]
name = "cryptography"
version = "3.3.1"
version = "3.4.1"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*"
optional = true
python-versions = ">=3.6"
[package.dependencies]
cffi = ">=1.12"
six = ">=1.4.1"
setuptools-rust = ">=0.11.4"
[package.extras]
docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
ssh = ["bcrypt (>=3.1.5)"]
test = ["pytest (>=3.6.0,!=3.9.0,!=3.9.1,!=3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
test = ["pytest (>=6.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
[[package]]
name = "decorator"
@ -271,7 +282,7 @@ name = "easygui"
version = "0.98.2"
description = "EasyGUI is a module for very simple, very easy GUI programming in Python. EasyGUI is different from other GUI generators in that EasyGUI is NOT event-driven. Instead, all GUI interactions are invoked by simple function calls."
category = "main"
optional = false
optional = true
python-versions = "*"
[[package]]
@ -279,7 +290,7 @@ name = "ebcdic"
version = "1.1.1"
description = "Additional EBCDIC codecs"
category = "main"
optional = false
optional = true
python-versions = "*"
[[package]]
@ -295,7 +306,7 @@ name = "extract-msg"
version = "0.28.1"
description = "Extracts emails and attachments saved in Microsoft Outlook's .msg files"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.dependencies]
@ -340,7 +351,7 @@ name = "imapclient"
version = "2.1.0"
description = "Easy-to-use, Pythonic and complete IMAP client library"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.dependencies]
@ -440,7 +451,7 @@ testing = ["Django (<3.1)", "colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"]
[[package]]
name = "jinja2"
version = "2.11.2"
version = "2.11.3"
description = "A very fast and expressive template engine."
category = "main"
optional = false
@ -502,7 +513,7 @@ test = ["jedi (<=0.17.2)", "ipykernel", "ipython", "mock", "pytest", "pytest-asy
[[package]]
name = "jupyter-core"
version = "4.7.0"
version = "4.7.1"
description = "Jupyter core package. A base package on which Jupyter projects rely."
category = "dev"
optional = false
@ -564,7 +575,7 @@ name = "lark-parser"
version = "0.11.1"
description = "a modern parsing library"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.extras]
@ -608,7 +619,7 @@ name = "msoffcrypto-tool"
version = "4.11.0"
description = "A Python tool and library for decrypting MS Office files with passwords or other keys"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.dependencies]
@ -757,7 +768,7 @@ name = "olefile"
version = "0.46"
description = "Python package to parse, read and write Microsoft OLE2 files (Structured Storage or Compound Document, Microsoft Office)"
category = "main"
optional = false
optional = true
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
@ -765,7 +776,7 @@ name = "oletools"
version = "0.56"
description = "Python tools to analyze security characteristics of MS Office and OLE files (also called Structured Storage, Compound File Binary Format or Compound Document File Format), for Malware Analysis and Incident Response #DFIR"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.dependencies]
@ -778,7 +789,7 @@ pyparsing = ">=2.1.0,<3"
[[package]]
name = "packaging"
version = "20.8"
version = "20.9"
description = "Core utilities for Python packages"
category = "main"
optional = false
@ -811,7 +822,7 @@ name = "pcodedmp"
version = "1.2.6"
description = "A VBA p-code disassembler"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.dependencies]
@ -968,10 +979,10 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "pytz"
version = "2020.5"
version = "2021.1"
description = "World timezone definitions, modern and historical"
category = "main"
optional = false
optional = true
python-versions = "*"
[[package]]
@ -992,7 +1003,7 @@ python-versions = "*"
[[package]]
name = "pyzmq"
version = "22.0.1"
version = "22.0.2"
description = "Python bindings for 0MQ"
category = "dev"
optional = false
@ -1065,7 +1076,7 @@ name = "rtfde"
version = "0.0.2"
description = "A library for extracting HTML content from RTF encapsulated HTML as commonly found in the exchange MSG email format."
category = "main"
optional = false
optional = true
python-versions = ">=3.6"
[package.dependencies]
@ -1076,6 +1087,14 @@ oletools = ">=0.56"
dev = ["lxml (>=4.6)"]
msg_parse = ["extract-msg (>=0.27)"]
[[package]]
name = "semantic-version"
version = "2.8.5"
description = "A library implementing the 'SemVer' scheme."
category = "main"
optional = true
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "send2trash"
version = "1.5.0"
@ -1084,6 +1103,18 @@ category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "setuptools-rust"
version = "0.11.6"
description = "Setuptools rust extension plugin"
category = "main"
optional = true
python-versions = ">=3.5"
[package.dependencies]
semantic-version = ">=2.6.0"
toml = ">=0.9.0"
[[package]]
name = "six"
version = "1.15.0"
@ -1249,6 +1280,14 @@ python-versions = "*"
[package.extras]
test = ["pathlib2"]
[[package]]
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
category = "main"
optional = true
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "tornado"
version = "6.1"
@ -1294,7 +1333,7 @@ name = "tzlocal"
version = "2.1"
description = "tzinfo object for the local timezone"
category = "main"
optional = false
optional = true
python-versions = "*"
[package.dependencies]
@ -1308,6 +1347,9 @@ category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
[package.dependencies]
brotlipy = {version = ">=0.6.0", optional = true, markers = "extra == \"brotli\""}
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
@ -1349,7 +1391,7 @@ name = "win-unicode-console"
version = "0.5"
description = "Enable Unicode input and display when running Python from Windows console."
category = "main"
optional = false
optional = true
python-versions = "*"
[[package]]
@ -1373,6 +1415,7 @@ docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
[extras]
brotli = ["urllib3"]
docs = ["sphinx-autodoc-typehints", "recommonmark"]
email = ["extract_msg", "RTFDE", "oletools"]
fileobjects = ["python-magic", "pydeep", "lief"]
@ -1384,7 +1427,7 @@ virustotal = ["validators"]
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
content-hash = "0111246c147cf1b378686b6e839730cd8708babd1c1024509be97a5d29a1529e"
content-hash = "9f7289c3410f9000dbf655580c0f32f8685b72e799f2d0030b029685b6e1db2a"
[metadata.files]
alabaster = [
@ -1435,8 +1478,47 @@ beautifulsoup4 = [
{file = "beautifulsoup4-4.9.3.tar.gz", hash = "sha256:84729e322ad1d5b4d25f805bfa05b902dd96450f43842c4e99067d5e1369eb25"},
]
bleach = [
{file = "bleach-3.2.3-py2.py3-none-any.whl", hash = "sha256:2d3b3f7e7d69148bb683b26a3f21eabcf62fa8fb7bc75d0e7a13bcecd9568d4d"},
{file = "bleach-3.2.3.tar.gz", hash = "sha256:c6ad42174219b64848e2e2cd434e44f56cd24a93a9b4f8bc52cfed55a1cd5aad"},
{file = "bleach-3.3.0-py2.py3-none-any.whl", hash = "sha256:6123ddc1052673e52bab52cdc955bcb57a015264a1c57d37bea2f6b817af0125"},
{file = "bleach-3.3.0.tar.gz", hash = "sha256:98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433"},
]
brotlipy = [
{file = "brotlipy-0.7.0-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:af65d2699cb9f13b26ec3ba09e75e80d31ff422c03675fcb36ee4dabe588fdc2"},
{file = "brotlipy-0.7.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:50ca336374131cfad20612f26cc43c637ac0bfd2be3361495e99270883b52962"},
{file = "brotlipy-0.7.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:fd1d1c64214af5d90014d82cee5d8141b13d44c92ada7a0c0ec0679c6f15a471"},
{file = "brotlipy-0.7.0-cp27-cp27m-win32.whl", hash = "sha256:5de6f7d010b7558f72f4b061a07395c5c3fd57f0285c5af7f126a677b976a868"},
{file = "brotlipy-0.7.0-cp27-cp27m-win_amd64.whl", hash = "sha256:637847560d671657f993313ecc6c6c6666a936b7a925779fd044065c7bc035b9"},
{file = "brotlipy-0.7.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b4c98b0d2c9c7020a524ca5bbff42027db1004c6571f8bc7b747f2b843128e7a"},
{file = "brotlipy-0.7.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8b39abc3256c978f575df5cd7893153277216474f303e26f0e43ba3d3969ef96"},
{file = "brotlipy-0.7.0-cp33-cp33m-macosx_10_6_intel.whl", hash = "sha256:96bc59ff9b5b5552843dc67999486a220e07a0522dddd3935da05dc194fa485c"},
{file = "brotlipy-0.7.0-cp33-cp33m-manylinux1_i686.whl", hash = "sha256:091b299bf36dd6ef7a06570dbc98c0f80a504a56c5b797f31934d2ad01ae7d17"},
{file = "brotlipy-0.7.0-cp33-cp33m-manylinux1_x86_64.whl", hash = "sha256:0be698678a114addcf87a4b9496c552c68a2c99bf93cf8e08f5738b392e82057"},
{file = "brotlipy-0.7.0-cp33-cp33m-win32.whl", hash = "sha256:d2c1c724c4ac375feb2110f1af98ecdc0e5a8ea79d068efb5891f621a5b235cb"},
{file = "brotlipy-0.7.0-cp33-cp33m-win_amd64.whl", hash = "sha256:3a3e56ced8b15fbbd363380344f70f3b438e0fd1fcf27b7526b6172ea950e867"},
{file = "brotlipy-0.7.0-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:653faef61241bf8bf99d73ca7ec4baa63401ba7b2a2aa88958394869379d67c7"},
{file = "brotlipy-0.7.0-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:0fa6088a9a87645d43d7e21e32b4a6bf8f7c3939015a50158c10972aa7f425b7"},
{file = "brotlipy-0.7.0-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:79aaf217072840f3e9a3b641cccc51f7fc23037496bd71e26211856b93f4b4cb"},
{file = "brotlipy-0.7.0-cp34-cp34m-win32.whl", hash = "sha256:a07647886e24e2fb2d68ca8bf3ada398eb56fd8eac46c733d4d95c64d17f743b"},
{file = "brotlipy-0.7.0-cp34-cp34m-win_amd64.whl", hash = "sha256:c6cc0036b1304dd0073eec416cb2f6b9e37ac8296afd9e481cac3b1f07f9db25"},
{file = "brotlipy-0.7.0-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:07194f4768eb62a4f4ea76b6d0df6ade185e24ebd85877c351daa0a069f1111a"},
{file = "brotlipy-0.7.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7e31f7adcc5851ca06134705fcf3478210da45d35ad75ec181e1ce9ce345bb38"},
{file = "brotlipy-0.7.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9448227b0df082e574c45c983fa5cd4bda7bfb11ea6b59def0940c1647be0c3c"},
{file = "brotlipy-0.7.0-cp35-cp35m-win32.whl", hash = "sha256:dc6c5ee0df9732a44d08edab32f8a616b769cc5a4155a12d2d010d248eb3fb07"},
{file = "brotlipy-0.7.0-cp35-cp35m-win_amd64.whl", hash = "sha256:3c1d5e2cf945a46975bdb11a19257fa057b67591eb232f393d260e7246d9e571"},
{file = "brotlipy-0.7.0-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:2a80319ae13ea8dd60ecdc4f5ccf6da3ae64787765923256b62c598c5bba4121"},
{file = "brotlipy-0.7.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:2699945a0a992c04fc7dc7fa2f1d0575a2c8b4b769f2874a08e8eae46bef36ae"},
{file = "brotlipy-0.7.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1ea4e578241504b58f2456a6c69952c88866c794648bdc74baee74839da61d44"},
{file = "brotlipy-0.7.0-cp36-cp36m-win32.whl", hash = "sha256:2e5c64522364a9ebcdf47c5744a5ddeb3f934742d31e61ebfbbc095460b47162"},
{file = "brotlipy-0.7.0-cp36-cp36m-win_amd64.whl", hash = "sha256:09ec3e125d16749b31c74f021aba809541b3564e5359f8c265cbae442810b41a"},
{file = "brotlipy-0.7.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:4e4638b49835d567d447a2cfacec109f9a777f219f071312268b351b6839436d"},
{file = "brotlipy-0.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1379347337dc3d20b2d61456d44ccce13e0625db2611c368023b4194d5e2477f"},
{file = "brotlipy-0.7.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:22a53ccebcce2425e19f99682c12be510bf27bd75c9b77a1720db63047a77554"},
{file = "brotlipy-0.7.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4bac11c1ffba9eaa2894ec958a44e7f17778b3303c2ee9f99c39fcc511c26668"},
{file = "brotlipy-0.7.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:08a16ebe2ffc52f645c076f96b138f185e74e5d59b4a65e84af17d5997d82890"},
{file = "brotlipy-0.7.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7b21341eab7c939214e457e24b265594067a6ad268305289148ebaf2dacef325"},
{file = "brotlipy-0.7.0-pp226-pp226u-macosx_10_10_x86_64.whl", hash = "sha256:786afc8c9bd67de8d31f46e408a3386331e126829114e4db034f91eacb05396d"},
{file = "brotlipy-0.7.0-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:890b973039ba26c3ad2e86e8908ab527ed64f9b1357f81a676604da8088e4bf9"},
{file = "brotlipy-0.7.0-pp37-pypy37_pp73-manylinux1_x86_64.whl", hash = "sha256:4864ac52c116ea3e3a844248a9c9fbebb8797891cbca55484ecb6eed3ebeba24"},
{file = "brotlipy-0.7.0.tar.gz", hash = "sha256:36def0b859beaf21910157b4c33eb3b06d8ce459c942102f16988cca6ea164df"},
]
certifi = [
{file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"},
@ -1556,20 +1638,13 @@ coveralls = [
{file = "coveralls-3.0.0.tar.gz", hash = "sha256:5399c0565ab822a70a477f7031f6c88a9dd196b3de2877b3facb43b51bd13434"},
]
cryptography = [
{file = "cryptography-3.3.1-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030"},
{file = "cryptography-3.3.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0"},
{file = "cryptography-3.3.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812"},
{file = "cryptography-3.3.1-cp27-cp27m-win32.whl", hash = "sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e"},
{file = "cryptography-3.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901"},
{file = "cryptography-3.3.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d"},
{file = "cryptography-3.3.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5"},
{file = "cryptography-3.3.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302"},
{file = "cryptography-3.3.1-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244"},
{file = "cryptography-3.3.1-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c"},
{file = "cryptography-3.3.1-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c"},
{file = "cryptography-3.3.1-cp36-abi3-win32.whl", hash = "sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a"},
{file = "cryptography-3.3.1-cp36-abi3-win_amd64.whl", hash = "sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7"},
{file = "cryptography-3.3.1.tar.gz", hash = "sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6"},
{file = "cryptography-3.4.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:e63b8da1d77ff60a73d72db68cb72e8ffbe9f7319e5ffa23f6bfe2757d6871e3"},
{file = "cryptography-3.4.1-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:4d8df1f5b6b172fe53a465d8fc32134a07ccd4dc677f19af85562bcbc7e97504"},
{file = "cryptography-3.4.1-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cd1d14b6c52d9372a7f4682576fa7d9c9d256afa6cc50828b337dbb8a9596066"},
{file = "cryptography-3.4.1-cp36-abi3-manylinux2014_x86_64.whl", hash = "sha256:85c7d84beacf32bf629767f06c78af0350eb869e2830e4ebe05b239c695eca38"},
{file = "cryptography-3.4.1-cp36-abi3-win32.whl", hash = "sha256:007edf78a0b96513b94c1c7cc515286aec72f787bdcd11892edcdec9e27e936d"},
{file = "cryptography-3.4.1-cp36-abi3-win_amd64.whl", hash = "sha256:423c12d04df7ed3323e74745cba91056a411bd8f57609a6a64562845ccc5541a"},
{file = "cryptography-3.4.1.tar.gz", hash = "sha256:be70bdaa29bcacf70896dae3a6f3eef91daf51bfba8a49dbfb9c23bb2cc914ba"},
]
decorator = [
{file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"},
@ -1642,8 +1717,8 @@ jedi = [
{file = "jedi-0.17.2.tar.gz", hash = "sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20"},
]
jinja2 = [
{file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
{file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
{file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"},
{file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"},
]
json5 = [
{file = "json5-0.9.5-py2.py3-none-any.whl", hash = "sha256:af1a1b9a2850c7f62c23fde18be4749b3599fd302f494eebf957e2ada6b9e42c"},
@ -1658,8 +1733,8 @@ jupyter-client = [
{file = "jupyter_client-6.1.11.tar.gz", hash = "sha256:649ca3aca1e28f27d73ef15868a7c7f10d6e70f761514582accec3ca6bb13085"},
]
jupyter-core = [
{file = "jupyter_core-4.7.0-py3-none-any.whl", hash = "sha256:0a451c9b295e4db772bdd8d06f2f1eb31caeec0e81fbb77ba37d4a3024e3b315"},
{file = "jupyter_core-4.7.0.tar.gz", hash = "sha256:aa1f9496ab3abe72da4efe0daab0cb2233997914581f9a071e07498c6add8ed3"},
{file = "jupyter_core-4.7.1-py3-none-any.whl", hash = "sha256:8c6c0cac5c1b563622ad49321d5ec47017bd18b94facb381c6973a0486395f8e"},
{file = "jupyter_core-4.7.1.tar.gz", hash = "sha256:79025cb3225efcd36847d0840f3fc672c0abd7afd0de83ba8a1d3837619122b4"},
]
jupyterlab = [
{file = "jupyterlab-2.2.9-py3-none-any.whl", hash = "sha256:59af02c26a15ec2d2862a15bc72e41ae304b406a0b0d3f4f705eeb7caf91902b"},
@ -1791,8 +1866,8 @@ oletools = [
{file = "oletools-0.56.zip", hash = "sha256:8481cd60352399e15e9290ac57862a65952e9c83e3526ba833991a5c78f5cca1"},
]
packaging = [
{file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"},
{file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"},
{file = "packaging-20.9-py2.py3-none-any.whl", hash = "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"},
{file = "packaging-20.9.tar.gz", hash = "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"},
]
pandocfilters = [
{file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"},
@ -1898,8 +1973,8 @@ python-magic = [
{file = "python_magic-0.4.20-py2.py3-none-any.whl", hash = "sha256:33ce94d9395aa269a9c5fac10ae124a5fb328ebe248f36efc5a43922edee662e"},
]
pytz = [
{file = "pytz-2020.5-py2.py3-none-any.whl", hash = "sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4"},
{file = "pytz-2020.5.tar.gz", hash = "sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5"},
{file = "pytz-2021.1-py2.py3-none-any.whl", hash = "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"},
{file = "pytz-2021.1.tar.gz", hash = "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"},
]
pywin32 = [
{file = "pywin32-300-cp35-cp35m-win32.whl", hash = "sha256:1c204a81daed2089e55d11eefa4826c05e604d27fe2be40b6bf8db7b6a39da63"},
@ -1926,37 +2001,38 @@ pywinpty = [
{file = "pywinpty-0.5.7.tar.gz", hash = "sha256:2d7e9c881638a72ffdca3f5417dd1563b60f603e1b43e5895674c2a1b01f95a0"},
]
pyzmq = [
{file = "pyzmq-22.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2cc0094d5539feea4c54ca5e9019e9aa967f621af2ddabe69db79ecb6a8d9549"},
{file = "pyzmq-22.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:ab61e794d07cb5543254f7a2ef9a64ced98548314d7bedcf507281b88f57cae5"},
{file = "pyzmq-22.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1a797bca8b52ffeb78446ed46402ba1fe48d5dbdc9669aa24ab8b006b3eaedc1"},
{file = "pyzmq-22.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:1cebf51880eb8be28aa8c8f6d1e7d2120efbf6be5407fa3e47f0e97204f75adb"},
{file = "pyzmq-22.0.1-cp36-cp36m-win32.whl", hash = "sha256:69fd269dd8c78157e51a4b62d7ceeaac5250195b0ff2bf83a359943faa0a1b62"},
{file = "pyzmq-22.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:dad2dc96ebbafa9cc9aaa8f595bed4aa01abac4daaa0db1ae11e0b1e7ea539b8"},
{file = "pyzmq-22.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3bd113b0f6c03b268583efaa91681400a65378cf16b829ce7d8113a7e601c3ff"},
{file = "pyzmq-22.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:57a8cf39b464e3ac567477978819642e04811bc469db274629059374bac3285a"},
{file = "pyzmq-22.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d664447ac3fc862707fe33608343b3ceaeca6f90fb739bb67f9d708836dbff10"},
{file = "pyzmq-22.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:35a586260ba2d0766d810f8d6b4e5325731a689f1848a5bee79aa10e213e76f4"},
{file = "pyzmq-22.0.1-cp37-cp37m-win32.whl", hash = "sha256:029b689a5010645e455688d83071e09cd2d75b113c44245ba0b054e409d018e2"},
{file = "pyzmq-22.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:17104eda2151c8a3d0655ca8ece794d4df209a07d70a5ba90bf1cf27a5e30d51"},
{file = "pyzmq-22.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:40e5003b3aefcc4de6898bf284de804dcf3f299019ac3632062aac3725b6a908"},
{file = "pyzmq-22.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:9bf4d98ae6b5f962c2b790843204625fedd4ede79fd918c9f634d9ca8ab3d855"},
{file = "pyzmq-22.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ada90fd5c69442ea3b4769e38c34d131b69db1fe3fce674c6113ced249a2e94a"},
{file = "pyzmq-22.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:cc9ee1702adc37ffa6fdf77a9e9579b56ed52261031347257b6f42f30a9f4571"},
{file = "pyzmq-22.0.1-cp38-cp38-win32.whl", hash = "sha256:be9f8fbccac03f5df850ad1c927e1568d0e85aeba0a793b1cabdc7c14315af09"},
{file = "pyzmq-22.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:b5ea1428cf96dca99fab4951ed86a94b868b9cfc8d7cd5be489dce32186ce710"},
{file = "pyzmq-22.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aff6f76d5b4b53d6949f72454b2f8f3280abf084ebaf8b811c4bd8499b159e6f"},
{file = "pyzmq-22.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:ece537e3a7417e907e57ac0a2392b142151931a9e7a1a5468f40911832486e56"},
{file = "pyzmq-22.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:28506f107903f95e0ff5029d1271e6015caa04caf53d14be4e83476995b28938"},
{file = "pyzmq-22.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:7d46088b9b2ef3d14fa2c7f5e84a0fc119ba4685adb68d006a78ccc7a562070e"},
{file = "pyzmq-22.0.1-cp39-cp39-win32.whl", hash = "sha256:53fd35f3ebcc17d292e318b1b9471417d07f7b1e87de3efeebc611c97b4840b6"},
{file = "pyzmq-22.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:02b865dd877215df5ada1ecfc72b9380cd789d63498103ebf28e7e397f1c65fa"},
{file = "pyzmq-22.0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:43f30f6c7ac301573c94943f87caede6a54ca928eaabd3936f6b50fd61b02c17"},
{file = "pyzmq-22.0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:149decda1a9bdb5bdac17bbba3bd78e93d0fe85e8155cf3ea18ebeceb733615f"},
{file = "pyzmq-22.0.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:dd85a8f1620ac267548d96d55c1de3b431afd8d1eeb9827dfe423bf238804e13"},
{file = "pyzmq-22.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c17ba678f4dc187d142f512cf77d9e6c6263f83a5ae622315673c474fd72b9c7"},
{file = "pyzmq-22.0.1-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:ef61a3f7b82b13a70737a28e11da4f54219ffa31bb3073e9c33c75a65c4046ab"},
{file = "pyzmq-22.0.1-pp37-pypy37_pp73-win32.whl", hash = "sha256:cee43acbd582f7b34fbe6b2713a2c1be78416c3cba738128ecfdab2b21e4cc39"},
{file = "pyzmq-22.0.1.tar.gz", hash = "sha256:f7869dcb80a71ef83f1e1551f0d1ba4831a5c79416a441cb95ac82c9a954ee54"},
{file = "pyzmq-22.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c2a8d70fe2a321a83d274970481eb244bff027b58511e943ef564721530ba786"},
{file = "pyzmq-22.0.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b68033181dc2e622bb5baa9b16d5933303779a03dc89860f4c44f629426d802c"},
{file = "pyzmq-22.0.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:9bae89912cac9f03d41adb66981f6e753cfd4e451937b2cd435d732fd4ccb1a3"},
{file = "pyzmq-22.0.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:75b68890219231bd60556a1c6e0d2dc05fa1b179a26c876442c83a0d77958bc9"},
{file = "pyzmq-22.0.2-cp36-cp36m-win32.whl", hash = "sha256:c6b1d235a08f2c42480cb9a0a5cd2a29c391052d8bc8f43db86aa15387734a33"},
{file = "pyzmq-22.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f3ad3f77ed6a3cf31f61170fc1733afd83a4cf8e02edde0762d4e630bce2a97e"},
{file = "pyzmq-22.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:490a9fe5509b09369722b18b85ef494abdf7c51cb1c9484cf83c3921961c2038"},
{file = "pyzmq-22.0.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:303b8ebafce9906fc1e8eb35734b9dba4786ca3da7cdc88e04a8997dde2372d3"},
{file = "pyzmq-22.0.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1ffb81b08bcaaac30ba913adef686ff41b257252e96fca32497029fdc3962ff0"},
{file = "pyzmq-22.0.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:75fa832c79ce30a23cd44a4e89224c651ef6bf5144b842ad066246e914b92233"},
{file = "pyzmq-22.0.2-cp37-cp37m-win32.whl", hash = "sha256:d77f6eb839097e4bce96fcac7e05e33b677efe0385bd0ab6c2a9ea818ed7e8f9"},
{file = "pyzmq-22.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5a565af3729b2bf7c2ce1d563084d0cd90a312290ba5e571a0c3ec770ea8a287"},
{file = "pyzmq-22.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ff236d8653f8bb74198223c7af77b9378714f411d6d95255d97c2d69bf991b20"},
{file = "pyzmq-22.0.2-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:37beae88d6cf102419bb0ec79acb19c062dcea6765b57cf2b265dac5542bcdad"},
{file = "pyzmq-22.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:bc9f2c26485dc76520084ee8d76f18171cc89f24f801bed8402302ee99dbbcd9"},
{file = "pyzmq-22.0.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0b32bd5e7346e534fddb57eab309933ff6b3b177c0106b908b6193dfa75fdabe"},
{file = "pyzmq-22.0.2-cp38-cp38-win32.whl", hash = "sha256:58a074afa254a53872202e92594b59c0ba8cda62effc6437e34ae7048559dd38"},
{file = "pyzmq-22.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:66d1190eec0a78bd07d39d1615b7923190ed1ba8aa04742d963b09bc66628681"},
{file = "pyzmq-22.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:013e1343b41aaeb482f40605f3fadcfeb841706039625d7b30d12ae8fa0d3cd0"},
{file = "pyzmq-22.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d66724bf0d423aa18c9ea43a1bf24ed5c1d143f00bdace7c1b7fc3034f188cc9"},
{file = "pyzmq-22.0.2-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:86cb0982b02b4fc2fbd4a65155289e0e4e5015982dbe2db14f8856c303cffa08"},
{file = "pyzmq-22.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:7b6c855c562d1c1bf7a1ba72c2617c8298e0fa1b1c08dc8d60e225031567ad9e"},
{file = "pyzmq-22.0.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:034f5b9e4ff0bcc67e49fe8f55a1b209ea5761c8fd00c246195c8d0cb6ce096d"},
{file = "pyzmq-22.0.2-cp39-cp39-win32.whl", hash = "sha256:849444c1699c244d5770d3a684c51f024e95c538f71dd3d1ff423a91745bab7f"},
{file = "pyzmq-22.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:506d4716ca6e5798345038e75adcb05b4118112a36700941967925285637198b"},
{file = "pyzmq-22.0.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:888d850d4b7e1426d210e901bd93075991b36fe0e2ae2547ce5c18b96df95250"},
{file = "pyzmq-22.0.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:03c001be8c3817d5721137660ed21d90f6175002f0e583306079c791b1d9a855"},
{file = "pyzmq-22.0.2-pp36-pypy36_pp73-win32.whl", hash = "sha256:3f4e6574d2589e3e22514a3669e86a7bf18a95d3c3ae65733fa6a0a769ec4c9d"},
{file = "pyzmq-22.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:35c8c5c8160f0f0fc6d4588037243b668c3f20d981c1b8e7b5d9c33f8eeb7eb6"},
{file = "pyzmq-22.0.2-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:841e9563ce9bd33fe9f227ec680ac033e9f1060977d613568c1dcbff09e74cc9"},
{file = "pyzmq-22.0.2-pp37-pypy37_pp73-win32.whl", hash = "sha256:cc814880ba27f2ea8cea48ff3b480076266d4dd9c3fe29ef6e5a0a807639abe7"},
{file = "pyzmq-22.0.2.tar.gz", hash = "sha256:d7b82a959e5e22d492f4f5a1e650e909a6c8c76ede178f538313ddb9d1e92963"},
]
recommonmark = [
{file = "recommonmark-0.7.1-py2.py3-none-any.whl", hash = "sha256:1b1db69af0231efce3fa21b94ff627ea33dee7079a01dd0a7f8482c3da148b3f"},
@ -2016,10 +2092,18 @@ rtfde = [
{file = "RTFDE-0.0.2-py3-none-any.whl", hash = "sha256:18386e4f060cee12a2a8035b0acf0cc99689f5dff1bf347bab7e92351860a21d"},
{file = "RTFDE-0.0.2.tar.gz", hash = "sha256:b86b5d734950fe8745a5b89133f50554252dbd67c6d1b9265e23ee140e7ea8a2"},
]
semantic-version = [
{file = "semantic_version-2.8.5-py2.py3-none-any.whl", hash = "sha256:45e4b32ee9d6d70ba5f440ec8cc5221074c7f4b0e8918bdab748cc37912440a9"},
{file = "semantic_version-2.8.5.tar.gz", hash = "sha256:d2cb2de0558762934679b9a104e82eca7af448c9f4974d1f3eeccff651df8a54"},
]
send2trash = [
{file = "Send2Trash-1.5.0-py3-none-any.whl", hash = "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"},
{file = "Send2Trash-1.5.0.tar.gz", hash = "sha256:60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2"},
]
setuptools-rust = [
{file = "setuptools-rust-0.11.6.tar.gz", hash = "sha256:a5b5954909cbc5d66b914ee6763f81fa2610916041c7266105a469f504a7c4ca"},
{file = "setuptools_rust-0.11.6-py3-none-any.whl", hash = "sha256:5acf8cd8e89d57f0cd3cc942f60fa2ccfdede4c7a0b0d4b28eb7ab756df30347"},
]
six = [
{file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
{file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
@ -2072,6 +2156,10 @@ testpath = [
{file = "testpath-0.4.4-py2.py3-none-any.whl", hash = "sha256:bfcf9411ef4bf3db7579063e0546938b1edda3d69f4e1fb8756991f5951f85d4"},
{file = "testpath-0.4.4.tar.gz", hash = "sha256:60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e"},
]
toml = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
tornado = [
{file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"},
{file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"},

View File

@ -1,4 +1,4 @@
__version__ = '2.4.137.1'
__version__ = '2.4.138'
import logging
FORMAT = "%(levelname)s [%(filename)s:%(lineno)s - %(funcName)s() ] %(message)s"

View File

@ -237,7 +237,7 @@ class AbstractMISP(MutableMapping, MISPFileCache, metaclass=ABCMeta):
to_return = _int_to_str(to_return)
return to_return
def to_json(self, sort_keys: bool = False, indent: Optional[int] = None):
def to_json(self, sort_keys: bool = False, indent: Optional[int] = None) -> str:
"""Dump recursively any class of type MISPAbstract to a json string"""
return dumps(self, default=pymisp_json_default, sort_keys=sort_keys, indent=indent)

View File

@ -15,6 +15,7 @@ from uuid import UUID
import warnings
import sys
import copy
import urllib3 # type: ignore
from io import BytesIO, StringIO
from . import __version__, everything_broken
@ -88,6 +89,27 @@ def register_user(misp_url: str, email: str,
return r.json()
def brotli_supported() -> bool:
"""
Returns whether Brotli compression is supported
"""
# urllib >= 1.25.1 includes brotli support
major, minor, patch = urllib3.__version__.split('.') # noqa: F811
major, minor, patch = int(major), int(minor), int(patch)
urllib3_with_brotli = (major == 1 and ((minor == 25 and patch >= 1) or (minor >= 26))) or major >= 2
if not urllib3_with_brotli:
return False
# pybrotli is an extra package required by urllib3 for brotli support
try:
import brotli # type: ignore # noqa
return True
except ImportError:
return False
class PyMISP:
"""Python API for MISP
@ -118,6 +140,8 @@ class PyMISP:
self.tool: str = tool
self.timeout: Optional[Union[float, Tuple[float, float]]] = timeout
self.__session = requests.Session() # use one session to keep connection between requests
if brotli_supported():
self.__session.headers['Accept-Encoding'] = ', '.join(('br', 'gzip', 'deflate'))
self.global_pythonify = False
@ -924,12 +948,12 @@ class PyMISP:
# ## BEGIN Tags ###
def tags(self, pythonify: bool = False) -> Union[Dict, List[MISPTag]]:
def tags(self, pythonify: bool = False, **kw_params) -> Union[Dict, List[MISPTag]]:
"""Get the list of existing tags.
:param pythonify: Returns a list of PyMISP Objects instead of the plain json output. Warning: it might use a lot of RAM
"""
r = self._prepare_request('GET', 'tags/index')
r = self._prepare_request('GET', 'tags/index', kw_params=kw_params)
tags = self._check_json_response(r)
if not (self.global_pythonify or pythonify) or 'errors' in tags:
return tags['Tag']

View File

@ -751,6 +751,10 @@ class MISPObject(AbstractMISP):
# Then we have no meta-category, template_uuid, description and template_version
pass
def delete(self):
"""Mark the attribute as deleted (soft delete)"""
self.deleted = True
@property
def disable_validation(self):
self._strict = False

View File

@ -66,7 +66,7 @@ class FileObject(AbstractMISPObjectGenerator):
self.add_attribute('sha1', value=sha1(self.__data).hexdigest())
self.add_attribute('sha256', value=sha256(self.__data).hexdigest())
self.add_attribute('sha512', value=sha512(self.__data).hexdigest())
self.add_attribute('malware-sample', value=self.__filename, data=self.__pseudofile)
self.add_attribute('malware-sample', value=self.__filename, data=self.__pseudofile, disable_correlation=True)
if HAS_MAGIC:
self.add_attribute('mimetype', value=magic.from_buffer(self.__data, mime=True))
if HAS_PYDEEP:

View File

@ -1,6 +1,6 @@
[tool.poetry]
name = "pymisp"
version = "2.4.137.1"
version = "2.4.138"
description = "Python API for MISP."
authors = ["Raphaël Vinot <raphael.vinot@circl.lu>"]
license = "BSD-2-Clause"
@ -46,9 +46,9 @@ requests = "^2.25.0"
python-dateutil = "^2.8.1"
jsonschema = "^3.2.0"
deprecated = "^1.2.10"
extract_msg = "^0.28.0"
RTFDE = "^0.0.2"
oletools = "^0.56"
extract_msg = {version = "^0.28.0", optional = true}
RTFDE = {version = "^0.0.2", optional = true}
oletools = {version = "^0.56", optional = true}
python-magic = {version = "^0.4.18", optional = true}
pydeep = {version = "^0.4", optional = true}
lief = {version = "^0.11.0", optional = true}
@ -58,6 +58,7 @@ sphinx-autodoc-typehints = {version = "^1.11.1", optional = true}
recommonmark = {version = "^0.7.1", optional = true}
reportlab = {version = "^3.5.55", optional = true}
pyfaup = {version = "^1.2", optional = true}
urllib3 = {extras = ["brotli"], version = "^1.26.3", optional = true}
[tool.poetry.extras]
@ -68,6 +69,7 @@ docs = ['sphinx-autodoc-typehints', 'recommonmark']
pdfexport = ['reportlab']
url = ['pyfaup']
email = ['extract_msg', "RTFDE", "oletools"]
brotli = ['urllib3']
[tool.poetry.dev-dependencies]
nose = "^1.3.7"

View File

@ -50,7 +50,7 @@
"name": "url",
"sharing_group_id": "0",
"template_uuid": "60efb77b-40b5-4c46-871b-ed1ed999fce5",
"template_version": "8",
"template_version": "9",
"uuid": "b"
}
]