// метод в конце поиска private void BluetoothEndDescovery(object sender, DiscoverDevicesEventArgs e) { // если не найдено щапускаем форму сравнения паролей if (compare == 0) { // если устройства нет рядом просим ввести пароль NotFoundCheckingPassword password = new NotFoundCheckingPassword(cod); password.ShowDialog(); // проверка верности пароля if (password.Pasbool) { Redeem(); } } }
// кнопка для открытия (чтобы не прописывать в конструкторе) private void Open_Click(object sender, EventArgs e) { Open.Enabled = false; label1.Visible = true; // проверка работает ли bluetooth if (BluetoothRadio.IsSupported) { // проверка расширения string k = Path.GetExtension(path); if (k == ".code3") { // закрыываем кнопку Open.Enabled = false; // дезериализуем ключ и файл DataContractJsonSerializer json2 = new DataContractJsonSerializer(typeof(Connectwithakey)); DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(ToCode)); FileStream st = null; if (File.Exists(path)) { try { st = new FileStream(path, FileMode.Open); } catch (IOException ex) { Console.WriteLine("Try again"); } try { Connectwithakey con = null; con = (Connectwithakey)json2.ReadObject(st); FindkeyNumber = con.file; // номер ключа this.num = int.Parse(Encoding.ASCII.GetString(con.keynumber)); st.Close(); byte[] serkey = null; // извлечение ключа из файла if (File.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}.txt")) { serkey = File.ReadAllBytes($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}.txt"); IntPtr accountToken = WindowsIdentity.GetCurrent().Token; WindowsIdentity win = new WindowsIdentity(accountToken); // раскодируем ID = win.User.ToString(); // ксорим с id в ASCII byte[] tocodekey = Encoding.ASCII.GetBytes(ID); int q = 0; for (int i = 0; i < serkey.Length; i++) { if (q == tocodekey.Length) { q = 0; } serkey[i] = (byte)(serkey[i] ^ tocodekey[q]); } // создём вспомогательный файл для десериализации и извдечение полей класса string help; if (Directory.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming")) { help = $"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}Help.txt"; } else { help = $"../Pakman{num}Help.txt"; } // файл нужен для десериализации (так быстрее чем с memorystream так как есть writeallbytes) File.Create(help).Close(); File.WriteAllBytes(help, serkey); FileStream l = new FileStream(help, FileMode.Open); cod = (ToCode)json.ReadObject(l); l.Close(); // удаляем вспомогательный файл File.Delete(help); // проверяем совпадение устройста devicename = cod.DeviceName; deviceadress = cod.DeviceAdress; // компонента bluetooth BluetoothComponent component = new BluetoothComponent(); // добавляем метод который будет сделать если найдено новое устройство component.DiscoverDevicesProgress += BluetoothDescovery; // метод в конце работы component.DiscoverDevicesComplete += BluetoothEndDescovery; // поиск устройства component.DiscoverDevicesAsync(10, true, false, true, true, 0); } else { if (File.Exists($"../Palon/Pakman{num}.txt")) { serkey = File.ReadAllBytes($"../Palon/Pakman{num}.txt"); IntPtr accountToken = WindowsIdentity.GetCurrent().Token; WindowsIdentity win = new WindowsIdentity(accountToken); // раскодируем ID = win.User.ToString(); // ксорим с id в ASCII byte[] tocodekey = Encoding.ASCII.GetBytes(ID); int q = 0; for (int i = 0; i < serkey.Length; i++) { if (q == tocodekey.Length) { q = 0; } serkey[i] = (byte)(serkey[i] ^ tocodekey[q]); } // создём вспомогательный файл для десериализации и извдечение полей класса string help; if (Directory.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming")) { help = $"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}Help.txt"; } else { help = $"../Pakman{num}Help.txt"; } // файл нужен для десериализации (так быстрее чем с memorystream так как есть writeallbytes) File.Create(help).Close(); File.WriteAllBytes(help, serkey); FileStream l = new FileStream(help, FileMode.Open); cod = (ToCode)json.ReadObject(l); l.Close(); // удаляем вспомогательный файл File.Delete(help); // проверяем совпадение устройста devicename = cod.DeviceName; deviceadress = cod.DeviceAdress; // компонента bluetooth BluetoothComponent component = new BluetoothComponent(); // добавляем метод который будет сделать если найдено новое устройство component.DiscoverDevicesProgress += BluetoothDescovery; // метод в конце работы component.DiscoverDevicesComplete += BluetoothEndDescovery; // поиск устройства component.DiscoverDevicesAsync(10, true, false, true, true, 0); } else { MessageBox.Show("Something has happened with keys"); this.Close(); } } //безопастность (учетная запись) } catch (Exception ex) { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } else { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } else { DataContractJsonSerializer json2 = new DataContractJsonSerializer(typeof(Connectwithakey)); DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(ToCode)); // десереализуем файл FileStream st = null; if (File.Exists(path)) { try { st = new FileStream(path, FileMode.Open); Connectwithakey con = null; con = (Connectwithakey)json2.ReadObject(st); FindkeyNumber = con.file; // номер ключа this.num = int.Parse(Encoding.ASCII.GetString(con.keynumber)); st.Close(); // извлечение ключа из файла byte[] serkey = null; // извлечение ключа из файла if (File.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/PakmanD{num}.txt")) { serkey = File.ReadAllBytes($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/PakmanD{num}.txt"); } else { if (File.Exists($"../Palon/PakmanD{num}.txt")) { serkey = File.ReadAllBytes($"../Palon/PakmanD{num}.txt"); } else { MessageBox.Show("Something has happened with keys"); this.Close(); } } //безопастность (учетная запись) IntPtr accountToken = WindowsIdentity.GetCurrent().Token; WindowsIdentity win = new WindowsIdentity(accountToken); // раскодируем ксоря c ID в ASCII ID = win.User.ToString(); byte[] tocodekey = Encoding.ASCII.GetBytes(ID); int q = 0; for (int i = 0; i < serkey.Length; i++) { if (q == tocodekey.Length) { q = 0; } serkey[i] = (byte)(serkey[i] ^ tocodekey[q]); } // создём вспомогательный файл для десериализации и извдечение полей класса string help; if (Directory.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming")) { help = $"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/PakmanD{num}Help.txt"; } else { help = $"../PakmanD{num}Help.txt"; } // перезаписываем файл для десериализации так удобней чем при memorystream так как writeallbytes File.Create(help).Close(); File.WriteAllBytes(help, serkey); FileStream l = new FileStream(help, FileMode.Open); cod = (ToCode)json.ReadObject(l); l.Close(); // удаляем вспомогательный файл File.Delete(help); // проверяем совпадение устройста devicename = cod.DeviceName; deviceadress = cod.DeviceAdress; // создаём компоненту поиска BluetoothComponent component = new BluetoothComponent(); // добавляем метод при каждом нахождении нового устройствва component.DiscoverDevicesProgress += BluetoothDescovery; // метод в конце поиска component.DiscoverDevicesComplete += BluetoothEndDescovery; // начало писка component.DiscoverDevicesAsync(10, true, false, true, true, 0); } catch (Exception ex) { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } else { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } } // раскодируем по паролю else { // аналогично смотрим расширение string k = Path.GetExtension(path); if (k == ".code3") { // откючаем кнопку Open.Enabled = false; DataContractJsonSerializer json2 = new DataContractJsonSerializer(typeof(Connectwithakey)); DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(ToCode)); // десериализуем основной файл FileStream st = null; if (File.Exists(path)) { try { st = new FileStream(path, FileMode.Open); Connectwithakey con = null; con = (Connectwithakey)json2.ReadObject(st); FindkeyNumber = con.file; // номер ключа this.num = int.Parse(Encoding.ASCII.GetString(con.keynumber)); st.Close(); // извлечение ключа из файла byte[] serkey = null; // извлечение ключа из файла if (File.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}.txt")) { serkey = File.ReadAllBytes($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}.txt"); } else { if (File.Exists($"../Palon/Pakman{num}.txt")) { serkey = File.ReadAllBytes($"../Palon/Pakman{num}.txt"); } else { MessageBox.Show("Something has happened with keys"); this.Close(); } } //безопастность (учетная запись) IntPtr accountToken = WindowsIdentity.GetCurrent().Token; WindowsIdentity win = new WindowsIdentity(accountToken); // раскодируем ксоря с id ASCII ID = win.User.ToString(); byte[] tocodekey = Encoding.ASCII.GetBytes(ID); int q = 0; for (int i = 0; i < serkey.Length; i++) { if (q == tocodekey.Length) { q = 0; } serkey[i] = (byte)(serkey[i] ^ tocodekey[q]); } // создём вспомогательный файл для десериализации и извдечение полей класса string help; if (Directory.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming")) { help = $"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/Pakman{num}Help.txt"; } else { help = $"../Pakman{num}Help.txt"; } File.Create(help).Close(); File.WriteAllBytes(help, serkey); FileStream l = new FileStream(help, FileMode.Open); cod = (ToCode)json.ReadObject(l); l.Close(); // удаляем вспомогательный файл File.Delete(help); // проверяем совпадение устройста devicename = cod.DeviceName; deviceadress = cod.DeviceAdress; // если устройства нет рядом просим ввести пароль NotFoundCheckingPassword password = new NotFoundCheckingPassword(cod); password.ShowDialog(); // проверка верности пароля if (password.Pasbool) { Redeem(); } } catch (Exception ex) { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } else { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } else { // десериализуем основной файл DataContractJsonSerializer json2 = new DataContractJsonSerializer(typeof(Connectwithakey)); DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(ToCode)); FileStream st = null; if (File.Exists(path)) { try { st = new FileStream(path, FileMode.Open); Connectwithakey con = null; con = (Connectwithakey)json2.ReadObject(st); FindkeyNumber = con.file; // номер ключа this.num = int.Parse(Encoding.ASCII.GetString(con.keynumber)); st.Close(); // извлечение ключа из файла byte[] serkey = null; // извлечение ключа из файла if (File.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/PakmanD{num}.txt")) { serkey = File.ReadAllBytes($"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/PakmanD{num}.txt"); } else { if (File.Exists($"../Palon/PakmanD{num}.txt")) { serkey = File.ReadAllBytes($"../Palon/PakmanD{num}.txt"); } else { MessageBox.Show("Something has happened with keys"); this.Close(); } }//безопастность (учетная запись) IntPtr accountToken = WindowsIdentity.GetCurrent().Token; WindowsIdentity win = new WindowsIdentity(accountToken); // раскодируем ксоря с ID в ASCII ID = win.User.ToString(); byte[] tocodekey = Encoding.ASCII.GetBytes(ID); int q = 0; for (int i = 0; i < serkey.Length; i++) { if (q == tocodekey.Length) { q = 0; } serkey[i] = (byte)(serkey[i] ^ tocodekey[q]); } // создём вспомогательный файл для десериализации и извдечение полей класса string help; if (Directory.Exists($"C:/Users/{Environment.UserName}/AppData/Roaming")) { help = $"C:/Users/{Environment.UserName}/AppData/Roaming/Palon/PakmanD{num}Help.txt"; } else { help = $"../PakmanD{num}Help.txt"; } // так быстрее так как в memorystream нет writeallbytes File.Create(help).Close(); File.WriteAllBytes(help, serkey); FileStream l = new FileStream(help, FileMode.Open); cod = (ToCode)json.ReadObject(l); l.Close(); // удаляем вспомогательный файл File.Delete(help); // проверяем совпадение устройста devicename = cod.DeviceName; deviceadress = cod.DeviceAdress; // если устройства нет рядом просим ввести пароль NotFoundCheckingPassword password = new NotFoundCheckingPassword(cod); password.ShowDialog(); // проверка верности пароля if (password.Pasbool) { Redeem(); } } catch (Exception ex) { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } else { MessageBox.Show("Two programms are trying to encript file"); this.Close(); } } } }