{"id":16854498,"url":"https://github.com/davispuh/wwisenamecracker","last_synced_at":"2026-01-04T12:04:44.371Z","repository":{"id":243501325,"uuid":"812592782","full_name":"davispuh/WwiseNameCracker","owner":"davispuh","description":"Crack Wwise FNV-1 hashes (32-bit and 64-bit) ","archived":false,"fork":false,"pushed_at":"2024-06-09T10:50:07.000Z","size":14,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T11:09:45.461Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davispuh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-09T10:42:32.000Z","updated_at":"2025-01-20T12:57:50.000Z","dependencies_parsed_at":"2024-06-09T12:46:07.052Z","dependency_job_id":"7bf29d16-16d2-4f43-8546-91c96f608731","html_url":"https://github.com/davispuh/WwiseNameCracker","commit_stats":null,"previous_names":["davispuh/wwisenamecracker"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davispuh%2FWwiseNameCracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davispuh%2FWwiseNameCracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davispuh%2FWwiseNameCracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davispuh%2FWwiseNameCracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davispuh","download_url":"https://codeload.github.com/davispuh/WwiseNameCracker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244207668,"owners_count":20416100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T13:55:36.832Z","updated_at":"2026-01-04T12:04:44.258Z","avatar_url":"https://github.com/davispuh.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Wwise name cracker\n\nCrack Wwise FNV-1 hashes (32-bit and 64-bit)\n\n## Build\n\nTo compile cracker (you need [LDC](https://github.com/ldc-developers/ldc) (LLVM D compiler), you can use others but they might not be as performant)\n\n```\n$ ./build.sh\n```\n\nYou can also compile with Profile-Guided Optimizations (PGO) by specifying input arguments that will be used for optimization:\n\n```\n$ ./build.sh sample-hashes.txt sample-names.txt\n```\n\n(You might want to pass `--expand 0` to save time)\n\n## Usage\n\n1. Collect hashes from .pck files\n```\n$ find GamePath -iname '*.pck' -print0 | xargs -0 -I!!! -n 1 quickbms -l wwiser-utils/scripts/wwise_pck_extractor.bms !!! | tr -s '[:blank:]' | cut -d ' ' -f 4 | cut -d '/' -f 2 | cut -d '.' -f 1 | sort -u \u003e hashes.txt\n```\n\n2. Filter name string list - this will drastically reduce search space. You can skip this step if you're using names from `wwiser-utils`.\n```\n$ ./crackNames --filter hashes.txt strings.txt \u003e hash_names.txt\n```\n\n3. Convert from `hash_names.txt` (it contains `hash:name` pairs) to only `names.txt`. This step is required only if you did previous (2nd) step.\n\nNeed to select only most suitable names, but most likely case is there aren't any duplicates.\n```\n$ cut -d ':' -f 2 hash_names.txt | sort \u003e names.txt\n$ uniq -d names.txt\n(should be empty, no output)\n```\n\n4. Crack hashes (you need atleast some names since those will be used as patterns)\n```\n$ ./crackNames hashes.txt names.txt \u003e hash_cnames.txt\n```\n\n(You can use `wwiser-utils/wwnames/GameName (External).txt`)\n\n4. Remove duplicates and update names\n\nYou can inspect them with\n```\n$ cat hash_cnames.txt | cut -d ':' -f 1 | sort | uniq -d | xargs -I!!! grep !!! hash_cnames.txt\n```\n\nThen if there aren't duplicates\n\n```\ncat hash_cnames.txt | cut -d ':' -f 2 | sort -u \u003e \"wwiser-utils/wwnames/GameName (External).txt\"`\n```\n\n\n## Options\n\nThere are several options you can adjust:\n```\n$ ./crackNames --help\nUsage: ./crackNames [options] [hashes.txt] names.txt [names2.txt ...]\n-f    --filter Filter provided names, listing ones that matched hashes\n-p  --patterns Show name patterns\n-g --generated List all generated names\n-j      --json Show internal raw info in JSON\n-e    --expand Increase name search by this amount (default 5)\n-n       --new List only new names without those that already matched\n-r     --roman Recognize Roman Numerals\n-b     --32bit Look for names for 32-bit FNV-1 hashes\n-t   --threads Number of threads to use (default number of CPU cores)\n-h      --help This help information.\n```\n\nUse `--expand` to reduce or increase search space.\n\nAnd if you think there might be Roman Numerals used then pass `--roman` - it will try names with III, IV, V, VI and so on.\n\nYou can also inspect recognized patterns which can be useful for diff'ing:\n```\n$ ./crackNames --patterns names.txt\n%s/voice/chapter%d_%d_soldier%c_%d.wem:{English;Japanese}[0-3][0-15]{A;AB;AC;B;V;W}[201-209]\n%s/voice/archive_%s_%d.wem:{English;Japanese}{guinaifen;player}[1-22]\n```\n\n## Crack event names (32-bit FNV-1 hashes)\n\n// TODO - Need to document it and decide on best workflow\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavispuh%2Fwwisenamecracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavispuh%2Fwwisenamecracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavispuh%2Fwwisenamecracker/lists"}