2022-08-14 14:00:05 +03:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Management;
|
|
|
|
|
|
using System.Security.Cryptography;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
|
|
|
|
namespace VisualPascalABCPlugins
|
|
|
|
|
|
{
|
2022-08-19 13:33:49 +03:00
|
|
|
|
public static class TeacherPluginUtils
|
2022-08-14 14:00:05 +03:00
|
|
|
|
{
|
|
|
|
|
|
public static string ProcessorId()
|
|
|
|
|
|
{
|
2023-02-26 00:12:16 +03:00
|
|
|
|
/*var mbs = new ManagementObjectSearcher("Select ProcessorId From Win32_processor");
|
2022-08-14 14:00:05 +03:00
|
|
|
|
var mbsList = mbs.Get();
|
|
|
|
|
|
foreach (ManagementObject mo in mbsList)
|
|
|
|
|
|
{
|
2022-10-03 20:34:12 +03:00
|
|
|
|
var pId = mo["ProcessorId"];
|
|
|
|
|
|
if (pId != null)
|
|
|
|
|
|
return pId.ToString();
|
|
|
|
|
|
else return "AAAAAAAAAAAAAAAA";
|
2023-02-26 00:12:16 +03:00
|
|
|
|
}*/
|
|
|
|
|
|
return "AAAAAAAAAAAAAAAA";
|
2022-08-14 14:00:05 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static byte[] Encrypt(string src)
|
|
|
|
|
|
{
|
|
|
|
|
|
var ae = Aes.Create();
|
|
|
|
|
|
var key = Encoding.UTF8.GetBytes(ProcessorId());
|
|
|
|
|
|
var crypt = ae.CreateEncryptor(key, key);
|
|
|
|
|
|
byte[] encrypted;
|
|
|
|
|
|
using (var ms = new MemoryStream())
|
|
|
|
|
|
{
|
|
|
|
|
|
using (var cs = new CryptoStream(ms, crypt, CryptoStreamMode.Write))
|
|
|
|
|
|
using (var sw = new StreamWriter(cs))
|
|
|
|
|
|
{
|
|
|
|
|
|
sw.Write(src);
|
|
|
|
|
|
}
|
|
|
|
|
|
encrypted = ms.ToArray();
|
|
|
|
|
|
}
|
|
|
|
|
|
return encrypted;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string Decrypt(byte[] data)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (data == null)
|
|
|
|
|
|
return "";
|
|
|
|
|
|
var ae = Aes.Create();
|
|
|
|
|
|
var key = Encoding.UTF8.GetBytes(ProcessorId());
|
|
|
|
|
|
var crypt = ae.CreateDecryptor(key, key);
|
|
|
|
|
|
string text;
|
|
|
|
|
|
using (var ms = new MemoryStream(data))
|
|
|
|
|
|
using (var cs = new CryptoStream(ms, crypt, CryptoStreamMode.Read))
|
|
|
|
|
|
using (var sr = new StreamReader(cs))
|
|
|
|
|
|
{
|
|
|
|
|
|
text = sr.ReadToEnd();
|
|
|
|
|
|
}
|
|
|
|
|
|
return text;
|
|
|
|
|
|
}
|
2022-08-19 13:33:49 +03:00
|
|
|
|
|
|
|
|
|
|
public static string[] ReadLoginPassFromAuth(string AuthFileFullName)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Исключения обрабатываются уровнем выше
|
|
|
|
|
|
string[] lparr = new string[0];
|
|
|
|
|
|
var n = 10000;
|
|
|
|
|
|
var arr = new byte[n];
|
|
|
|
|
|
int nbytes;
|
|
|
|
|
|
// Здесь может быть исключение если с файлом или путем проблемы
|
|
|
|
|
|
using (var fs = new FileStream(AuthFileFullName, FileMode.Open))
|
|
|
|
|
|
{
|
|
|
|
|
|
nbytes = fs.Read(arr, 0, n);
|
|
|
|
|
|
}
|
|
|
|
|
|
var data = new byte[nbytes];
|
|
|
|
|
|
System.Array.Copy(arr, data, nbytes);
|
|
|
|
|
|
// Здесь может быть исключение если ключ неправильный
|
|
|
|
|
|
var lp = Decrypt(data);
|
|
|
|
|
|
lparr = lp.Split((char)10);
|
|
|
|
|
|
return lparr;
|
|
|
|
|
|
}
|
2022-08-14 14:00:05 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|