Konami Mobile Ripping Toolset
A set of tools for ripping music from Konami mobile games
Contents
- nigger.py for niggering konami's website, ripping all remote assets
- fuck.py for fucking encryption on assets
- fuck.cs for fucking encryption on other files (static assets)
- cum.py for gluing artwork, titles and music together
Support
Only tested on jubeat
Technicals/Structure
-
Overview on AssetBundleCryptoStream encryption https://jywhy6.zone/2019/12/21/decrypt-bm2dxum/
-
Static assets are decrypted using fuck.cs with a hardcoded key/iv
-
Original file path (bundlePath) is used for both salt and password
-
PBKDF1 used for derivation (C# implementation) the C# implementation is out of spec and allows salts of arbitrary lengths!
-
AES-128-ECB is used for implementing custom AES-CTR mode. Block counter is used for CTR nonce
-
Assets are distributed encrypted via amazon storage instance
http://d3u9qu1rz2zw6v.cloudfront.net/
-
/sdcard/Android/data/com.konami.android.jubeat/files/ab/ablist.json
- stores list of assets and their original paths (encrypted)
{
"assetBundles": [
{
"bundleName": "playables/preview/music_321201404",
"assetPaths": [
"konami/assetbundles/playables/audio/previews/321201404_preview.wav"
],
"dependencies": [],
"crc": 649798932,
"hash": "5c5044e712f1c4340e673307b42245efc0aeebfa",
"size": 632921,
"expire": "",
"label": "playable_preview_music",
"publishPath": "f/f00f46786073ead6f28282f667371d148d5d26f2"
},
{
"bundleName": "playables/preview/music_321201501",
"assetPaths": [
"konami/assetbundles/playables/audio/previews/321201501_preview.wav"
],
"dependencies": [],
"crc": 2050081105,
"hash": "62882dad67b528ac17d3ad4b776126379cb04a96",
"size": 595706,
"expire": "",
"label": "playable_preview_music",
"publishPath": "1/15979d60adbf2392c771a4f3da4508bd3a4d19b8"
},
]
}
....
- 4 different decryption functions for your pleasure. Fuck konami