Python interface into mercury's network protocol fingerprinting and analysis functionality
Project description
mercury-python
The goal of the mercury-python
package is to expose mercury's network protocol analysis functionality via python. The cython interface is given in mercury.pyx
.
Installation
Recommended Installation
pip install mercury-python
From Source
You will first need to build mercury and install cython and optionally wheel:
pip install cython
pip install wheel
Within mercury's src/cython/
directory, Makefile
will build the package based on the makefile target:
make # default build in-place
make wheel # generates pip-installable wheel file
Usage
Initialization
import mercury
libmerc = mercury.Mercury() # initialization for packet parsing
libmerc = mercury.Mercury(do_analysis=True, resources=b'/<path>/<to>/<resources.tgz>') # initialization for analysis
Parsing packets
hex_packet = '5254001235020800273a230d08004500...'
libmerc.get_mercury_json(bytes.fromhex(hex_packet))
{
"fingerprints": {
"tls": "tls/(0303)(13011303...)((0000)...)"
},
"tls": {
"client": {
"version": "0303",
"random": "0d4e266cf66416689ded443b58d2b12bb2f53e8a3207148e3c8f2be2476cbd24",
"session_id": "67b5db473da1b71fbca9ed288052032ee0d5139dcfd6ea78b4436e509703c0e4",
"cipher_suites": "130113031302c02bc02fcca9cca8c02cc030c00ac009c013c014009c009d002f0035000a",
"compression_methods": "00",
"server_name": "content-signature-2.cdn.mozilla.net",
"application_layer_protocol_negotiation": [
"h2",
"http/1.1"
],
"session_ticket": ""
}
},
"src_ip": "10.0.2.15",
"dst_ip": "13.249.64.25",
"protocol": 6,
"src_port": 32972,
"dst_port": 443,
}
Analysis
There are two methods to invoke mercury's analysis functionality. The first operates on the full hex packet:
libmerc.analyze_packet(bytes.fromhex(hex_packet))
{
"tls": {
"client": {
"server_name": "content-signature-2.cdn.mozilla.net"
}
},
"fingerprint_info": {
"status": "labeled",
"type": "tls",
"str_repr": "tls/1/(0303)(13011303...)[(0000)...]"
},
"analysis": {
"process": "firefox",
"score": 0.9992411956652674,
"malware": false,
"p_malware": 8.626882751003134e-06
}
The second method operates directly on the data features (network protocol fingerprint string and destination context):
libmerc.perform_analysis('tls/1/(0303)(13011303...)[(0000)...]', 'content-signature-2.cdn.mozilla.net', '13.249.64.25', 443)
{
"fingerprint_info": {
"status": "labeled"
},
"analysis": {
"process": "firefox",
"score": 0.9992158715704546,
"malware": false,
"p_malware": 8.745628825189023e-06
}
}
Static functions
Parsing base64 representations of certificate data:
b64_cert = 'MIIJRDC...'
mercury.parse_cert(b64_cert)
output:
{
"version": "02",
"serial_number": "00eede6560cd35c0af02000000005971b7",
"signature_identifier": {
"algorithm": "sha256WithRSAEncryption"
},
"issuer": [
{
"country_name": "US"
},
{
"organization_name": "Google Trust Services"
},
{
"common_name": "GTS CA 1O1"
}
],
...
Parsing base64 representations of DNS data:
b64_dns = '1e2BgAAB...'
mercury.parse_dns(b64_dns)
output:
{
"response": {
"question": [
{
"name": "live.github.com.",
"type": "AAAA",
"class": "IN"
}
],
...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for mercury_python-0.1.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80c2b9959362382102b24529818bde16411829bee7bbd4ff09526a3652e13fb3 |
|
MD5 | 5f73f8410d795beae6916e32b2a0e4eb |
|
BLAKE2b-256 | 49ba19974d48da7a4c29e3d5ddd51ab18df5e244b6e395d36dd3eb7c821f6a48 |
Hashes for mercury_python-0.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bacf3441c84e4d52176b91692f2f231221232c4841d5aca19ffbecd82dd6925 |
|
MD5 | 284f613ab5414d4aa74f9ce71cdac570 |
|
BLAKE2b-256 | 97e04c7408dfc815b6843a977a02b442baaad0e2c804523f0c49c33eb8657a0a |
Hashes for mercury_python-0.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c248973391cc1770ff3e7917cc818248cf119a428110b67baac03239bde2b549 |
|
MD5 | 1792ee23031dd495895e44314bb52cb3 |
|
BLAKE2b-256 | be16137c9bded0b99d84b8aae3f7d430831b1fa545f433666d742d6af57294f5 |
Hashes for mercury_python-0.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38df42de66d221062c4cd84a79c966971fe0734977c5b4f4e58ee589eae05b0c |
|
MD5 | 54cc6f72ad456d4ca66a41b1bbf62e2c |
|
BLAKE2b-256 | c6c2abc1fd629c2666583558643ca4d281e1c59dd229f0fcc6758574145bc35b |
Hashes for mercury_python-0.1.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42004180291fec2c8546bd08059229a55b56e6535fb855b89044e18aa28c725b |
|
MD5 | 4d3eddf8b1772a20ee27d5a2281d765b |
|
BLAKE2b-256 | 3ccf1d962065ad3f9090d38458bb4ecfe187948ee3b3218b9fb6b863735498ff |
Hashes for mercury_python-0.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03a372d6a3e05588ab0162edc987cab17a043831a978638931aafa6f3ee16704 |
|
MD5 | 310ba5fb545619f3e0836e412588e79d |
|
BLAKE2b-256 | 91fc0ab609432db2654fd8f567dab52d86bf60665db5fbaa102da526d3aac3c7 |
Hashes for mercury_python-0.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 317174436d70198dc9dfee15d808accb917e1baa7bc6bbf31f2dd017233a4416 |
|
MD5 | 3399caa84a752ad31aa5cb5e3eb50420 |
|
BLAKE2b-256 | fb92214b9f026f6f8f2c1a2138998448efbdfa9c234ec2b8ea349514a703d892 |
Hashes for mercury_python-0.1.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e86924edfb25557242666b89bd1f4db76b002ec6ebfe94f1d58105c9da0bec9e |
|
MD5 | bda1c1f3b8052e4c65df2c88a5d51ba0 |
|
BLAKE2b-256 | 484d2e0aa52ca9560949cbe9df10b87b3bbd1d6c3956b7e24d2106fa8a629951 |
Hashes for mercury_python-0.1.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5750df54a22640096b3631bfc63c588aa31cbe5f994b3112c70dd4c677978d80 |
|
MD5 | 5b134a2e34fd59cc08d9f01aeee6d746 |
|
BLAKE2b-256 | 8693340b943ac3f32fdf484dc5937b3377d4e241e1250474b99718c20ff60feb |
Hashes for mercury_python-0.1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c2f6ebb0aa5f93afe92b2cc266e50f7c5264e02fff0e79a5353f2c32d90c340 |
|
MD5 | ebdb5f2ef78297c5e4ab66fa9747741a |
|
BLAKE2b-256 | 741a5b350d184f041180f2fbe95c86ae456ae8ca2123be416e9580e623c7e6ba |
Hashes for mercury_python-0.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b223d80113f35ebfcadad936c09397f06b65dab650709abb417fe4aad667f75 |
|
MD5 | cc775b723d0c1d8e376f45a339fb1187 |
|
BLAKE2b-256 | 42a5f8c8688c67c7d51d9e9e7747915fa37ccba3668c120d087a7c44039e2fd6 |
Hashes for mercury_python-0.1.2-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fef9e08c39b8f71d23b7f02b77ca7874ea652491e2764254f7faa052a5ad33e |
|
MD5 | ebaac3b4e080ac45b24a2c849ebbe209 |
|
BLAKE2b-256 | cd4313c6ca9d0c77e6fa66d488a4b539f4eac44f4f65a36f3d3a258fc0e49d80 |
Hashes for mercury_python-0.1.2-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76471d515c4ab4f02f793dc4f981e6de756159df69ca19b03b37297f02486f36 |
|
MD5 | 1a18e94a2a5c32d5e363a305a86f83f3 |
|
BLAKE2b-256 | b75f35da7de975e9104734601acacecfe9f6c5ef8b54132f136e0f8c7236b1eb |
Hashes for mercury_python-0.1.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9f18113cc2dd58fbf2d4777160ee933b8fc29ff45aae65a4ef9b4a75c230913 |
|
MD5 | bebf1365c90d7f8df875c30bd9f91d13 |
|
BLAKE2b-256 | 3fb02a0c9b3849d9dd94341d9f4cad2876f1729e107d9a02f86a18a8e16f8c9e |
Hashes for mercury_python-0.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09251d1830edb8d7148eedfb04d6f8f16a4e4711e2114ee66498e60bb114dd6c |
|
MD5 | 8b10ee926791b303eaf92c628897fed6 |
|
BLAKE2b-256 | e9d9bec8ccddae73e375b65a65a797e36f6833a061be72e3738c69d9a3a6629a |
Hashes for mercury_python-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eaaa601df9df12529cbdd3b5b3de4fc44e43038c068f0bdca503cb209fe65e05 |
|
MD5 | 2e495d5c3156f521f2103e1f3d4bc06b |
|
BLAKE2b-256 | f7ab766298696ec1b7b6de3b7929164d7bc01ab951f3adc1a891563aaac7e5d8 |
Hashes for mercury_python-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba80963bb9f516f5859071c8620dd06b4115d1764ac061973eedf56ae071c05a |
|
MD5 | f0b13da02f02a688424674ddf4c54a74 |
|
BLAKE2b-256 | b837bce6b48e69e215d1d6830d23e776dd36f24a10703fee49513fd6ef628b46 |
Hashes for mercury_python-0.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51c67c5ad657a467b0869c65eb0ecbe8e07eb7ea1bc23f1c34e92b4561cd2b92 |
|
MD5 | e96de17a764ccbaa8c01f54cafb9bd6c |
|
BLAKE2b-256 | f7291c2ebcb7615ebfbd5dea5c12860d1711d8b1b1b7f81ab1bddc31f2685774 |
Hashes for mercury_python-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e081c56ae4bad6d77710e3247f596eb7cd1afcffa36db311bcd2e20cfd6bdaf9 |
|
MD5 | 3c41b332a5c0080192a8afb064163b33 |
|
BLAKE2b-256 | 0c2d7c840ce5332f1b7ab0ae891be2016b41399bf393a7df9222acfbfca5994d |
Hashes for mercury_python-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54d8773e4631eeeb3894a1aa13f8b62b95a8e0d6d1cb0fc40a97b42c24c4c703 |
|
MD5 | a20c88380ffacb3da1116824c43e19f5 |
|
BLAKE2b-256 | 2808660d1edb9eb1c3014d3199a5925926a0289dc3a5d0d923c6299c306bd96c |
Hashes for mercury_python-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9dd6629d2d68b6616912b05b5e034d47fc2f2cea1eb56a3cd83793ed020448a7 |
|
MD5 | 3fcc7d1c6d49aa30b3cf5e5d47129e9c |
|
BLAKE2b-256 | fd01d933fd66d98b1baccb75366288a7ef5a6410f2f6545d2e628c7427ebdd0f |
Hashes for mercury_python-0.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aea92c8f73b23935b187f4b41bfeaf6563dd7db4d6d3daa3d47526e12a72437c |
|
MD5 | 6a47ac78321e48dca1387eb0266b3c47 |
|
BLAKE2b-256 | 97b3eb9e90438565b03bdbd1f573326d75b1e9b6319835cd396d92bf01ef6656 |
Hashes for mercury_python-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12853e24ae751d61ec4628dbca6739a5376e05071786437804216fe6b845bfb0 |
|
MD5 | 993e9d78448583c5e106ae295d68a4ea |
|
BLAKE2b-256 | 750ff1455a6e1443702c048869853598ce9ea486feeb97c9f55e2ef537c162bd |
Hashes for mercury_python-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10f2ef7ca1a524a73c3ff81e83564fa7e17c9d91290006a290d4dcc96df88db2 |
|
MD5 | 3919db1b7c8564220a58e73609b88d9a |
|
BLAKE2b-256 | 1e0c1b177834612762f48c2733588db75c829dfe8c48c4e43a5dafe3bd810c7a |
Hashes for mercury_python-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58dfd74a7fb8b744eed6bdbe56fe0e550db0c7ee27132bafaaef4c1f7665845d |
|
MD5 | f00ff9d14764f76399fe377500bdae48 |
|
BLAKE2b-256 | ee43840f85ace3566ea01d45bc190d2aa17ffc595c587dd453b7fb71277a889a |
Hashes for mercury_python-0.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c4fcb9ef9ea6c45b42e788a03a0e7b629f58722a0cb1815407d8633c7b6b2a8 |
|
MD5 | 96f09277fd89455a1390d66290e973ad |
|
BLAKE2b-256 | 7d6d9390473f4af7f979331e97c0ffcc1128a84365dc604284b8fcc8466294df |
Hashes for mercury_python-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60b980fa312c3d6c114b717dad457eec3e08779c11777d7a651399394d36eee4 |
|
MD5 | d62992b4ba376edf456697d2fd448d43 |
|
BLAKE2b-256 | f1387b7192dfcb7ce5b275b4e572db8b00727d4adb367a994f27d4ef928eb910 |
Hashes for mercury_python-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b9d6c82e7e2ac15f0d24161a6287e39280569db7f64cdb1f042ce042d7a516b |
|
MD5 | 2ec668893452052375be7faad69ff7ab |
|
BLAKE2b-256 | 5fe4d1892721d55b0e042a34214ca630dce4755e61ee104bfe969b2af3fa49dd |
Hashes for mercury_python-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ddca74d0f93741144e178ee050db86325bb4c62701a61d66bc51899eb5a93e2 |
|
MD5 | 977701cb3f6413f6382d69a645f860d4 |
|
BLAKE2b-256 | cfbfdb58a9f9c8451bf4829050223dfc55ecb1993dfb8b14141aba2e104eb40e |
Hashes for mercury_python-0.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0651f7e0cda549a1f791ad8d223d171d81cef7f62521fb31fc582946ea268c5e |
|
MD5 | cbc543da82c2ff409cf1873f2fa3767a |
|
BLAKE2b-256 | 1b292b5cd9ea0dedf6fafd6240581ef881a24d903a81f1c906f927fb3345ad86 |
Hashes for mercury_python-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e692526e36c2a2253f549fba3e49ac91663d021e7ce0ec4c26df847527bd0eb |
|
MD5 | 9268ce9f174e40981011b77907eb9a12 |
|
BLAKE2b-256 | babf97d28e8908692a0c0ceade321d793fbdcfe3f2fa30208645d8d7bd701fe1 |
Hashes for mercury_python-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46542ec7e37f26ce64ff97487cfca825b5ab5c1a4a4fd9f4f964c19dc5a75071 |
|
MD5 | eac92e15ef5466bbeae239c3e2f9bea9 |
|
BLAKE2b-256 | 47438d8b31199ee4be3ca25f6b03807c08394a25f492cb12e0a1ba7adf802cb7 |
Hashes for mercury_python-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82354364ccfe433f9ce2f8d87416649fb04f69a2b4989cdb078ec8fa3ded7081 |
|
MD5 | 09c5e7e518adae49072f9985352a863b |
|
BLAKE2b-256 | 44e274af9d5ac33e21da490ac7955d0346efd6dfe90820c2c373a059823ca8de |
Hashes for mercury_python-0.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a008b5681a9725f9070ce6f73ff5f0b8263413d192731e4535242702551b89d |
|
MD5 | 5401f6be9c5e28b286b7cf21cfdd9563 |
|
BLAKE2b-256 | a69ea8f06059ceb03ddb86457da47f16b872d807f91e4444fc53d4a940324011 |
Hashes for mercury_python-0.1.2-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3049cd64b0625c3ffc4479c337a3e5654c9776641bfab3d7379a0595906485db |
|
MD5 | 139686e06f1d25bb806c77019af47054 |
|
BLAKE2b-256 | 987b1bc60de01ce5189ca77092be9d92cfe9b2bac9a2aa9f633b583b30cfc20a |
Hashes for mercury_python-0.1.2-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88e92a3fc58f6c04287d22f55d5efd1a0a13ceda81bfab150e5284d3ef0b90f8 |
|
MD5 | 6304430078024715d710545fc44a13a2 |
|
BLAKE2b-256 | 4433822a3a1214ed7f2e4ce1c9a64b706bfa23a35f8731518f7d7e27b527f99c |
Hashes for mercury_python-0.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ce66a447dbd7b324299dbe9c8df86b4f74614463aef0eaf47a78307a9600c43 |
|
MD5 | 3cf8539c6bbb686de60863200d6eadc3 |
|
BLAKE2b-256 | 696938475ebffe6b6e59fb1655f70321376b08ccde0f05fc90b97c7649dbda1f |
Hashes for mercury_python-0.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2b2700f0d011f67e706c7ed4a1fdca41c29fa32f8f3c5e1d03e27294667b91a |
|
MD5 | 545b23c8e826e9d9ae884a78f1596920 |
|
BLAKE2b-256 | faed82c84b2244ecaf2b4733b893337c763184bb11602683d96b68db9e8bd544 |
Hashes for mercury_python-0.1.2-cp36-cp36m-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 480d58ff8cb1fb7987cd344f65b298ce80b78857d7a6fc03e24c305b6001fc52 |
|
MD5 | 1c31957ead6ccc5c12d53417258e6136 |
|
BLAKE2b-256 | dc06515bc9a5227773d465e0609220f0da76e59c61e63ab641186e2be3446a7a |
Hashes for mercury_python-0.1.2-cp36-cp36m-manylinux_2_28_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7c6ca3b2f337176909fdb92c298f168f96b7c0e3594287b0c69dc45c8144471 |
|
MD5 | 44668cac497bc61ba564c0086432d55a |
|
BLAKE2b-256 | cf38f1a4cf3b9b656daab9c2c35907d5002ba3941c6e996c920647c85ae50e88 |
Hashes for mercury_python-0.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd4b44b49939f17d2c0c1248b27b16e33a2dddb371527928b78cb6da868bdc91 |
|
MD5 | 7fdc3e52d225c42c211a621be2530832 |
|
BLAKE2b-256 | 06486e6ac4cea3740c789ce639c0db268cba3f66c388fb9f44711ee74d61437e |
Hashes for mercury_python-0.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 276076fbb6dec871f5f3bf625f861501ab273544600b401d77e7bfb13b363971 |
|
MD5 | 48c9be28bea8ad3a01e2707bb9661eab |
|
BLAKE2b-256 | 19b2dab6beb573a7ad6ea3ba1b4fa0201a683d069eb5945f9c31fb92750aba72 |