{"id":20811263,"url":"https://github.com/mlgmxyysd/ddlc-plus-asset-decrypter","last_synced_at":"2025-05-07T09:25:40.008Z","repository":{"id":107830562,"uuid":"384675886","full_name":"MlgmXyysd/DDLC-Plus-Asset-Decrypter","owner":"MlgmXyysd","description":"Doki Doki Literature Club Plus Asset Decrypter","archived":false,"fork":false,"pushed_at":"2021-10-17T14:56:23.000Z","size":23,"stargazers_count":21,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T08:38:46.998Z","etag":null,"topics":["hacktoberfest","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MlgmXyysd.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}},"created_at":"2021-07-10T10:56:16.000Z","updated_at":"2024-12-25T22:46:52.000Z","dependencies_parsed_at":"2024-07-26T00:45:32.804Z","dependency_job_id":null,"html_url":"https://github.com/MlgmXyysd/DDLC-Plus-Asset-Decrypter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MlgmXyysd%2FDDLC-Plus-Asset-Decrypter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MlgmXyysd%2FDDLC-Plus-Asset-Decrypter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MlgmXyysd%2FDDLC-Plus-Asset-Decrypter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MlgmXyysd%2FDDLC-Plus-Asset-Decrypter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MlgmXyysd","download_url":"https://codeload.github.com/MlgmXyysd/DDLC-Plus-Asset-Decrypter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252849393,"owners_count":21813805,"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":["hacktoberfest","php"],"created_at":"2024-11-17T20:39:13.041Z","updated_at":"2025-05-07T09:25:40.000Z","avatar_url":"https://github.com/MlgmXyysd.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DDLC Plus Asset Decrypter\n![Version: 1.1](https://img.shields.io/badge/Version-1.1-brightgreen?style=for-the-badge)\n\nDoki Doki Literature Club Plus Asset Decrypter\n\nUsed to decrypt encrypted Streaming Asset Bundle files (*.cy) in DDLC-Plus.\n\n## How to use\n1. Download and install PHP for your system from the [official website](https://www.php.net/downloads).\n2. Open the terminal and use PHP interpreter to execute the [script](ddlcpcydec.php) with the usage.\n3. Wait for the script to run.\n4. Use [Perfare/AssetStudio](https://github.com/Perfare/AssetStudio/) or other tools to unpack the decrypted asset file.\n\n## Changelog\n- v1.1:\n    - Split file into 10M cache to speed up the decryption process\n- v1.0:\n    - First ver\n\n## TO-DOs\n- v1.3:\n    - Use multiple threads to speed up the decryption process (Requires pthread extension)\n- v1.2:\n    - Iterate through paths to decrypt all files\n\n## Workaround\nThe game has been cleared and I want to get its wallpaper and new music.\n\nWhen I got the file, I found that its header is the same, but in an unknown format. By consulting the C# code, the game calls the regular AssetBundles load method. Nothing related to decryption was found in the C# code. I started to disassemble the native PE program and also found no code for decryption.\n\nSo I seemed to be stuck in a conundrum. I started to guess the encryption method, and the common ones are AES and XOR. But I didn't find any AES decryption method needed, so I ruled it out. Then I turned to XOR, starting by first guessing the key in a loop from 0 to 100.\n\nFortunately, the UnityFS file header and the Unity3D engine version were successfully decrypted when the XOR key was 40. By comparing it with StreamingAssets from other Unity3D powered games, I was convinced that this was the normally file.\n\nUnpacked it using AssetStudio, everything worked fine and I got the wallpaper and music I wanted.\n\nThere is a saying in Chinese called \"暴力出奇迹\". Great discoveries require bold guesses, and often they work. :)\n\n## Why do I use PHP\nSimply, I hate Python syntax.\n\nAs an interpretive language, PHP has a friendly syntax similar to that of other languages and is easy to use.\n\nIn addition, ~~PHP is the best language in the world and does not accept any refutation~~. LMAO\n\n## License\nThe project is open source under [Apache License v2.0](LICENSE). All rights reserved for script author [MlgmXyysd](https://github.com/MlgmXyysd/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlgmxyysd%2Fddlc-plus-asset-decrypter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlgmxyysd%2Fddlc-plus-asset-decrypter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlgmxyysd%2Fddlc-plus-asset-decrypter/lists"}