mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-12 15:04:36 +01:00
update to game version g122.8.20c
This commit is contained in:
@@ -10,9 +10,12 @@ namespace ProtobufViewUtil
|
||||
{
|
||||
Console.WriteLine("Hello, World!");
|
||||
|
||||
ResGetMainQuestData s = new ResGetMainQuestData();
|
||||
var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\getmainquestdata-ch1complete2");
|
||||
StaticDataPackResponse s = new StaticDataPackResponse();
|
||||
var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\staticdatanew");
|
||||
s.MergeFrom(inn);
|
||||
Console.WriteLine("salt1: " + Convert.ToBase64String(s.Salt1.ToArray()));
|
||||
Console.WriteLine("salt2: " + Convert.ToBase64String(s.Salt2.ToArray()));
|
||||
Console.WriteLine("sha: " + Convert.ToBase64String(s.Sha256Sum.ToArray()));
|
||||
Console.WriteLine(s.ToString());
|
||||
var outt = s.ToByteArray();
|
||||
|
||||
|
||||
@@ -18,7 +18,11 @@ After that, add the following to your C:\Windows\System32\hosts or /etc/hosts fi
|
||||
255.255.221.21 sentry.io
|
||||
```
|
||||
|
||||
Run generate_ssl_cert.sh in WSL or linux to generate SSL certificates. Make sure to trust myCA.pfx
|
||||
Run generate_ssl_cert.sh in WSL or linux to generate SSL certificates. Make sure to trust myCA.pfx. Append the following (with your CA cert pem that you generated) to Launcher/intl_service/cacert.pem and NIKKE/game/nikke_Data/Plugins/cacert.pem
|
||||
|
||||
Good SSL CA
|
||||
===============================
|
||||
<ca cert>
|
||||
|
||||
As Nikke encrypts packet data, you also need to replace C:\NIKKE\NIKKE\game\nikke_Data\Plugins\x86_64\sodium.dll from the one you built.
|
||||
|
||||
|
||||
@@ -142,7 +142,9 @@ namespace nksrv.LobbyServer
|
||||
Icon = user.ProfileIconId,
|
||||
IconPrism = user.ProfileIconIsPrism,
|
||||
Nickname = user.Nickname,
|
||||
Usn = (long)user.ID
|
||||
Usn = (long)user.ID,
|
||||
LastActionAt = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
|
||||
|
||||
};
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace nksrv.LobbyServer.Msgs.Misc
|
||||
var req = await ReadData<ResourceHostRequest>();
|
||||
|
||||
var r = new ResourceHostResponse();
|
||||
r.BaseUrl = "https://cloud.nikke-kr.com/prdenv/121-b0630db21d/{Platform}";
|
||||
r.BaseUrl = "https://cloud.nikke-kr.com/prdenv/122-b0255105e0/{Platform}";
|
||||
|
||||
WriteData(r);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
response.SynchroLv = 1;
|
||||
response.OutpostBattleLevel = user.OutpostBattleLevel;
|
||||
response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000, BattleTime = battleTimeMs };
|
||||
response.CommanderRoomJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 8989001, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom };
|
||||
response.LobbyJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 8989001, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.Lobby };
|
||||
|
||||
// Add default slot data
|
||||
if (user.RepresentationTeamData.Slots.Count == 0)
|
||||
|
||||
23
nksrv/LobbyServer/Msgs/User/GetProfileDecoration.cs
Normal file
23
nksrv/LobbyServer/Msgs/User/GetProfileDecoration.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.User
|
||||
{
|
||||
[PacketPath("/ProfileCard/DecorationLayout/Get")]
|
||||
public class GetProfileDecoration : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqProfileCardDecorationLayout>();
|
||||
|
||||
var r = new ResProfileCardDecorationLayout();
|
||||
r.Layout = new ProfileCardDecorationLayout();
|
||||
r.Layout.BackgroundId = 101002;
|
||||
WriteData(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
int tutorialVersion = item == 1020101 ? 1 : 0; // TODO
|
||||
response.User.Tutorials.Add(new NetTutorialData() { GroupId = groupId, LastClearedTid = item, LastClearedVersion = tutorialVersion });
|
||||
}
|
||||
response.CommanderRoomJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 8989001, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom };
|
||||
response.LobbyJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 8989001, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.Lobby };
|
||||
WriteData(response);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
if (user.ID == (ulong)req.TargetUsn)
|
||||
{
|
||||
response.Data.User = LobbyHandler.CreateWholeUserDataFromDbUser(user);
|
||||
response.Data.LastActionAt = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
22
nksrv/LobbyServer/Msgs/User/GetUserTitle.cs
Normal file
22
nksrv/LobbyServer/Msgs/User/GetUserTitle.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.User
|
||||
{
|
||||
[PacketPath("/lobby/usertitle/get")]
|
||||
public class GetUserTitle : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetUserTitleList>();
|
||||
|
||||
var r = new ResGetUserTitleList();
|
||||
|
||||
WriteData(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
22
nksrv/LobbyServer/Msgs/User/GetUserTitleCounter.cs
Normal file
22
nksrv/LobbyServer/Msgs/User/GetUserTitleCounter.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.User
|
||||
{
|
||||
[PacketPath("/lobby/usertitlecounter/get")]
|
||||
public class GetUserTitleCounter : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetUserTitleCounterList>();
|
||||
|
||||
var r = new ResGetUserTitleCounterList();
|
||||
|
||||
WriteData(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -219,8 +219,8 @@ namespace nksrv
|
||||
""Config"": [
|
||||
{
|
||||
""VersionRange"": {
|
||||
""From"": ""121.8.9"",
|
||||
""To"": ""121.10.2"",
|
||||
""From"": ""122.8.19"",
|
||||
""To"": ""122.8.20"",
|
||||
""PackageName"": ""com.proximabeta.nikke""
|
||||
},
|
||||
""Route"": [
|
||||
@@ -263,8 +263,8 @@ namespace nksrv
|
||||
},
|
||||
{
|
||||
""VersionRange"": {
|
||||
""From"": ""121.8.9"",
|
||||
""To"": ""121.10.2"",
|
||||
""From"": ""121.8.19"",
|
||||
""To"": ""122.8.20"",
|
||||
""PackageName"": ""com.gamamobi.nikke""
|
||||
},
|
||||
""Route"": [
|
||||
|
||||
@@ -222,6 +222,8 @@ message ResGetUserData {
|
||||
int32 resetHour = 35;
|
||||
bool isSimple = 36;
|
||||
NetOutpostBattleTime outpostBattleTime = 37;
|
||||
NetJukeboxBgm lobbyJukeboxBgm = 38;
|
||||
NetJukeboxBgm commanderRoomJukeboxBgm = 39;
|
||||
}
|
||||
|
||||
message ReqGetContentsOpenData {
|
||||
@@ -457,6 +459,8 @@ message ResEnterLobbyServer {
|
||||
repeated NetEquipmentAwakening awakening = 37;
|
||||
repeated NetUserRedeemData redeems = 38;
|
||||
NetOutpostBattleTime outpostBattleTime = 39;
|
||||
NetJukeboxBgm lobbyJukeboxBgm = 40;
|
||||
NetJukeboxBgm commanderRoomJukeboxBgm = 41;
|
||||
}
|
||||
|
||||
message ReqGetMainQuestData {
|
||||
@@ -1757,4 +1761,43 @@ message ReqSetCharacterCostume {
|
||||
int64 csn = 2;
|
||||
int32 costumeId = 3;
|
||||
}
|
||||
message ResSetCharacterCostume {}
|
||||
message ResSetCharacterCostume {}
|
||||
|
||||
message NetUserTitle {
|
||||
int32 userTitleId = 1;
|
||||
bool isNew = 2;
|
||||
}
|
||||
|
||||
message ReqGetUserTitleList {}
|
||||
message ResGetUserTitleList{
|
||||
repeated NetUserTitle userTitleList = 1;
|
||||
}
|
||||
|
||||
message ReqGetUserTitleCounterList{}
|
||||
message ResGetUserTitleCounterList{
|
||||
int32 condition = 1;
|
||||
int32 subCondition = 2;
|
||||
int32 count = 3;
|
||||
}
|
||||
|
||||
message ReqProfileCardDecorationLayout {
|
||||
int64 targetUsn = 1;
|
||||
}
|
||||
|
||||
message StickerPlacement {
|
||||
int32 stickerId = 1;
|
||||
int32 layer = 2;
|
||||
float normalizedX = 3;
|
||||
float normalizedY = 4;
|
||||
float rotationRadian = 5;
|
||||
float scale = 6;
|
||||
}
|
||||
|
||||
message ProfileCardDecorationLayout {
|
||||
bool showCharacterSpine = 1;
|
||||
int32 backgroundId = 2;
|
||||
repeated StickerPlacement stickerPlacements = 3;
|
||||
}
|
||||
message ResProfileCardDecorationLayout {
|
||||
ProfileCardDecorationLayout layout = 1;
|
||||
}
|
||||
@@ -21,12 +21,12 @@ namespace nksrv.StaticInfo
|
||||
public class StaticDataParser
|
||||
{
|
||||
// Extracted from staticinfo api call
|
||||
public const string StaticDataUrl = "https://cloud.nikke-kr.com/prdenv/121-c5e64b1a1b/staticdata/data/qa-240620-05b-p1/307748/StaticData.pack";
|
||||
public const string Version = "data/qa-240620-05b-p1/307748";
|
||||
public const int Size = 11575712;
|
||||
public static byte[] Sha256Sum = Convert.FromBase64String("PBcDa3PoHR2MJQ+4Xc3/FUSgkqx2gY25MBJ0ih9FMsM=");
|
||||
public static byte[] Salt1 = Convert.FromBase64String("WqyrQ8MGtzwHN3AGPkqVKyjdfWZjBJXw9K7nGblv/SA=");
|
||||
public static byte[] Salt2 = Convert.FromBase64String("6Gf2jEvAX2mt5OWIxIU5uDdbjKtIc+VgTjKKSLuYnsI=");
|
||||
public const string StaticDataUrl = "https://cloud.nikke-kr.com/prdenv/122-c8cee37754/staticdata/data/qa-240704-07b/311489/StaticData.pack";
|
||||
public const string Version = "data/qa-240704-07b/311489";
|
||||
public const int Size = 11799600;
|
||||
public static byte[] Sha256Sum = Convert.FromBase64String("IkQKRnt2ue9ET5HCJo4JTK8M6XIi86iLGwl7thZFNMs=");
|
||||
public static byte[] Salt1 = Convert.FromBase64String("O5IyNKavbnmnEVqj2CZDLyORctcGFgYKx839PudpDNo=");
|
||||
public static byte[] Salt2 = Convert.FromBase64String("/870A4CG4n3gAGnHNRS4zdo3wBry8CISud+41MVA8sA=");
|
||||
|
||||
// These fields were extracted from the game.
|
||||
public static byte[] PresharedKey = [0xCB, 0xC2, 0x1C, 0x6F, 0xF3, 0xF5, 0x07, 0xF5, 0x05, 0xBA, 0xCA, 0xD4, 0x98, 0x28, 0x84, 0x1F, 0xF0, 0xD1, 0x38, 0xC7, 0x61, 0xDF, 0xD6, 0xE6, 0x64, 0x9A, 0x85, 0x13, 0x3E, 0x1A, 0x6A, 0x0C, 0x68, 0x0E, 0x2B, 0xC4, 0xDF, 0x72, 0xF8, 0xC6, 0x55, 0xE4, 0x7B, 0x14, 0x36, 0x18, 0x3B, 0xA7, 0xD1, 0x20, 0x81, 0x22, 0xD1, 0xA9, 0x18, 0x84, 0x65, 0x13, 0x0B, 0xED, 0xA3, 0x00, 0xE5, 0xD9];
|
||||
@@ -113,6 +113,10 @@ namespace nksrv.StaticInfo
|
||||
|
||||
ZipStream = new MemoryStream();
|
||||
AesCtrTransform(decryptionKey2, iv2, dataMs, ZipStream);
|
||||
|
||||
File.WriteAllBytes("decryptednew.zip", ZipStream.ToArray());
|
||||
ZipStream.Position = 0;
|
||||
|
||||
MainZip = new ZipFile(ZipStream, false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user