Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2009, 01:56   #1
Metal_Madness
Новичок
Джуниор
 
Регистрация: 30.10.2009
Сообщений: 1
По умолчанию Стеганография (txt в bmp)!!!

Здравствуйте.
Пишу программу, которая бы прятала в картинке текстовое сообщение.
что-то не очень выходит. Может кто поможет реализовать?
Буду признателен!
вот код:

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <FileCtrl.hpp> // для доступа к функции SelectDirectory
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <fstream>

#include "stego.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

AnsiString aPath;       // каталог, в котором находится иллюстрация
TSearchRec aSearchRec;  // результат поиска файла

//void readRGB(int height, int width); // высота и ширина
/* функции */
void readRGB();
void RgbToMas();
void MasToRgb();
//void writeRGB();
/*-----------*/

int h,w = 32; // h=y, w=x;

int Lr[32][32];
int Lg[32][32];
int Lb[32][32];

int rgbMas[1024];
char str[80];



TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{


}
//---------------------------------------------------------------------------



void __fastcall TForm1::Button1Click(TObject *Sender)
{
        Image1->Picture->LoadFromFile("Svati.bmp");
        readRGB();  // разбиение цветов по матрицам
        RgbToMas(); // преобразование этих матриц в массив

       fstream txt("test.txt",ios_base::in);
        while(!txt.eof()) {
                str[80];
                txt.getline(str,1000,'\n');
        }
        txt.close();

        /* Запись текста в массив с картинкой */
        for (int i=0, j=5+i; i<80; i++)
               rgbMas[j]=str[i];


        MasToRgb(); // преобразуем масси в матрици
//        writeRGB();




}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        Form1->Close();
}
//--------------------------------------------------------------------------




// ----------- OTHER FUNCTIONS -----------

//--------------------------------------------------------------------------
/* функция readRGB() */
void readRGB() {

/*        int Lr[32][32];
        int Lg[32][32];
        int Lb[32][32];
  */
        for (int y=0; y<32; y++){     // Считывание с картинки
         for (int x=0; x<32; x++){

          Lr[x][y]=GetRValue(GetPixel(Form1->Image1->Picture->Bitmap->Canvas->Handle, x, y));
          Lg[x][y]=GetGValue(GetPixel(Form1->Image1->Picture->Bitmap->Canvas->Handle, x, y));
          Lb[x][y]=GetBValue(GetPixel(Form1->Image1->Picture->Bitmap->Canvas->Handle, x, y));
         }
        }
};


/* Функция RgbToMas() */
void RgbToMas() {

    //  int rgbMas[1024];
       int i=0;

       for (int y=0; y<32; y++)
         for (int x=0; x<32; x++)

                rgbMas[i++] = Lr[x][y] + Lg[x][y] + Lb[x][y];

//                Form1->Label1->Caption=i;
};



/* Функция преобразования из массива в мартрици */

void MasToRgb() {
       int ii=0;
       for (int y=0; y<32; y++)
         for (int x=0; x<32; x++) {

                Lr[x][y]=rgbMas[ii++];
                Lg[x][y]=rgbMas[ii++];
                Lb[x][y]=rgbMas[ii++];
         }
};

/*  /
void writeRGB() {



};   */
Metal_Madness вне форума Ответить с цитированием
Старый 30.10.2009, 10:43   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

твой код ничего не показывает. Чтобы поместить текст в картинку надо преобразовать символы сообщения в изображение затем заменить пиксели на картинке на пиксели картинки с сообщением. Это моя идея.

rgbMas[j]=str[i];
заменить пиксели которые имеют какойто свой тип на символы char так не получится

думаю врятли тут кто-то согласится тебе помоч "дописать программу". По край ней мере бесплатно

Последний раз редактировалось NiCola999; 30.10.2009 в 10:57.
NiCola999 вне форума Ответить с цитированием
Старый 30.10.2009, 11:01   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

В простейшем случае не заменить, а изменить всего 1 бит у пикселя. Т.е. каждые 8 пикселей будут хранить 1 байт сообщения без видимых изменений изображения
пыщь
JTG вне форума Ответить с цитированием
Старый 31.10.2009, 19:50   #4
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

А разве нельзя дописать текст после данных о картинке в том же файле? Потери качества тогда вообще не будет. Не надо будет заменять пиксели.
Revival001 вне форума Ответить с цитированием
Старый 01.11.2009, 00:57   #5
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

А в чем тогда смысл твоих действий? Насколько я понимаю, смысл стеганографии - скрыть информацию так, чтобы она не была видна "непосвященным". Причем не только тем, кто о ней не знает, но и тем, кто ее пытается найти. В случае, если ты просто в файл с картинкой допишешь блок текста, для дешифровальщика расшифровка этого текста не будет представлять вообще никакой сложности, то есть задача не будет выполнена. Если же ты зашьешь информацию непосредственно в изображение, хотя бы на первый взгляд ее видно не будет. Хотя и тут методы есть...
Pashan вне форума Ответить с цитированием
Старый 02.11.2009, 19:49   #6
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

А если дописанный текст еще и шифровать? Чтобы без ключа текст не узнать, то по моему это проще реализуемо. Хотя кому как
Revival001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стеганография v.dmitry Помощь студентам 3 26.04.2009 04:46
работа с .bmp DeadWorm Общие вопросы C/C++ 4 16.04.2009 14:09
Bmp в ico AngelOfDeath Мультимедиа в Delphi 9 30.12.2008 06:21
Как прочесть txt файл www.site.ru/info.txt BR17UY Работа с сетью в Delphi 1 16.04.2007 13:01