Программирование средства внедрения и анализа водяных знаков в исходные тексты программ

Автор: Пользователь скрыл имя, 19 Октября 2011 в 03:02, курсовая работа

Описание работы

Целью данной работы является создание эффективного программного обеспечения для внедрения в исходные тексты программ информации об авторских правах, что позволит исключить несанкционированное их использование.

Содержание

Введение 4
1 Описание методов и средств решения задачи 6
1.1 Постановка задачи на курсовое проектирование 6
1.2 Общие аспекты проблемы авторского права 6
1.3 Современные методы защиты программного обеспечения 7
2 Методы внедрения водяных знаков 19
2.1 Исследование статистических свойств исполняемого кода 19
2.2 Предлагаемые методы внедрения водяных знаков 21
2.3 Оценка эффективности подстановок 24
3 Описание разработанного программного обеспечения 26
3.1 Общая структура 26
3.2 Проектирование базы данных 26
3.3 Описание основных компонентов 27
3.4 Описание алгоритма программы 30
4 Описание результатов работы 32
4.1 Описание главной формы программы 32
4.2 Описание результатов работы программы и выводы по ним 33
Заключение 35
Список использованных источников 36
Приложение А. Листинг программы 37

Работа содержит 1 файл

Введение.docx

— 1.17 Мб (Скачать)

using System.Data.OleDb;

using System.IO; 

namespace Kypca4_1

{

    public partial class Form1 : Form

    { 

        double[] x1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};

