88 lines
2.6 KiB
C#
88 lines
2.6 KiB
C#
/*
|
|
* Created by SharpDevelop.
|
|
* User: BITL
|
|
* Date: 6/12/2017
|
|
* Time: 5:10 PM
|
|
*
|
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
|
*/
|
|
using System;
|
|
using System.IO;
|
|
using System.Diagnostics;
|
|
using System.Threading;
|
|
using System.Reflection;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using Microsoft.Win32;
|
|
|
|
namespace RBXPri2Launcher
|
|
{
|
|
/// <summary>
|
|
/// Description of SecurityFuncs.
|
|
/// </summary>
|
|
public class SecurityFuncs
|
|
{
|
|
public SecurityFuncs()
|
|
{
|
|
}
|
|
|
|
public static string Base64Decode(string base64EncodedData)
|
|
{
|
|
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
|
|
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
|
}
|
|
|
|
public static string Base64Encode(string plainText)
|
|
{
|
|
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
|
return System.Convert.ToBase64String(plainTextBytes);
|
|
}
|
|
|
|
public static bool IsBase64String(string s)
|
|
{
|
|
s = s.Trim();
|
|
return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);
|
|
}
|
|
|
|
public static void RegisterURLProtocol(string protocolName, string applicationPath, string description)
|
|
{
|
|
RegistryKey subKey = Registry.ClassesRoot.CreateSubKey(protocolName);
|
|
subKey.SetValue((string) null, (object) description);
|
|
subKey.SetValue("URL Protocol", (object) string.Empty);
|
|
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell");
|
|
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open");
|
|
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open\\command").SetValue((string) null, (object) ("\"" + applicationPath + "\" \"%1\""));
|
|
}
|
|
|
|
public static bool checkClientMD5(string client)
|
|
{
|
|
string rbxexe = "";
|
|
if (GlobalVars.LegacyMode == true)
|
|
{
|
|
rbxexe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + client + "\\RobloxApp.exe";
|
|
}
|
|
else
|
|
{
|
|
rbxexe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + client + "\\RobloxApp_client.exe";
|
|
}
|
|
using (var md5 = MD5.Create())
|
|
{
|
|
using (var stream = File.OpenRead(rbxexe))
|
|
{
|
|
byte[] hash = md5.ComputeHash(stream);
|
|
string clientMD5 = BitConverter.ToString(hash).Replace("-", "");
|
|
if (clientMD5.Equals(GlobalVars.MD5))
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|