{"id":23707230,"url":"https://github.com/wowdev/TACTSharp","last_synced_at":"2025-09-03T13:31:44.558Z","repository":{"id":269484292,"uuid":"907240372","full_name":"wowdev/TACTSharp","owner":"wowdev","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-09T08:13:57.000Z","size":295,"stargazers_count":4,"open_issues_count":1,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-08-16T18:16:11.306Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wowdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2024-12-23T06:30:58.000Z","updated_at":"2025-07-09T08:14:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"e1448801-200d-45fc-a3a7-09e38363e0f5","html_url":"https://github.com/wowdev/TACTSharp","commit_stats":null,"previous_names":["marlamin/tactindextestcsharp","marlamin/tactsharp","wowdev/tactsharp"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/wowdev/TACTSharp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wowdev%2FTACTSharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wowdev%2FTACTSharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wowdev%2FTACTSharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wowdev%2FTACTSharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wowdev","download_url":"https://codeload.github.com/wowdev/TACTSharp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wowdev%2FTACTSharp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273452648,"owners_count":25108445,"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","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-12-30T16:33:44.391Z","updated_at":"2025-09-03T13:31:44.549Z","avatar_url":"https://github.com/wowdev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TACTSharp\nLibrary utilizing memory-mapped file access to speed up initial loading and have lower RAM usage compared to other libraries that load WoW's CASC storage. Made so Marlamin can extract things on their NAS without it getting resource starved.  \nLargely based on @bloerwald's memory-mapped file reading implementations.\n\n## Current features\n- Faster build loading time and lower memory footprint compared to other solutions.\n- Loads both online and local World of Warcraft installations.\n- Loading of game files by ekey, ckey, ID or by name from install/root manifest or listfile (only loaded if name not in install/root).\n- Ability to use a folder with CDN-structured files as a data source (similar to local WoW installs).\n\n## TODO for 1.0\n- Stabilize and lock-in API usage.\n- Support for encrypted products.\n- Support for specifying install tag priority (so e.g. the exe for WoW China can be extracted).\n- Test run on all available WoW CDN data to data starting at 6.0.\n- Automated tests.\n\n## Not planned\nThis may change in the future, but this is currently **NOT** planned to be part of 1.0.\n- Support for other games than WoW.\n- GUI tool.\n\n# TACTTool\nCLI tool using the library for simple file extraction. \n\n## Usage\n```\nDescription:\n  TACTTool - Extraction tool using the TACTSharp library\n\nUsage:\n  TACTTool [options]\n\nOptions:\n  -b, --buildconfig \u003cbuildconfig\u003e  Build config to load (hex or file on disk)\n  -c, --cdnconfig \u003ccdnconfig\u003e      CDN config to load (hex or file on disk)\n  -p, --product \u003cproduct\u003e          TACT product to load [default: wow]\n  -r, --region \u003cregion\u003e            Region to use for patch service/build selection/CDNs [default: us]\n  -l, --locale \u003clocale\u003e            Locale to use for file retrieval [default: enUS]\n  -m, --mode \u003cmode\u003e                Input mode: list, ekey (or ehash), ckey (or chash), id (or fdid), name (or filename)\n  -i, --inputvalue \u003cinputvalue\u003e    Input value for extraction\n  -o, --output \u003coutput\u003e            Output path for extracted files, folder for list mode (defaults to 'extract'\n                                   folder), output filename for other input modes (defaults to input value as filename)\n  -d, --basedir \u003cbasedir\u003e          WoW installation folder to use as source for build info and read-only file cache (if\n                                   available)\n  -cd, --cdndir \u003ccdndir\u003e           CDN folder to use as read-only file cache (if available)\n  --cdns \u003ccdns\u003e                    Additional CDN hostnames to use, separated by commas (only specify hostnames)\n  --version                        Show version information\n  -?, -h, --help                   Show help and usage information\n```\n\n### Examples\n#### FileDataID\nYou can use either `fdid` or `id` modes to extract specific FileDataIDs from the client.\n- `TACTTool -m fdid -i 53188` extracts FileDataID 53188 from Retail WoW to `./53188`\n- `TACTTool -m fdid -i 53188 -o \"warrior terrace.mp3\"` extracts FileDataID 53188 from Retail WoW to `./warrior terrace.mp3`\n\n#### Filename\nYou can use either `name`, `filename` or `install` modes to extract files from the `install` manifest based on filename. \n- `TACTTool -m name -i Wow.exe` extracts Wow.exe from Retail WoW `./Wow.exe `\n- `TACTTool -p wowt -m name -i WowT.exe` extracts WowT.exe from WoW PTR to `./WowT.exe `\n\n#### EKey/CKey\nYou can use either `ekey` or `ehash` to extract files by their EKey or you can use `ckey` or `chash` to extract files by their CKey.\n- `TACTTool -m ckey -i 7fa7faa0fdece01a838af3c4005f7f69` extracts CKey `7fa7faa0fdece01a838af3c4005f7f69` to `./7fa7faa0fdece01a838af3c4005f7f69`\n- `TACTTool -m ckey -i 7fa7faa0fdece01a838af3c4005f7f69 -o BattlePetAbilityEffect.db2` extracts CKey `7fa7faa0fdece01a838af3c4005f7f69` to `./BattlePetAbilityEffect.db2`\n\n#### List\n- `TACTTool -m list -i pathtolist.txt` will read `pathtolist.txt` and extract files to the `extract` folder in the current working directory.\n- `TACTTool -m list -i pathtolist.txt -o D:/myoutput` will read `pathtolist.txt` and extract files to the `D:/myoutput` folder.\n\nPut files to extract in a plain text file in the below format. Similar modes as above are supported. Not giving a mode or FDID assumes it is using the `filename` mode. An additional part can be used to set the output filename.  \nThese are all valid lines:\n```\ninstall;WoW.exe\ninstall;Wow.exe;Wow-but-I-wanted-to-rename-it.exe\nWoW.exe\nWow.exe;Wow-maybe-this-name-is-better.exe\nckey;7fa7faa0fdece01a838af3c4005f7f69\nckey;7fa7faa0fdece01a838af3c4005f7f69;BattlePetAbilityEffect.db2\nekey;00b797ea435427185f33466495855656\nekey;00b797ea435427185f33466495855656;SomeFile.bytes\n801575;DBFilesClient/BattlePetAbilityEffect.db2\n801575;BattlePetAbilityEffect.db2\n```\n\n# Support\nOnly tested on WoW, other products not supported.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwowdev%2FTACTSharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwowdev%2FTACTSharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwowdev%2FTACTSharp/lists"}