ll-hax-docs/docs/sif2/private-servers.md
2025-02-23 20:24:34 -06:00

61 lines
2 KiB
Markdown

# 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 `<FileHash>/<FileName>.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...