예제 #1
0
        private void ListViewPwDat_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (ListViewPwDat.SelectedItem == null)
            {
                return;
            }


            CPwDat selItem = (CPwDat)ListViewPwDat.SelectedItem;

            MessageBoxResult result =
                MessageBox.Show($"Datensatz '{selItem.Title}' löschen ?", "Achtung", MessageBoxButton.YesNo, MessageBoxImage.Warning);

            if (result != MessageBoxResult.Yes)
            {
                return;
            }



            ListPw.Remove(selItem);

            PwDatToListView(TextBoxFilter.Text);

            EncryptFile();

            //Löschen der Ausgangsanzeige
            CPwDat dat = new CPwDat {
                Title = "", WebAdr = "", User = "", PW = "", Opt1 = "", Opt2 = ""
            };

            WriteOutputFields(dat);
        }
예제 #2
0
 private void WriteInputFields(CPwDat selItem)
 {
     TextBoxTitelIn.Text  = selItem.Title;
     TextBoxWebAdrIn.Text = selItem.WebAdr;
     TextBoxUserIn.Text   = selItem.User;
     TextBoxPwIn.Text     = selItem.PW;
     TextBoxOpt1In.Text   = selItem.Opt1;
     TextBoxOpt2In.Text   = selItem.Opt2;
 }
예제 #3
0
        private void ListViewPwDat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListViewPwDat.SelectedItem == null)
            {
                return;
            }

            CPwDat selItem = (CPwDat)ListViewPwDat.SelectedItem;

            WriteInputFields(selItem);
            WriteOutputFields(selItem);
        }
예제 #4
0
        private void ButtonInputStore_Click(object sender, RoutedEventArgs e)
        {
            string titleUp = TextBoxTitelIn.Text.Trim().ToUpper();


            if (titleUp == "")
            {
                MessageBox.Show("Titel im Datensatz fehlt");
                return;
            }

            // Durchsuchen der Liste nach dem neuen Titel
            CPwDat dat = ListPw.Find(x => x.Title.ToUpper() == titleUp);

            if (dat != null)
            {
                MessageBoxResult result =
                    MessageBox.Show("Es gibt schon einen Datensatz mit dem Titel\n     " + dat.Title +
                                    "\nÜberschreiben", "Achtung", MessageBoxButton.YesNo, MessageBoxImage.Warning);

                if (result == MessageBoxResult.No)
                {
                    return;
                }

                ListPw.Remove(dat);
            }

            CPwDat newDat = new CPwDat {
                Title = TextBoxTitelIn.Text.Trim(), WebAdr = TextBoxWebAdrIn.Text.Trim(), User = TextBoxUserIn.Text.Trim(), PW = TextBoxPwIn.Text.Trim(), Opt1 = TextBoxOpt1In.Text.Trim(), Opt2 = TextBoxOpt2In.Text.Trim()
            };

            ListPw.Add(newDat);

            PwDatToListView(TextBoxFilter.Text);

            EncryptFile();

            WriteOutputFields(newDat);
        }
예제 #5
0
        private void SimpleTxtToListPw(string pathAndFile)
        {
            ListPw.Clear();

            //AddRandomData();

            string[] s = File.ReadAllLines(pathAndFile);

            //string[] b = s[0].Split(";");

            foreach (string item in s)
            {
                string[] b  = item.Split(";");
                CPwDat   pw = new CPwDat();
                pw.Title  = b[0];
                pw.WebAdr = b[1];
                pw.User   = b[2];
                pw.PW     = b[3];
                pw.Opt1   = b[4];
                pw.Opt2   = b[5];
                ListPw.Add(pw);
            }
        }
예제 #6
0
        private void WriteOutputFields(CPwDat selItem)
        {
            TextBoxTitelOut.Text = selItem.Title;


            string s = selItem.WebAdr;

            if (s.Contains(":") && !s.ToUpper().Contains("WWW.") && !s.ToUpper().Contains("HTTP"))
            {
                string[] sSplit = s.Split(":");
                LabelWebAdrOut.Content = sSplit[0];
                TextBoxWebAdrOut.Text  = s.Substring(sSplit[0].Length + 1).Trim();
            }
            else
            {
                LabelWebAdrOut.Content = "Web-Adr";
                TextBoxWebAdrOut.Text  = s;
            }

            s = selItem.User;
            if (s.Contains(":"))
            {
                string[] sSplit = s.Split(":");
                LabelUserOut.Content = sSplit[0];
                TextBoxUserOut.Text  = s.Substring(sSplit[0].Length + 1).Trim();
            }
            else
            {
                LabelUserOut.Content = "User";
                TextBoxUserOut.Text  = s;
            }

            s = selItem.PW;
            if (s.Contains(":"))
            {
                string[] sSplit = s.Split(":");
                LabelPwOut.Content = sSplit[0];
                TextBoxPwOut.Text  = s.Substring(sSplit[0].Length + 1).Trim();
            }
            else
            {
                LabelPwOut.Content = "Password";
                TextBoxPwOut.Text  = s;
            }

            s = selItem.Opt1;
            if (s.Contains(":"))
            {
                string[] sSplit = s.Split(":");
                LabelOpt1Out.Content = sSplit[0];
                TextBoxOpt1Out.Text  = s.Substring(sSplit[0].Length + 1).Trim();
            }
            else
            {
                LabelOpt1Out.Content = "Opt1";
                TextBoxOpt1Out.Text  = s;
            }

            s = selItem.Opt2;
            if (s.Contains(":"))
            {
                string[] sSplit = s.Split(":");
                LabelOpt2Out.Content = sSplit[0];
                TextBoxOpt2Out.Text  = s.Substring(sSplit[0].Length + 1).Trim();
            }
            else
            {
                LabelOpt2Out.Content = "Opt2";
                TextBoxOpt2Out.Text  = s;
            }
        }
