Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стеганография. Сокрытие информации в *.bmp 
:(
    Опции темы
lisbeth
Дата 18.3.2016, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.3.2016

Репутация: нет
Всего: нет



Задача - провести исследование вносимых изменений в изображении при стеганографии.
Алгоритм выполнения программы:

1.    Картинка представляется в бинарном виде.
2.    Каждый пиксель занимает 3 байта.
3.    Мы накладываем маску, в которой n младших битов, которые мы собираемся заменять, заполнены нулями. Таким образом отбрасываем эти младшие биты.
4.    Берем очередной кусочек шифруемого текста, сдвигаем побитово на так, что бы в младших разрядах оказалась новая порция шифруемых битов.
5.    После этого накладываем фильтрующую маску и складываем с байтами, полученными на шаге 3.

Я реализовал получение байт массивов из изображения и текстового сообщения. Теперь необходимо внести изменения в изображения, так как глубина цвета 24 бита один пиксель будет представлять из себя 00110010 для R, 00010110 для G, 00000011 для B, моя задача внести изменения в младшие биты, руководствуясь значениями numericUpDown для R, G и B. Допустим R = 2, G = 0, B = 0, значит мне нужно заменить первые два нуля в байте 00110010 на биты из текстового сообщения и так для всего изображения, ну и вывести его для наглядности. Как это сделать?

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Steganography
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "Image Files (*.bmp) | *.bmp";
            openDialog.InitialDirectory = @"e:\OneDrive\Projects\CSharpProjects\Steganography\Steganography\Steganography\bin\Debug";
            if (openDialog.ShowDialog() == DialogResult.OK)
            {
                tB_FileInfo.Clear();
                lFilePath.Text = openDialog.FileName;
                tB_FileInfo.Text += "File path : " +lFilePath.Text + Environment.NewLine;
                pB_DecyptImage.ImageLocation = lFilePath.Text;
                Bitmap image = new Bitmap(lFilePath.Text);
                tB_FileInfo.Text += "PhysicalDimension : " + image.PhysicalDimension + Environment.NewLine;
                tB_FileInfo.Text += "PixelFormat : " + image.PixelFormat + Environment.NewLine;
                tB_FileInfo.Text += "VerticalResolution : " + image.VerticalResolution + Environment.NewLine;
            }
        }
 
        private void steganographyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Стеганография служит для скрытия секретных сообщений в других сообщениях, причем так, что скрывается даже само существование секрета. Как правило, отправитель пишет какое-нибудь невинное сообщение, а затем скрывает секретное сообщение на этом же листе бумаги. Из истории к нам пришли такие хитроумные средства, как использование невидимых чернил, тончайшие булавочные наколки возле отдельных символов, малозаметные отличия букв, написаных от руки, пометки карандашом машинописных символов, решетки, накрывающие большую часть сообщения, кроме нескольких символов и т.д.Недавно люди начали скрывать секретные сообщения в графических изображениях.При этом младший бит каждого байта изображения заменяется битом сообщения.Само графическое изображение меняется совершенно незначительно, поскольку большинство графических стандартов определяют намного большее число цветовых градаций, чем способен различить человеческий глаз.На принимающей стороне сообщение извлекается.Так, в полутоновом(черно - белом) рисунке размером 1024Г—1024 пикселей можно скрыть сообщение размером 64 Кбайт, причем для этого годятся многие общедоступные приложения. Для маскировки сообщений также можно использовать имитационные функции Питера Уэйнера(Peter Wayner).Эти функции изменяют сообщение так, что его статические параметры прибретают сходство с каким - либо иным текстом: разделом сообщений Нью - Йорк Таймс, драмой Шекспира или телеконференцией в Интернете.Этот тип стеганографии не обманет человека, но может обмануть мощный компьютер, сканирующий Интернет в поисках нужной информации. Прикладная криптография Брюс Шнайер");
        }
 
        public void bEncode_Click(object sender, EventArgs e)
        {
            // создаем битмап изображения
            Bitmap bmp = new Bitmap(lFilePath.Text);
            
            // получаем эксклюзивный доступ к внутренним данным битмапа
            Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
            System.Drawing.Imaging.BitmapData bmpData =
                bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
                bmp.PixelFormat);
 
            // получаем адрес первого пикселя в данных битмапа
            IntPtr ptr = bmpData.Scan0;
 
            // объявляем массив для значений RGB
            int bytes = bmpData.Stride * bmp.Height;
            byte[] rgbValues = new byte[bytes];
 
            // копируем все значения RGB в массив
            System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
 
            string rgbString = Encoding.ASCII.GetString(rgbValues);
 
            // байт массив сообщения
            String toEncode = tB_Message.Text;
            byte[] toEncB = Encoding.ASCII.GetBytes(toEncode);
            int lenTE = toEncB.Length;
        }
    }
}




Это сообщение отредактировал(а) lisbeth - 18.3.2016, 12:11

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  Steganography.zip 504,52 Kb
PM MAIL   Вверх
dreindeimos
Дата 18.3.2016, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 4.6.2015

Репутация: нет
Всего: нет



щас посмотрим
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1134 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.