# mrshw
Thin, ctypes-based Python bindings for the [mrsh CLI tool](https://github.com/w4term3loon/mrsh). Implements the Bloom-filter–based similarity hashing algorithm originally proposed by Frank Breitinger and Harald Baier in their paper Similarity Preserving Hashing: Eligible Properties and a new Algorithm MRSH-v2 (da/sec Biometrics and Internet Security Research Group, Hochschule Darmstadt). Use Bloom-filter–based fingerprinting directly from Python with minimal overhead.
---
## Installation
Install from PyPI:
```bash
pip install mrshw
```
Or directly from GitHub (tagged release `v0.1.3`):
```bash
pip install git+https://github.com/w4term3loon/mrsh.git@v0.1.3
```
---
## Quickstart
```python
import mrsh
# Generate hash
file_hash = mrsh.hash("file.exe")
binary_hash = mrsh.hash((b"AAAAA", data_name))
similarity_score = mrsh.diff(file_hash, binary_hash)
# Create and compare fingerprints
fp1 = mrsh.Fingerprint("file1.exe")
fp2 = mrsh.Fingerprint("file2.exe")
similarity = fp1.compare(fp2)
# Batch operations
fpl = mrsh.FingerprintList()
fpl.add("file1.exe")
fpl.add("file2.exe")
results = fpl.compare_all(threshold=50)
```
---
## License
* **Wrapper code:** MIT License. See the [LICENSE file](https://github.com/w4term3loon/mrsh/blob/master/bindings/LICENSE) for full terms.
* **Underlying C library:** Apache License 2.0. See its [repository license](https://github.com/w4term3loon/mrsh/blob/master/LICENSE.md).
Raw data
{
"_id": null,
"home_page": "https://github.com/w4term3loon/mrsh",
"name": "mrshw",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "binary, analysis, python, binding, malware, hashing, similarity, detection, security, digital, forensics",
"author": "w4term3loon",
"author_email": "ifkovics.barnabas@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/99/9d/bdf28300f8577b7a9dc230c6c75ee1d76a5022240afcf2b8c63aaad4b923/mrshw-0.1.3.tar.gz",
"platform": null,
"description": "# mrshw\n\nThin, ctypes-based Python bindings for the [mrsh CLI tool](https://github.com/w4term3loon/mrsh). Implements the Bloom-filter\u2013based similarity hashing algorithm originally proposed by Frank Breitinger and Harald Baier in their paper Similarity Preserving Hashing: Eligible Properties and a new Algorithm MRSH-v2 (da/sec Biometrics and Internet Security Research Group, Hochschule Darmstadt). Use Bloom-filter\u2013based fingerprinting directly from Python with minimal overhead.\n\n---\n\n## Installation\n\nInstall from PyPI:\n\n```bash\npip install mrshw\n```\n\nOr directly from GitHub (tagged release `v0.1.3`):\n\n```bash\npip install git+https://github.com/w4term3loon/mrsh.git@v0.1.3\n```\n\n---\n\n## Quickstart\n\n```python\nimport mrsh\n\n# Generate hash\nfile_hash = mrsh.hash(\"file.exe\")\nbinary_hash = mrsh.hash((b\"AAAAA\", data_name))\nsimilarity_score = mrsh.diff(file_hash, binary_hash)\n\n# Create and compare fingerprints\nfp1 = mrsh.Fingerprint(\"file1.exe\")\nfp2 = mrsh.Fingerprint(\"file2.exe\")\nsimilarity = fp1.compare(fp2)\n\n# Batch operations\nfpl = mrsh.FingerprintList()\nfpl.add(\"file1.exe\")\nfpl.add(\"file2.exe\")\nresults = fpl.compare_all(threshold=50)\n```\n\n---\n\n## License\n\n* **Wrapper code:** MIT License. See the [LICENSE file](https://github.com/w4term3loon/mrsh/blob/master/bindings/LICENSE) for full terms.\n* **Underlying C library:** Apache License 2.0. See its [repository license](https://github.com/w4term3loon/mrsh/blob/master/LICENSE.md).\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Python bindings for MRSHv2: a fast, modular similarity digest tool for malware analysis, forensics and much more",
"version": "0.1.3",
"project_urls": {
"Bug Tracker": "https://github.com/w4term3loon/mrsh/issues",
"Documentation": "https://github.com/w4term3loon/mrsh",
"Homepage": "https://github.com/w4term3loon/mrsh",
"Source": "https://github.com/w4term3loon/mrsh"
},
"split_keywords": [
"binary",
" analysis",
" python",
" binding",
" malware",
" hashing",
" similarity",
" detection",
" security",
" digital",
" forensics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cb0088dbde63b039514b0bc3b096099f5a195d568de129dcee997837d9ce0a7e",
"md5": "648521d2aefffc4cf0a3dfd1b0accca9",
"sha256": "8203418fc694e821e3f1160692d0666555dd80d225d110647baf10301e1046f7"
},
"downloads": -1,
"filename": "mrshw-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "648521d2aefffc4cf0a3dfd1b0accca9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 23344,
"upload_time": "2025-09-06T16:21:13",
"upload_time_iso_8601": "2025-09-06T16:21:13.408666Z",
"url": "https://files.pythonhosted.org/packages/cb/00/88dbde63b039514b0bc3b096099f5a195d568de129dcee997837d9ce0a7e/mrshw-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "999dbdf28300f8577b7a9dc230c6c75ee1d76a5022240afcf2b8c63aaad4b923",
"md5": "4285cb9a655da2d4a7bf59f54854411b",
"sha256": "219db48452adf26a31e84a288c6c170d22a110696eaf4b17d361569e7d6060e2"
},
"downloads": -1,
"filename": "mrshw-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "4285cb9a655da2d4a7bf59f54854411b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 24218,
"upload_time": "2025-09-06T16:21:14",
"upload_time_iso_8601": "2025-09-06T16:21:14.782750Z",
"url": "https://files.pythonhosted.org/packages/99/9d/bdf28300f8577b7a9dc230c6c75ee1d76a5022240afcf2b8c63aaad4b923/mrshw-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-06 16:21:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "w4term3loon",
"github_project": "mrsh",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "mrshw"
}