Every name found so far, newest first. Targets with the same Hash A and Hash B are the same file, so one find solves them all; they share a row here.
| Name | Found by | Found at | Hash A | Hash B | Targets |
|---|
Everyone who has searched a range or found a name, by how many candidates they've searched - counting completed ranges only, across all their machines. Canaries are small ranges with a name planted in them, now and then handed out instead of real work, to check that a volunteer's machine finds what it should; they count towards nothing else.
| # | Volunteer | Candidates searched | Ranges | Hostnames | Names found | Canaries |
|---|
Blizzard's classic games keep their files in MPQ archives, which don't store file names. Each file is found by hashes of its name instead: one hash picks its slot in the archive's hash table, and two more 32-bit hashes, Hash A and Hash B, confirm that the slot holds the right file. Hashes only work one way, so a name can't be read back out of them. Some names can be caught by watching which files a game opens, but archives are full of files the game never opens at all, but that might still be of interest to understand how the games were developed.
Later archives ship a list of their own file names, the (listfile) - complete in Diablo II and Warcraft III,
but missing or covering only a small part of the files in Diablo, StarCraft, Brood War and Warcraft II Battle.net Edition.
For those, the only way to get a name back is to guess it: generate candidate names, hash each one, and compare against
the stored Hash A and Hash B. That's namebreaking.
Guessing blind is tough, but the archives give plenty of clues. Files were usually packed in batches, so neighbours in
an archive tend to share a directory and a file type; a file's decrypted contents give away its type, and so its
extension; and many names come in numbered series or share a leading part. That can sometimes pin down everything but a
few characters in the middle - a directory like REZ\ and an extension like .WAV are known,
and only the part in between is searched.
That's what this coordinator is for. It splits each target, one unknown name, into ranges of candidates and
hands them out to volunteers running namebreak on their GPUs. The Targets tab shows how far each target has
come, who searched what, and the name, once it's found; the Matches tab lists every name found so far; and the
Volunteers tab shows who has put in the most work.