Пример #1
0
        private void dekoder_Click(object sender, EventArgs e)
        {
            try
            {
                extractedText         = "";
                notesLabel3.Text      = "Proszę czekać...";
                notesLabel3.ForeColor = Color.Black;

                błąd = 0;

                progressBar1.Value = 0;



                if (radio_xor.Checked)
                {
                    xor           = 1;
                    xor_aktywacja = true;
                }
                else
                {
                    xor           = 0;
                    xor_aktywacja = false;
                }


                // kodowanie znaków

                if (radioASCII.Checked)
                {
                    kodowanie = "ASCII";
                }
                else if (radioUTF32.Checked)
                {
                    kodowanie = "UTF32";
                }
                else if (radioUTF16.Checked)
                {
                    kodowanie = "UTF16";
                }
                else if (radioUTF8.Checked)
                {
                    kodowanie = "UTF8";
                }

                // zapis znaków

                if (radio8bit.Checked)
                {
                    zapis = 8;
                }
                if (radio9bit.Checked)
                {
                    zapis = 10;
                }
                if (radio16bit.Checked)
                {
                    zapis = 16;
                }
                if (radio32bit.Checked)
                {
                    zapis = 32;
                }



                // wybór kanału

                if (red.Checked)
                {
                    indeks = "R";
                }
                if (green.Checked)
                {
                    indeks = "G";
                }
                if (blue.Checked)
                {
                    indeks = "B";
                }
                if (alfa.Checked)
                {
                    indeks = "A";
                }
                if (multi.Checked)
                {
                    indeks = "Multi";
                }

                this.timer1.Start(); // start timera


                if (element == 0) // Wariant z pliku - dekoder //////////////////////////////////////////////////////////////
                {
                    bmp           = new Bitmap(obraz_dekodowany.Image);
                    extractedText = Steganografia.dekodowanie(bmp, indeks, kodowanie, zapis, xor, xor_aktywacja);


                    if (checkDekodowanie.Checked)
                    {
                        try
                        {
                            extractedText = AES.Deszyfrowanie(extractedText, haslo2.Text);
                        }
                        catch
                        {
                            błąd = 1;
                            MessageBox.Show("Nieprawidłowe hasło spróbuj ponownie.", "Błąd !");
                            notesLabel3.ForeColor = Color.OrangeRed;
                            notesLabel3.Text      = "Błąd ! Proszę spróbować ponownie.";

                            return;
                        }
                    }
                }



                if (element == 1) // Wariant z folderu - dekoder ////////////////////////////////////////////////////////////////////////
                {
                    folder_bmp = new Bitmap[path.Count];
                    int    licznik = 0;
                    string extractedText_folder = "";


                    foreach (var p in path)
                    {
                        folder_bmp[licznik] = new Bitmap(Image.FromFile(p.ToString()));

                        extractedText += "---- " + Path.GetFileName(p.ToString()) + " ---" + Environment.NewLine + "Treść znaku :" + Environment.NewLine;

                        extractedText_folder = Steganografia.dekodowanie(folder_bmp[licznik], indeks, kodowanie, zapis, xor, xor_aktywacja);


                        if (checkDekodowanie.Checked)
                        {
                            try
                            {
                                extractedText_folder = AES.Deszyfrowanie(extractedText_folder, haslo2.Text);
                                extractedText       += extractedText_folder + Environment.NewLine + Environment.NewLine + "-------------------------------------------------------" + Environment.NewLine + Environment.NewLine;
                            }
                            catch
                            {
                                błąd = 1;
                                MessageBox.Show("Nieprawidłowe hasło spróbuj ponownie.", "Błąd !");
                                notesLabel3.ForeColor = Color.OrangeRed;
                                notesLabel3.Text      = "Błąd ! Proszę spróbować ponownie.";

                                return;
                            }
                        }
                        else
                        {
                            extractedText += extractedText_folder + Environment.NewLine + Environment.NewLine + "-------------------------------------------------------" + Environment.NewLine + Environment.NewLine;
                        }



                        licznik++;
                    }
                }
            }
            catch (Exception ex2)
            {
                błąd = 1;

                MessageBox.Show(ex2.Message, "Błąd !");

                notesLabel3.ForeColor = Color.OrangeRed;
                notesLabel3.Text      = "Błąd ! Proszę spróbować ponownie.";

                dekoder.Enabled = true;
            }
        }
