public static void OnConnect(string url, int port) { try { ProtectLoader.Enabled = false; ProtectLoader.NetCrypt = null; ProtectLoader.EncryptionKey = null; ProtectLoader.Debug = Environment.CommandLine.Contains("-debug"); ProtectLoader.Netlog = Environment.CommandLine.Contains("-netlog"); ProtectLoader.NetClient = new NetLink.Network(url, port); if (ProtectLoader.NetClient.Connected) { ProtectLoader.NetClient.SendPacket(NetLink.Network.PacketType.Firstpass, NetLink.Network.PacketFlag.None, null); ProtectLoader.NetPacket = ProtectLoader.NetClient.Receive(2000L); if (ProtectLoader.NetPacket.Received && ProtectLoader.NetPacket.Type == NetLink.Network.PacketType.Response && (byte)(ProtectLoader.NetPacket.Flags & NetLink.Network.PacketFlag.Compressed) == 1) { ProtectLoader.Enabled = ProtectLoader.NetPacket.Read <bool>(); if (ProtectLoader.NetPacket.Length > 0L && ProtectLoader.Enabled) { ProtectLoader.Encryption = ProtectLoader.NetPacket.Read <bool>(); byte[] array; string file = ProtectLoader.NetPacket.GetFile(out array); if (file.Equals("RustProtect.Core", StringComparison.CurrentCultureIgnoreCase)) { try { if (array != null && array.Length > 0 && Method.Initialize(Assembly.Load(array))) { object[] args = new object[] { url, port, array }; Method.Invoke("RustProtect.Protection.Initialize", args); if (ProtectLoader.Encryption) { ProtectLoader.EncryptionKey = Method.Invoke("RustProtect.Protection.EncryptionKey").AsByteArray; } if (ProtectLoader.EncryptionKey != null && ProtectLoader.EncryptionKey.Length == 64) { ProtectLoader.NetCrypt = new Network.NetEncryption(EncryptionKey); } ProtectLoader.Enabled = true; } } catch (Exception) { ProtectLoader.Enabled = false; } } } } ProtectLoader.NetClient.Dispose(); } } catch (Exception ex) { UnityEngine.Debug.LogError(ex.ToString()); } }
public static void Initialize(string url, int port, byte[] assembly_bytes) { string_1 = url; int_0 = port; if (!Process32.IsRunAsAdministrator) { UnityEngine.Debug.LogError(Class3.smethod_10(0x11cc)); UnityEngine.Debug.LogError(Class3.smethod_10(0x1288)); UnityEngine.Debug.LogError(Class3.smethod_10(0x1316)); UnityEngine.Debug.LogError(Class3.smethod_10(0x11cc)); } else { if (ProtectLoader.Debug) { UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x13a6), url, Class3.smethod_10(840), port })); } Steam_ID = ClientConnect.Steam_GetSteamID(); Username = Marshal.PtrToStringAnsi(ClientConnect.Steam_GetDisplayname()); string_3 = hardware_0.String_0; string_4 = Application.systemLanguage.ToString(); if (ProtectLoader.Debug) { UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x13fe), Steam_ID, Class3.smethod_10(0x1416), Username, Class3.smethod_10(0x1430), string_4, Class3.smethod_10(0x144a), string_3 })); } EncryptionKey = new SHA512CryptoServiceProvider().ComputeHash(assembly_bytes); network_0 = new NetLink.Network(string_1, int_0); if (ProtectLoader.Debug) { UnityEngine.Debug.Log(Class3.smethod_10(0x1468) + network_0.Connected.ToString()); } if ((network_0.Connected && (string_3 != null)) && (string_3.Length == 0x20)) { Assembly[] assemblies = Assemblies; NetLink.Network.Packet packet = new NetLink.Network.Packet(NetLink.Network.PacketType.Firstpass, NetLink.Network.PacketFlag.Compressed, null); packet.Write <ushort>(MessageType.Connect); packet.Write <ulong>(Steam_ID); packet.Write <string>(Username); packet.Write <string>(string_3); packet.Write <int>(assemblies.Length); foreach (Assembly assembly in assemblies) { packet.Write <string>(assembly.GetName().Name); } network_0.Send(packet); packet_0 = network_0.Receive(0x7d0L); if (ProtectLoader.Debug) { UnityEngine.Debug.Log(Class3.smethod_10(0x1496) + packet_0.Received.ToString()); } if ((packet_0.Received && (packet_0.Type == NetLink.Network.PacketType.Response)) && packet_0.Flags.Has <NetLink.Network.PacketFlag>(NetLink.Network.PacketFlag.Compressed)) { bool_0 = packet_0.Read <bool>(); int num2 = packet_0.Read <int>(); verifyFile_0 = new VerifyFile[num2]; for (int i = 0; i < num2; i++) { verifyFile_0[i] = new VerifyFile { Filename = packet_0.Read <string>(), Filesize = packet_0.Read <long>() }; } if (ProtectLoader.Debug) { UnityEngine.Debug.Log(Class3.smethod_10(0x14c2) + num2); } gameObject_0 = new GameObject(typeof(Protection).FullName); gameObject_0.AddComponent <Protection>(); gameObject_0.AddComponent <RustProtect.Snapshot>(); return; } } network_0.Dispose(); } }