mdxfind

Multi-threaded, multi-algorithm hash search engine. Searches wordlists against large hash collections across 1001 hash types simultaneously, using Judy arrays for memory-efficient hash storage and SIM…

Version v1.579 · published 2026-09-06

Downloads

OSArchitectureFileSizeSHA-256
FreeBSDx86-64mdxfind-freebsd-x86_64.tar.gz4.7 MB6ab887fd988936e98a735b3bbcbf31e4276dbdbc46483b203815a45bf84e1e8a
LinuxARM64mdxfind-linux-aarch64.tar.gz3.8 MBcf476f8041a27c6de1a9e31843d41b9bf76b775db7b473b431e464ee9e908c1b
LinuxARMv6mdxfind-linux-arm6.tar.gz3.3 MBfa629fc1d94578ff6c91f215ab4039adeca641fdeb792fe858f86d17e084c797
LinuxARMv7mdxfind-linux-arm7.tar.gz3.2 MBed8d7363597030405a573974776844af982bee7d03ca1e115cbc6fc3f6e88848
Linuxx86 (32-bit)mdxfind-linux-i686.tar.gz3.2 MBb42e74315c8bddf29e1f76519984b096b0b111a5ddb587bc003297759e49b26c
LinuxPOWER (ppc64le)mdxfind-linux-ppc64le.tar.gz4.0 MB70a8c6e03e2d6ac26951a78d64b6ee083eb5ca6cb840369178c5da9654864c0e
Linuxx86-64mdxfind-linux-x86_64.tar.gz4.0 MB259e635ea596ddd6a4527e72f9acbb64c11a4620815440e1c4f0f47197d2f7ae
macOSuniversal (Intel + Apple silicon)mdxfind-macos-universal.tar.gz7.3 MB94290d5bc1e49596f70c8567321bd3b85d05779a8edb709674347b010d2c9257
WindowsARM64mdxfind-windows-arm64.zip3.7 MB84d39b3d04c8b67406e79fb602120dfd5f09ee2fd37a60e11e7a3e240923fafd
Windowsx86 (32-bit)mdxfind-windows-i686.zip4.1 MB9e250bcaa199374cb40e1e7c591e967a304b9c96059c88ed1510116a31996546
Windowsx86-64mdxfind-windows-x86_64.zip4.7 MBc22c24378bbb979f96110359df5ad89a72196abffff85dcac7517898e9daeaed
Verify before running:
shasum -a 256 -c SHA256SUMS
SHA256SUMS for this release.

Documentation

mdxfind README

Documentation

Release notes

mdxfind v1.579 — PHPBB3MD5 found one hash per salt and silently skipped the rest

Source: mdxfind.c rev 1.578 -> 1.579.

If you hold PHPBB3MD5 (e537) results from an earlier version, re-run them. Any list with more than one hash per salt was under-reported, and the shortfall is invisible in the output: the run completes, reports cracks, and simply stops at the first hash for each salt.

121 hashes, 11 salts, 11 passwords     before: 11 found     now: 121 found

Plain PHPBB3 (e455) was never affected, and no other type is.

What was wrong

The loader files the phpBB3 wrapper's salt under a 12-character key -- $H$, the cost character and the 8-character salt -- so every hash sharing a salt maps to one Typesalt entry, and store_typesalt() counts them as it inserts. PHPBB3MD5 did not get that count. The bootstrap copied PHPBB3's salt keys across and stamped each one with a hardcoded 1. That count is what the per-job salt snapshot decrements, so the salt was retired the moment the first hash matched and every other hash carrying it was never tried.

This is the same failure that was fixed for MSSQL in v1.560. The audit that accompanied that fix cleared twelve other bootstraps on the grounds that each keys Typesalt on the whole stored line, so one entry maps to one hash. That is true for eleven of them and untrue for phpBB3, whose key is the salt.

What changed

The phpBB3 family is now a table:

static const int Phpbb3Family[] = { JOB_PHPBB3, JOB_PHPBB3MD5 };

The loader files each selected member's salts into that member's own Typesalt, counted by the same call that inserts them. There is no copy step and no count produced anywhere that does not know the answer. A future member of the family -- a PHPBB3SHA1, say -- is one entry in that table plus its compute arm.

Three consequences worth knowing:

mdxfind v1.578 — two ways a -F run found nothing and said nothing

Source: mdxfind.c rev 1.576 → 1.578 (1.577 was wording in the revision notes).

Reported by kpd, who lost an evening to a salted list that would not crack until he