Пример #2
0
        private void koder_Click(object sender, EventArgs e)
        {
            try
            {
                komunikat2.Text      = "Proszę czekać...";
                komunikat2.ForeColor = Color.Black;

                błąd                = 0;
                komunikat.Text      = "Komunikat :";
                komunikat.ForeColor = Color.Black;
                int count = 0;

                progressBar2.Value = 0;
                text          = dataTextBox.Text;
                koder.Enabled = false;



                if (text.Equals("") == false)
                {
                    this.timer2.Start();
                }



                if (radio_xor.Checked)
                {
                    xor           = 1;
                    xor_aktywacja = true;
                }
                else
                {
                    xor           = 0;
                    xor_aktywacja = false;
                }


                // zapis znaków

                if (radio8bit.Checked)
                {
                    zapis = 8;
                }
                if (radio9bit.Checked)
                {
                    zapis = 10;
                }
                else if (radio16bit.Checked)
                {
                    zapis = 16;
                }
                else if (radio32bit.Checked)
                {
                    zapis = 32;
                }



                // bmp = new Bitmap(imagePictureBox.Image);
                if (red.Checked)
                {
                    indeks = "R";
                }
                if (green.Checked)
                {
                    indeks = "G";
                }
                if (blue.Checked)
                {
                    indeks = "B";
                }
                if (alfa.Checked)
                {
                    indeks = "A";
                }
                if (multi.Checked)
                {
                    indeks = "Multi";
                }



                if (text.Equals(""))
                {
                    błąd = 1;
                    MessageBox.Show("Tekst znaku wodnego nie może być pusty !", "Błąd !");
                    koder.Enabled        = true;
                    komunikat2.Text      = "Błąd ! Proszę spróbować ponownie.";
                    komunikat2.ForeColor = Color.OrangeRed;


                    return;
                }

                if (encryptCheckBox.Checked)
                {
                    if (haslo.Text.Length < 5)
                    {
                        błąd = 1;
                        MessageBox.Show("Hasło musi się składać z minimum 5 znaków", "Błąd !");
                        koder.Enabled        = true;
                        komunikat2.Text      = "Błąd ! Proszę spróbować ponownie.";
                        komunikat2.ForeColor = Color.OrangeRed;


                        return;
                    }
                    else
                    {
                        text = AES.Syfrowanie(text, haslo.Text);

                        if (text.Length > poj_znakow)
                        {
                            błąd = 1;
                            MessageBox.Show("Syfr AES : " + text.Length + " znaków przekracza pojemność nosnika. Proszę zmniejszyć ilość znaków", "Błąd !");
                            koder.Enabled        = true;
                            komunikat2.Text      = "Błąd ! Proszę spróbować ponownie.";
                            komunikat2.ForeColor = Color.OrangeRed;
                        }
                    }
                }



                savetool.Enabled = true;



                if (element == 0) /////////// WARIANT 1 "z pliku"
                {
                    // konwersja do streamu i odczyt

                    if (radioorg.Checked)
                    {
                        bmp = new Bitmap(Image.FromFile(dialog.FileName));
                    }

                    if (radiojpg.Checked)
                    {
                        long c      = Convert.ToInt32(comboKompresja.Text);
                        var  jpg    = new Bitmap(dialog.FileName);
                        var  stream = new System.IO.MemoryStream();

                        EncoderParameters encoder = new EncoderParameters(1);
                        encoder.Param[0] = new EncoderParameter(
                            System.Drawing.Imaging.Encoder.Quality, c);

                        ImageCodecInfo image_codec_info = GetEncoderInfo("image/jpeg");
                        jpg.Save(stream, image_codec_info, encoder);

                        bmp = new Bitmap(Image.FromStream(stream));
                    }
                    if (radiopng.Checked)
                    {
                        var png    = new Bitmap(dialog.FileName);
                        var stream = new System.IO.MemoryStream();

                        png.Save(stream, ImageFormat.Png);

                        bmp = new Bitmap(Image.FromStream(stream));
                    }
                    if (radiogif.Checked)
                    {
                        var gif    = new Bitmap(dialog.FileName);
                        var stream = new System.IO.MemoryStream();

                        gif.Save(stream, ImageFormat.Gif);

                        bmp = new Bitmap(Image.FromStream(stream));
                    }
                    if (radiobmp.Checked)
                    {
                        var bmp_   = new Bitmap(dialog.FileName);
                        var stream = new System.IO.MemoryStream();

                        bmp_.Save(stream, ImageFormat.Bmp);

                        bmp = new Bitmap(Image.FromStream(stream));
                    }

                    if (radiojpeg.Checked)
                    {
                        var jpeg   = new Bitmap(dialog.FileName);
                        var stream = new System.IO.MemoryStream();

                        jpeg.Save(stream, ImageFormat.Jpeg);

                        bmp = new Bitmap(Image.FromStream(stream));
                    }



                    memoryStream = new MemoryStream();

                    bmp_temp = Steganografia.kodowanie(text, bmp, indeks, zapis, xor, xor_aktywacja);
                    bmp_temp.Save(memoryStream, ImageFormat.Bmp);
                }


                if (element == 1) ///// WARIANT 2 z folderu
                {
                    folder_bmp = new Bitmap[path.Count];



                    foreach (var p in path)
                    {
                        if (radioorg.Checked)
                        {
                            bmp = new Bitmap(Image.FromFile(p.ToString()));
                        }

                        if (radiojpg.Checked) // dla jpg
                        {
                            long c      = Convert.ToInt32(comboKompresja.Text);
                            var  jpg    = new Bitmap(Image.FromFile(p.ToString()));
                            var  stream = new System.IO.MemoryStream();

                            EncoderParameters encoder = new EncoderParameters(1);
                            encoder.Param[0] = new EncoderParameter(
                                System.Drawing.Imaging.Encoder.Quality, c);

                            ImageCodecInfo image_codec_info = GetEncoderInfo("image/jpeg");
                            jpg.Save(stream, image_codec_info, encoder);

                            bmp = new Bitmap(Image.FromStream(stream));
                        }
                        if (radiopng.Checked)
                        {
                            var png    = new Bitmap(Image.FromFile(p.ToString()));
                            var stream = new System.IO.MemoryStream();

                            png.Save(stream, ImageFormat.Png);

                            bmp = new Bitmap(Image.FromStream(stream));
                        }
                        if (radiogif.Checked)
                        {
                            var gif    = new Bitmap(Image.FromFile(p.ToString()));
                            var stream = new System.IO.MemoryStream();

                            gif.Save(stream, ImageFormat.Gif);

                            bmp = new Bitmap(Image.FromStream(stream));
                        }
                        if (radiobmp.Checked)
                        {
                            var bmp_   = new Bitmap(Image.FromFile(p.ToString()));
                            var stream = new System.IO.MemoryStream();

                            bmp_.Save(stream, ImageFormat.Bmp);

                            bmp = new Bitmap(Image.FromStream(stream));
                        }

                        if (radiojpeg.Checked)
                        {
                            var jpeg   = new Bitmap(Image.FromFile(p.ToString()));
                            var stream = new System.IO.MemoryStream();

                            jpeg.Save(stream, ImageFormat.Jpeg);

                            bmp = new Bitmap(Image.FromStream(stream));
                        }



                        folder_bmp[count] = Steganografia.kodowanie(text, bmp, indeks, zapis, xor, xor_aktywacja);
                        count++;
                    }
                }
            }
            catch (Exception ex)
            {
                błąd = 1;
                MessageBox.Show(ex.Message, "Błąd !");
                koder.Enabled    = true;
                savetool.Enabled = false;

                if (element == 1)
                {
                    komunikat2.ForeColor = Color.OrangeRed;
                    komunikat2.Text      = "Błąd ! Proszę się upewnić ze w folderze są tylko" + Environment.NewLine + "pliki zdjęciowe.";
                }
                else
                {
                    komunikat2.ForeColor = Color.OrangeRed;
                    komunikat2.Text      = "Błąd ! Proszę spróbować ponownie.";
                }
            }
        }