예제 #7
0
        private bool DecryptFile()
        {
            bool ok = true;

            // ---------------     Entschlüsseln    -------------------------------
            // Erstelle eine Instanz von AES und weise ihr einen Schlüssel und Initialisierungsvektor zu
            // Wichtig ist hier das Padding, welches wir unbedingt definieren müssen.
            Aes AESCrypto = Aes.Create();

            AESCrypto.Padding = PaddingMode.Zeros;
            AESCrypto.Key     = DoExtendKey((MyPasswordBox.Password + TextBoxUser.Text + CMyRandom.MoreKey).Substring(0, 32), 32);
            AESCrypto.IV      = DoCreateBlocksize((TextBoxUser.Text + CMyRandom.MoreIV).Substring(0, 16), 16);


            try
            {
                // Die neue Datei hat den gleichen Namen, allerdings die Dateiendung .txt
                // Achtung: Die Originaldatei wird überschrieben, wenn diese sich im gleichen Pfad befindet!
                //     string neueDatei = System.IO.Path.ChangeExtension(openFileDialog1.FileName, ".txt");
                // Erstelle einen Inputstream, Outputstream und Cryptostream

                FileStream inputStream = new FileStream(PmPath + "\\" + "MyPW.txt", FileMode.Open);



                //FileStream outputStream = new FileStream(PmPath + "\\" + "Mp2.txt", FileMode.Create);
                CryptoStream cStream = new CryptoStream(inputStream, AESCrypto.CreateDecryptor(), CryptoStreamMode.Read);

                // Entschlüssele nun jedes Byte bis zum Dateiende
                int data;
                //while ((data = cStream.ReadByte()) != -1)
                //    outputStream.WriteByte((byte)data);

                StringBuilder sb = new StringBuilder();

                while ((data = cStream.ReadByte()) != -1)
                {
                    sb.Append(((char)data).ToString());
                }

                string[] s = sb.ToString().Split("\n");

                ListPw.Clear();

                foreach (string item in s)
                {
                    string[] b = item.Split(";");
                    if (b.Length == 6)
                    {
                        CPwDat pw = new CPwDat();
                        pw.Title  = b[0].Trim();
                        pw.WebAdr = b[1].Trim();
                        pw.User   = b[2].Trim();
                        pw.PW     = b[3].Trim();
                        pw.Opt1   = b[4].Trim();
                        pw.Opt2   = b[5].Trim();
                        ListPw.Add(pw);
                    }
                    else
                    {
                        if (ListPw.Count == 0)
                        {
                            MessageBox.Show("Passwort passt nicht\n\nPasswort oder Directory ändern\n\n" +
                                            "Um die Daten neu anzulegen, muss die Datei 'MyPW.txt' gelöscht werden\n" +
                                            "Der Zugang zur Datei ist durch Klicken auf 'Datensätze' möglich");

                            ButtonPath.Visibility          = Visibility.Visible;
                            TextBoxPath.Text               = PmPath + "\\" + "MyPW.txt";
                            TextBoxPath.Visibility         = Visibility.Visible;
                            ButtonDataCount.Visibility     = Visibility.Visible;
                            ButtonChangeDirMain.Visibility = Visibility.Visible;
                            TextBoxPath.Background         = System.Windows.Media.Brushes.LightGreen;
                            ImagePw.Visibility             = Visibility.Visible;
                            ok = false;
                            break;
                        }
                        //else
                        //{
                        //    MessageBox.Show("Fehler bei Datensatz " + ListPw.Count, "", MessageBoxButton.OK, MessageBoxImage.Error);
                        //}
                    }
                }


                inputStream.Close();
                cStream.Close();
            }
            catch
            {
                MessageBox.Show("Ein Fehler ist aufgetreten!", "", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            return(ok);
        }