Hash files, strings, input streams and network resources in various common algorithms simultaneously
Project description
omnihash
A tiny little tool to hash strings, files, input streams and network resources using various common hashing algorithms.
This is useful during reverse engineering when you know that something is being hashed, but you don’t know what or how. It’s kind of like the opposite of a hash identifier.
Installation
To install omnihash, simply:
pip install omnihash
To install with the SHA3 and Blake2 algorithm plugins:
pip install omnihash[sha3,pyblake2]
Please note that on Windows, those two libraries do not yet exist (as of Aug 2016).
Usage
For strings:
$ omnihash "correct horse battery staple" Hashing string 'correct horse battery staple'.. DSA: abf7aad6438836dbe526aa231abde2d0eef74d42 DSA-SHA: abf7aad6438836dbe526aa231abde2d0eef74d42 MD4: 131adffe1d8712c1b624ba62b5bcf3fd MD5: 9cc2ae8a1ba7a93da39b46fc1019c481 MDC2: b41edfd5e9cb278433a4a5c740898ffb RIPEMD160: 5e708aa85ae8b0d080837c50bd63634d584edc00 SHA: 99add446c4eed3772a92fabe3ab2c56fc2c9a26e SHA1: abf7aad6438836dbe526aa231abde2d0eef74d42 SHA224: 636f080709f287ec5c5ea79442fc4bb914924cd5c6ca8ff84e3410c4 SHA256: c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a SHA384: c24b92449c871f33bbbf1fc1989e5e1037cfa9a3dfdb17947f8172226181e7825ebb4c750763915835bf125a590e05ae SHA512: be5ef7679d88ab9a9045f6267e55f5e5784b4b8cd764b5cd855a5244f91c626953cd46c43d7668873fd6efbd3b221249315580031963472a078781fe046e62ae dsaEncryption: abf7aad6438836dbe526aa231abde2d0eef74d42 dsaWithSHA: abf7aad6438836dbe526aa231abde2d0eef74d42 ecdsa-with-SHA1: abf7aad6438836dbe526aa231abde2d0eef74d42 whirlpool: 8c0e81ff1650da90c70a859319ba923b8807ad26af0940f8562fd62e75878eed13f434ba47860223ac55d92d91a169b3f9a1cbd4f10f3fca1b877088e5675891 SHA3_224: 5ee454bfad2d1e25ba74884af244379d17bf50ef46dbe644e7587fc8 SHA3_256: af9ac3dac56b02f1ea017e7657a9bb7e1778274e31509f134f023e41a5953866 SHA3_384: 5a1caac1441d4d002d6650f558b6bb10593095fe4664496b8f1665f239d923e69f95cbd141c5dcf833770542ff2322e8 SHA3_512: 4b65d7b7acc886f9add07db3a5d42bf0032fe0109a1fd56f623c7093e8a59689f9246918a4f388034ddf393231eaba0742b3dc1840e4556270a729ce56098f35 BLAKE2s: 239dd0a7e138f5fced884939c200b9ed35e092c17cd27f6049a5d0bda9fd7b8b BLAKE2b: 84793833af5cf79ef9548fd505dbb6633e54c1b4ec2c4f577c3a0ae41764e50ce8278ab8f6e0edd3e90ab6ef0914ff0e49329e0703ecc2fb7fdac12a4823fea7
And files:
$ omnihash /etc/hosts Hashing file '/etc/hosts'.. DSA: 0ec93cf2b8000b5b339d0c5435251ad14f85b553 DSA-SHA: 0ec93cf2b8000b5b339d0c5435251ad14f85b553 MD4: 226fb465616a070fd027f8a5db118561 MD5: 8efb3881814e54b95b030ff37012e22a MDC2: 8df8bca5c8dbfc87e9c399aad2c326ac RIPEMD160: f98ef6e7b10b8c4d7e0d129136f42f66163b8767 SHA: 2c8e7f4dade830ae6a4fdc6d20fd4a93b43bbbae SHA1: 0ec93cf2b8000b5b339d0c5435251ad14f85b553 SHA224: 43f81c9b4e15a835a0857ceba586239932210c718e8861b8235e4dff SHA256: 04f186e74288a10e09dfbf8a88d64a1f33c0e698aaa6b75cdb0ac3aba87d5644 SHA384: f7592a8db187f42957834132d964be00266a38b2b1bf5511bb7e636ae13822a4f858b386c11a77f680e34c49ca9cd8c1 SHA512: df9896fc36a18cd04c1a133c3a79a4783456a301b4380e9b30ebe56012708c373456681d6066ad7608f26cbcc147bd171cf57f1f9a6e977bf16295945e32047b dsaEncryption: 0ec93cf2b8000b5b339d0c5435251ad14f85b553 dsaWithSHA: 0ec93cf2b8000b5b339d0c5435251ad14f85b553 ecdsa-with-SHA1: 0ec93cf2b8000b5b339d0c5435251ad14f85b553 whirlpool: 69f0d48f1e134a09dc6172953527c344465d759d02d0a3a932d6b97a57d2e0ca1fba324180a013e84a7e7cd912de1fb6e50deb15d05a56c27f8ec53d58c768c2 SHA3_224: 2a8d5b60d3d6003c25516d110ebd53284d3c669a61e03a81cc756a26 SHA3_256: e40fa76654213ce8fb8e449f5659294fd3f3bb2fa461ff8678e7ea99d94cec1e SHA3_384: 9e8df099fd06ca136ff87c63b17cdd284eaa03558515c35053db41b116bb91419710b948e908e74edddc74ca9cd3b76f SHA3_512: 8158c2f4a2aab1e0abe63ec83711fe3343531f6683c89e5ff539cf8d29eb7bce931443646cd2704a9f1b901436741cc28d230bc58c5e98ed42b676fc15bfa354 BLAKE2s: e84408c7fac52f8436c4f3ba5e4e2abd038e4735a343de471f7c1dc548cd6ddf BLAKE2b: 2c23f27128614351712d3e2851c9c24763499512117ceb55b3f277863880767a11272ec5abe5527a9ae08cdea367264aa31b9160da148c00f732806200076954
And URLs:
$ omnihash https://cryptome.org Hashing content of URL 'https://cryptome.org'.. DSA: f63c8212d4769f2740306d30df6e56e4d773c412 DSA-SHA: f63c8212d4769f2740306d30df6e56e4d773c412 MD4: 2a61fd067f31bc161545e7e6eb08e31f MD5: 12d4aca3c58007350edae822301d7d83 MDC2: fe7acaffad747aa9ab644bd37314b916 RIPEMD160: 1e7b92befcd56f70b90f7a6b5d6b3e8b8c56a3f9 SHA: 124876e226334bfadaf71c00e60f2e77551b140a SHA1: f63c8212d4769f2740306d30df6e56e4d773c412 SHA224: 5af71e96da3d3383ddff0fa308bd7714f91af5873f17f7fa944aa5c0 SHA256: c320ec6af2dc3c1129e238e3d06653cbe6f01d5c791763db4b9dcabe169debc6 SHA384: 0cf01cf20737f91c9736c924ab4cd2c503bfbb055ed630b5fa80d94b598e26a2376c739c4d195e464e2259c0cb4f6313 SHA512: c978e3544a6d4b11ed180463e6916ac562d3c90c007a107205e2f61118e2f3d032caf2053bd4ee0ab5c4a287279d0294dec4663ab2e3ed90e3e7312c2ae69abc dsaEncryption: f63c8212d4769f2740306d30df6e56e4d773c412 dsaWithSHA: f63c8212d4769f2740306d30df6e56e4d773c412 ecdsa-with-SHA1: f63c8212d4769f2740306d30df6e56e4d773c412 whirlpool: c12d0362a5c30aa8848db7e6fd3f13d8bd5094201a89389c0ab24793dbee6733834d03362f6a960816abd450a900c016797996ac46e50af38bb02681054f30e7 SHA3_224: 7bdb6efdc640a25a30dbbf51cc7f22e17f6c1963d871f89506292b35 SHA3_256: 31cb08dadd163c309e7a551e7a8104ea5f935c1933c0e9a4005ee26809958766 SHA3_384: c2257da2c3352c4165acbd3ada334eb0034c0ee514da8609823eb537bd089d8ddde2ef63eead0867208f8c5d10f866b3 SHA3_512: bd36ece65851c5238882d3861343c980f58888cc0057a6ac808e20ef28ce2e8970d1123c88360c13064f3dbd332a10369df6b4be9483a9b8860b9d2156dd3e65 BLAKE2s: f4b0dd61772776ba04a4f0c94975a92acc41eb61ac2745e60b3adb7a08dc88d4 BLAKE2b: c1635df205326331b565959edb4b3b64a81a352ec594c869d35a2373ee8f1b8288e9135c0627b6cc44d54378a4b1f1fb39e124065644b7b9a62f57dd0e16e8ab2c23f27128614351712d3e2851c9c24763499512117ceb55b3f277863880767a11272ec5abe5527a9ae08cdea367264aa31b9160da148c00f732806200076954
Advanced usage
You can also hash items from the standard input like so:
$ cat my_large_file.bin | omnihash
You can pass multiple inputs at any time (ex, omnihash *).
You can force string-hashing (not falling-back to files) with -s.
You may limit the number of algorithms using the -f (“family”) option:
$ oh Hi -f sha2 -f sha5 SHA224: 7d5104ff2cee331a4586337ea64ab6a188e2b26aecae87227105dae1 SHA256: 3639efcd08abb273b1619e82e78c29a7df02c1051b1820e99fc395dcaa3326b8 SHA512: 45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
You can filter for string matches using -m, like so:
$ omnihash "correct horse battery staple" -m 9cc2 Hashing string correct horse battery staple.. MD5: 9cc2ae8a1ba7a93da39b46fc1019c481
You can output in machine readable JSON with -j, like so:
$ omnihash "correct horse battery staple" -j -m 9cc2 { "MD5": "9cc2ae8a1ba7a93da39b46fc1019c481" }
It’s aliased so you can actually just call oh if you’re as lazy as I am.
You can also see the value for various CRC checks by using -c:
$ omnihash "correct horse battery staple" -c Hashing string 'correct horse battery staple'.. DSA: abf7aad6438836dbe526aa231abde2d0eef74d42 DSA-SHA: abf7aad6438836dbe526aa231abde2d0eef74d42 MD4: 131adffe1d8712c1b624ba62b5bcf3fd MD5: 9cc2ae8a1ba7a93da39b46fc1019c481 MDC2: b41edfd5e9cb278433a4a5c740898ffb RIPEMD160: 5e708aa85ae8b0d080837c50bd63634d584edc00 SHA: 99add446c4eed3772a92fabe3ab2c56fc2c9a26e SHA1: abf7aad6438836dbe526aa231abde2d0eef74d42 SHA224: 636f080709f287ec5c5ea79442fc4bb914924cd5c6ca8ff84e3410c4 SHA256: c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a SHA384: c24b92449c871f33bbbf1fc1989e5e1037cfa9a3dfdb17947f8172226181e7825ebb4c750763915835bf125a590e05ae SHA512: be5ef7679d88ab9a9045f6267e55f5e5784b4b8cd764b5cd855a5244f91c626953cd46c43d7668873fd6efbd3b221249315580031963472a078781fe046e62ae dsaEncryption: abf7aad6438836dbe526aa231abde2d0eef74d42 dsaWithSHA: abf7aad6438836dbe526aa231abde2d0eef74d42 ecdsa-with-SHA1: abf7aad6438836dbe526aa231abde2d0eef74d42 whirlpool: 8c0e81ff1650da90c70a859319ba923b8807ad26af0940f8562fd62e75878eed13f434ba47860223ac55d92d91a169b3f9a1cbd4f10f3fca1b877088e5675891 SHA3_224: 5ee454bfad2d1e25ba74884af244379d17bf50ef46dbe644e7587fc8 SHA3_256: af9ac3dac56b02f1ea017e7657a9bb7e1778274e31509f134f023e41a5953866 SHA3_384: 5a1caac1441d4d002d6650f558b6bb10593095fe4664496b8f1665f239d923e69f95cbd141c5dcf833770542ff2322e8 SHA3_512: 4b65d7b7acc886f9add07db3a5d42bf0032fe0109a1fd56f623c7093e8a59689f9246918a4f388034ddf393231eaba0742b3dc1840e4556270a729ce56098f35 BLAKE2s: 239dd0a7e138f5fced884939c200b9ed35e092c17cd27f6049a5d0bda9fd7b8b BLAKE2b: 84793833af5cf79ef9548fd505dbb6633e54c1b4ec2c4f577c3a0ae41764e50ce8278ab8f6e0edd3e90ab6ef0914ff0e49329e0703ecc2fb7fdac12a4823fea7 CRC-16: 0x72bc CRC-16-BUYPASS: 0xed6e CRC-16-DDS-110: 0x929c CRC-16-DECT: 0x73e5 CRC-16-DNP: 0xfd30 CRC-16-EN-13757: 0x2ae7 CRC-16-GENIBUS: 0x493a CRC-16-MAXIM: 0x8d43 CRC-16-MCRF4XX: 0xdbf8 CRC-16-RIELLO: 0xb464 CRC-16-T10-DIF: 0x2510 CRC-16-TELEDISK: 0xdd3d CRC-16-USB: 0x67eb CRC-24: 0xbe455f CRC-24-FLEXRAY-A: 0xad0a8a CRC-24-FLEXRAY-B: 0x5d6e72 CRC-32: 0xcb7e6e10L CRC-32-BZIP2: 0x8f6407fL CRC-32C: 0xbd9d695aL CRC-32D: 0xd42e1822L CRC-32-MPEG: 0xf709bf80L CRC-32Q: 0xafc633bfL CRC-64: 0x98aa19c00b783c4L CRC-64-JONES: 0xc1c681b1fee4d316L CRC-64-WE: 0x41097f04e906dfecL CRC-8: 0xb9 CRC-8-DARC: 0xe1 CRC-8-I-CODE: 0x99 CRC-8-ITU: 0xec CRC-8-MAXIM: 0xec CRC-8-ROHC: 0x31 CRC-8-WCDMA: 0xd6 CRC-AUG-CCITT: 0x301f CRC-CCITT-FALSE: 0xb6c5 JAMCRC: 0x348191efL KERMIT: 0x22cd MODBUS: 0x9814 POSIX: 0x60e7b181L X-25: 0x2407 XFER: 0x8648a5a9L XMODEM: 0x1a5a
More information can be found with --help.
Extension plugins
You may extend the supported hashing algorithms using *setuptools*’s extension machanism, by crafting python ditributions (plugins) that attach to the 'omnihash.plugins' entry_point. Read the sources of this project as example, since the mechanism is already utilized for the “extras” dependencies.
License
MIT license, 2016.
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 Distribution
Built Distribution
File details
Details for the file omnihash-0.12.1.tar.gz
.
File metadata
- Download URL: omnihash-0.12.1.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54418f6ffc05a667857c88fb9f0c28dbacad68493f739934933d01333c5693f4 |
|
MD5 | e044bd7d856809075d475c9f8ca2d33d |
|
BLAKE2b-256 | 39e3b1e086ba78b64872372322b680be31ef401f042167e4b576c40a4b164088 |
File details
Details for the file omnihash-0.12.1-py2.py3-none-any.whl
.
File metadata
- Download URL: omnihash-0.12.1-py2.py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a2db6522365a24aca6e404f5032eede1ab657e43c4cebe446eb548928cb6dae |
|
MD5 | b761f653a6ed65b93ceb92b11c5c5601 |
|
BLAKE2b-256 | 0b83e1961f81e6af70a111440c61c140273afb2721c49c06bdb8b846e23745f2 |