# Private Servers ## There are 3 servers - EW (ew, why?): [source](https://git.ethanthesleepy.one/ethanaobrien/ew), [mirror](https://github.com/ethanaobrien/ew) - Edelstein (in development): [source](https://github.com/Arasfon/Edelstein) - alive-serv (in development): [source](https://github.com/miraclealive/alive-serv) (I found this while googling) ## Development stuff ### Asset tree Sif2 uses unity assetbundles to distribute assets. They also verify the asset hashes, yayyy!!!! (sarcasm). The initial request containing hashes, filenames, and assetbundle sizes has the name of `387b0126300c54515911bffb6540982d.unity3d` Files are at `/.ext` ### Masterdata The masterdata is shipped under filename `6572ca8348bc566b8cf01d43c4cc1b58.unity3d`. Once extracted, all files were encrypted. You can decrypt the masterdata with the following python function: ```py def decrypt_mst(bin_file): salt = bin_file[16:32] pbk = hashlib.pbkdf2_hmac( "sha1", "3559b435f24b297a79c68b9709ef2125".encode("utf-8"), salt, 1000 ) key = pbk[:16] iv_length = bin_file[32] # = 16 iv = bin_file[36:36 + iv_length] data = bin_file[36 + iv_length:] cipher = Cipher( algorithms.AES(key), modes.CBC(iv), backend=default_backend() ) decryptor = cipher.decryptor() decrypted = decryptor.update(data) + decryptor.finalize() return decrypted[:-decrypted[-1]] ``` All files are then binary serialized. I'll document that part later. Maybe... ### Modification Please see the [SIF2 asset modification repository](https://git.ethanthesleepy.one/ethanaobrien/sif2-asset-modification). You will need to download SIF2 assets for the language of your choice. ### Downloading assets Assets can be found on archive.org: - JP: [https://archive.org/details/lovelive-sif2-jp-assets](https://archive.org/details/lovelive-sif2-jp-assets) - GLOBAL: [https://archive.org/details/lovelive-sif2-gl-assets](https://archive.org/details/lovelive-sif2-gl-assets) ### Changing the server URL TODO...