        double[] y100_MCK = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };

        double[] y100_MKM = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };

       

        string openfilename; 

        public Form1()

        {

            InitializeComponent();

        } 

       

        private void Form1_Load(object sender, EventArgs e)

        {      

        }

              

        public void CreateChart2(ZedGraphControl zgc)

        {

            GraphPane myPane = zgc.GraphPane; 

            // Set the title and axis labels

            myPane.XAxis.Title.Text = "Интервал";

            myPane.YAxis.Title.Text = "Количество";

           

            // Make a bar

            BarItem bar = myPane.AddBar("Статистический  анализ до изменения", x1, y100_MCK, Color.SteelBlue); 

            // Fill the bar with a color gradient

            bar.Bar.Fill = new Fill(Color.FromArgb(100, 130, 255, 130), Color.FromArgb(100, 255, 255, 255),

               Color.FromArgb(100, 130, 255, 130)); 

            bar = myPane.AddBar("Статистический  аанализ после  изменения", x1, y100_MKM, Color.RoyalBlue);

            // Fill the bar with a color gradient

            bar.Bar.Fill = new Fill(Color.RoyalBlue, Color.White, Color.RoyalBlue); 

            // Get an image for the background (use your own filename here)

            Image image = Bitmap.FromFile(@"qwerty.jpg"); 

            // Fill the pane background with the image

            TextureBrush texBrush = new TextureBrush(image);

            myPane.Fill = new Fill(texBrush); 

            // Turn off the axis background fill

            myPane.Chart.Fill.IsVisible = false;

            // Hide the legend

            myPane.Legend.IsVisible = true;

           

            // Hide the title

            myPane.Title.IsVisible = false; 

            // Set the colors to white show it shows up on a dark background

            myPane.XAxis.Color = Color.White;

            myPane.YAxis.Color = Color.White;

            myPane.XAxis.Scale.FontSpec.FontColor = Color.White;

            myPane.XAxis.Title.FontSpec.FontColor = Color.White;

            myPane.YAxis.Scale.FontSpec.FontColor = Color.White;

            myPane.YAxis.Title.FontSpec.FontColor = Color.White;

            myPane.Chart.Border.Color = Color.White;

            myPane.XAxis.MajorGrid.Color = Color.White;

            myPane.YAxis.MajorGrid.Color = Color.White; 

            // Show the grid lines

            myPane.XAxis.MajorGrid.IsVisible = true;

            myPane.YAxis.MajorGrid.IsVisible = true;

            myPane.YAxis.Scale.Max = 15; 

            // Set the cluster with to 100 user units

            // this is necessary since the scale is not an ordinal type

            myPane.BarSettings.ClusterScaleWidth = 0.75;

            myPane.XAxis.Scale.Max = 20;

            myPane.XAxis.Scale.Min = 0; 

            // Make it a stacked bar

            myPane.BarSettings.Type = BarType.Stack; 

            // Calculate the Axis Scale Ranges

           // zgc.AxisChange();

        } 

        private void tabPage3_Click(object sender, EventArgs e)

        { 

        } 

        private void textBox9_TextChanged(object sender, EventArgs e)

        { 

        } 

        private void textBox8_TextChanged(object sender, EventArgs e)

        { 

        } 

        private void label12_Click(object sender, EventArgs e)

        { 

        } 

        private void textBox7_TextChanged(object sender, EventArgs e)

        { 

        } 

        private void textBox10_TextChanged(object sender, EventArgs e)

        { 

        } 

        private void label13_Click(object sender, EventArgs e)

        { 

        } 

        private void label11_Click(object sender, EventArgs e)

        { 

        } 

        private void открытьФайлToolStripMenuItem_Click(object sender, EventArgs e)

        {

            openFileDialog1.ShowDialog();

            openfilename = openFileDialog1.FileName;           

            richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);

            richTextBox2.LoadFile(openfilename, RichTextBoxStreamType.PlainText); 

            OleDbConnection mycon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb");

            mycon.Open();

            OleDbCommand mycom = new OleDbCommand(); 

            mycom = new OleDbCommand("Delete * From Test1_count_start", mycon);

            mycom.ExecuteNonQuery(); 

            mycom = new OleDbCommand("Select * From Commands", mycon); 

            OleDbDataReader Reader = mycom.ExecuteReader(); 

            OleDbCommand com = new OleDbCommand();

           

            string tmpcom, tmpstr; 

            StreamReader SReader;

            int count;

            bool comm = false;

            int i = 0; 

            while (Reader.Read())

            {

                tmpcom = Reader[1].ToString();

                SReader = new StreamReader(openfilename);

                count = 0;

                while (!SReader.EndOfStream)

                {

                    tmpstr = SReader.ReadLine();

                    if (tmpstr.IndexOf("//") >= 0) tmpstr = tmpstr.Remove(tmpstr.IndexOf("//"), tmpstr.Length - tmpstr.IndexOf("//"));

                    if (tmpstr.IndexOf("/*") >= 0)

                    {

                        if (tmpstr.IndexOf("*/") >= 0)

                        {

                            comm = false;

                            tmpstr = tmpstr.Remove(tmpstr.IndexOf("/*"), tmpstr.IndexOf("*/") - tmpstr.IndexOf("/*"));

                        }

                        else comm = true;

                    } 

                    if (comm)

                        if (tmpstr.IndexOf("*/") >= 0)

                        {

                            comm = false;

                            tmpstr = tmpstr.Remove(0, tmpstr.IndexOf("*/") + 1);

                        }                  

                    if (tmpstr.IndexOf(tmpcom) >= 0) count++;

                } 

                com = new OleDbCommand("Insert Into Test1_count_start Values(" + Reader[0].ToString() + "," + count.ToString() + ");", mycon);

                com.ExecuteNonQuery();

                dataGridView1.RowCount++;

                dataGridView1[0, i].Value = Reader[1].ToString();

                dataGridView1[1, i].Value = count.ToString();

                y100_MCK[i] = count; 

                i++; 

                //onsole.WriteLine(Reader[1].ToString() + " - " + count.ToString());

            } 

            mycon.Close(); 
 

        } 

        private void сохранитьФайлToolStripMenuItem_Click(object sender, EventArgs e)

        {

            saveFileDialog1.ShowDialog();

            richTextBox2.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);

        } 

        private void рассчитатьСтатистикуToolStripMenuItem_Click(object sender, EventArgs e)

        { 

        } 

        private void расчетToolStripMenuItem_Click(object sender, EventArgs e)

        {

            OleDbConnection mycon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb");

            mycon.Open();

            OleDbCommand mycom = new OleDbCommand(); 

            mycom = new OleDbCommand("Delete * From Test1_count_end", mycon);

            mycom.ExecuteNonQuery(); 

            mycom = new OleDbCommand("Select * From Commands", mycon); 

            OleDbDataReader Reader = mycom.ExecuteReader(); 

            OleDbCommand com = new OleDbCommand(); 

            string tmpcom, tmpstr; 

            StreamReader SReader;

            int count;

            bool comm = false;

            int i = 0, j = 0; 

            while (Reader.Read())

            {

                tmpcom = Reader[1].ToString();

                SReader = new StreamReader(openfilename);

                count = 0;

                j = 0;

                while (j < richTextBox2.Lines.Length)                   

                {

                    tmpstr = richTextBox2.Lines[j];

                    if (tmpstr.IndexOf("//") >= 0) tmpstr = tmpstr.Remove(tmpstr.IndexOf("//"), tmpstr.Length - tmpstr.IndexOf("//"));

                    if (tmpstr.IndexOf("/*") >= 0)

                    {

                        if (tmpstr.IndexOf("*/") >= 0)

                        {

                            comm = false;

                            tmpstr = tmpstr.Remove(tmpstr.IndexOf("/*"), tmpstr.IndexOf("*/") - tmpstr.IndexOf("/*"));

                        }

                        else comm = true;

                    } 

                    if (comm)

                        if (tmpstr.IndexOf("*/") >= 0)

                        {

                            comm = false;

                            tmpstr = tmpstr.Remove(0, tmpstr.IndexOf("*/") + 1);

                        }

                    if (tmpstr.IndexOf(tmpcom) >= 0) count++;

                    j++;

                } 

                com = new OleDbCommand("Insert Into Test1_count_end Values(" + Reader[0].ToString() + "," + count.ToString() + ");", mycon);

Информация о работе Программирование средства внедрения и анализа водяных знаков в исходные тексты программ