20945

Створення програми приховання повідомлення у графічному файлі за допомогою стеганографічних перетворень

Лабораторная работа

Информатика, кибернетика и программирование

h include iostream include string using namespace std int mainint argc char argv[] { HANDLE hFile hFileMess hFileCont; BYTE pdbFileByte pdbMessByte; const BYTE dbKeySize = 8; BYTE dbKey[dbKeySize]={4160824202832}; BYTE dbKey[dbKeySize]={12730546}; BYTE dbKey[dbKeySize]={01234567}; DWORD dwMessSizedwFileSizedwRealFiledwRealMess; DWORD dwOffsetPictdwPictSize; hFile = CreateFileargv[1]GENERIC_READFILE_SHARE_READNULLOPEN_EXISTING0NULL; dwFileSize = GetFileSizehFileNULL; pdbFileByte = new...

Украинкский

2013-08-01

69.4 KB

2 чел.

Міністерство освіти, науки, молоді та спорту України

Національний технічний Університет “ХПІ”

“ХАРКІВСКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра “ Обчислювальна техніка та програмування ”

Лабораторна робота №8

по курсу “Захист інформації у комп’ютерних системах та мережах”

 

                                                                                                Виконав:

                                                                                                      ст. гр КІТ 39

 Родін С.І

                                                                                                 Перевірив:

Межерицький С.Г

Харків 2012

Варіант №15

Ціль роботи

Створення програми приховання повідомлення у графічному файлі за допомогою стеганографічних перетворень.

Постановка задачі

Необхідно розробити і налагодити дві програми:

 Програма приховання повідомлення у графічному файлі.

 Програма витягу скритого повідомлення з файлу.

Індивідуальне завдання:Метод квантування ображення

Програма приховання повідомлення.

#include "stdafx.h"

#include "SteganoMessage.h"

#include <iostream>

#include <string>

using namespace std

int main(int argc, char* argv[])

{

HANDLE hFile, hFileMess, hFileCont;

BYTE *pdbFileByte, *pdbMessByte;

 

 const BYTE dbKeySize = 8;

//BYTE dbKey[dbKeySize]={4,16,0,8,24,20,28,32};

BYTE dbKey[dbKeySize]={1,2,7,3,0,5,4,6};

//BYTE dbKey[dbKeySize]={0,1,2,3,4,5,6,7};

 DWORD dwMessSize,dwFileSize,dwRealFile,dwRealMess;

 DWORD *dwOffsetPict,*dwPictSize;

 hFile = CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);

dwFileSize = GetFileSize(hFile,NULL);

pdbFileByte = new BYTE[dwFileSize];

ReadFile(hFile,pdbFileByte,dwFileSize,&dwRealFile,NULL);

 

 dwOffsetPict =(DWORD*) &pdbFileByte[10];

 dwPictSize = (DWORD*) &pdbFileByte[34];

SteganoMessage sm;

 int  bBitsCount = 7;

do

{

 cout<<"Bits: ";

 cin>>bBitsCount;

 } while( bBitsCount > 8 );

sm.SetCode(bBitsCount);

sm.SetContainer(&pdbFileByte[*dwOffsetPict],*dwPictSize);  

sm.SetKey(dbKey,dbKeySize);

 

if(argc >= 3)

{

 hFileMess = CreateFile(argv[2],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);

 

 char cFileContName[256];

 strcpy(cFileContName,argv[1]);

 sprintf(&cFileContName[strlen(argv[1])-4],"_bits%d.bmp\0",bBitsCount);

 hFileCont = CreateFile(cFileContName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

 BYTE dbFileNameLength = strlen(argv[2]);  

 for(int i = dbFileNameLength; (i>0) && (argv[2][i]!=0x5C);i--);  

 i++;

 dbFileNameLength-=(i-1);

 DWORD dwMessFileSize = GetFileSize(hFileMess,NULL);

 dwMessSize = dwMessFileSize + 4 + dbFileNameLength;

 pdbMessByte = new BYTE[dwMessSize];  

 DWORD dwTempSize = dwMessSize - 4;

 strcpy((char*)&pdbMessByte[4],&argv[2][i]);

 for(i=0;i<4;i++)

 {

  pdbMessByte[i] = (BYTE) dwTempSize;

  dwTempSize >>= 8;

 }    

 ReadFile(hFileMess,&pdbMessByte[4+dbFileNameLength],dwMessFileSize,&dwRealMess,NULL);  

 sm.SetMessage(pdbMessByte,dwMessSize);

 if(sm.CheckSize())

 {

  cout<<"Start coding"<<endl;

  sm.Encipher();  

 }

 else

 {

  cout<<"Message is too large"<<endl;

  cin.get();

 }

 

 WriteFile(hFileCont,pdbFileByte,dwFileSize,&dwRealFile,NULL);

 CloseHandle(hFileCont);

}

else

{  

 sm.Decode(&pdbMessByte,&dwMessSize);  

 for(int i = 0;(i<dwMessSize) && (pdbMessByte[i]!=0x00);i++);

 i++;

 hFileMess = CreateFile((char*)pdbMessByte,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

 WriteFile(hFileMess,&pdbMessByte[i],dwMessSize-i,&dwRealMess,NULL);  

}

CloseHandle(hFile);

CloseHandle(hFileMess);  

delete pdbMessByte;

delete pdbFileByte;

return 0;

}

//c:\test.bmp c:\text.txt

//c:\res.bmp

Програма витягу скритого повідомлення з файлу

#include "stdafx.h"

#include "Stegano.h"

#include <iostream>

using namespace std;

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

Stegano::Stegano()

{

m_pdbBits = NULL;

}

Stegano::~Stegano()

{

if (m_pdbBits)

 delete m_pdbBits;

}

void Stegano::SetCode(BYTE dbBit)

{

m_dbBit = dbBit;

m_dbSize = 8/dbBit;

if(8 % dbBit)

 m_dbSize++;

m_pdbBits = new BYTE[m_dbSize];

m_dbMask = (0xFF>>m_dbBit)<<m_dbBit;

}

void Stegano::Coding(BYTE dbByte2Code)

{   

for(BYTE i = 0,j=0; i<8;i+=m_dbBit,j++)

{

 m_pdbBits[j] = dbByte2Code;

 m_pdbBits[j] <<= (8 - m_dbBit);

 m_pdbBits[j] >>= (8 - m_dbBit);

 dbByte2Code >>= m_dbBit;   

}

}

bool Stegano::Decoding(BYTE dbByte2Decode, BYTE* dbMess)

{

 

static BYTE i = 0;

BYTE dbShift = m_dbBit;

if(m_dbBit>(8-i))

 dbShift = 8-i;

dbByte2Decode <<= (8 - dbShift);

*dbMess >>= dbShift;

*dbMess+=dbByte2Decode;

i+=dbShift;

if(i==8)

{

 i = 0;

 return true;

}

return false;

}

BYTE Stegano::GetBitsSize()

{

return m_dbSize;

}

BYTE Stegano::GetMask()

{

return m_dbMask;

}

Рисунок 2 – витяг с файлу

Алгоритм

Рисунок 3 – Блок схема

Висновки: cтворив програму приховання повідомлення у графічному файлі за допомогою стеганографічних перетворень.


 

А также другие работы, которые могут Вас заинтересовать

21716. Законы распределения отказов 2.99 MB
  Законы распределения отказов Случайной называется величина которая в результате испытаний может принять то или иное значение причем заранее неизвестно какое именно. Если задан ряд распределений вероятностей для значений случайной величины X то математическое ожидание определяется по формуле Показателями характеризующими степень рассеяния случайной величины около своего математического ожидания являются дисперсия и среднее квадратическое отклонение: Для более полного описания случайных величин вводятся понятия функции распределения...
21717. Экономико-организационные проблемы разгрузки предприятий при дефиците мощности и прохождении максимумов нагрузки в энергосистеме 113.5 KB
  Экономикоорганизационные проблемы разгрузки предприятий при дефиците мощности и прохождении максимумов нагрузки в энергосистеме До настоящего времени работы по созданию экономически обоснованных рекомендаций по управлению электропотреблением промышленных предприятий практически не имели ни методической базы ни руководящих указаний позволяющих обеспечивать минимум экономических потерь от изменения режимов функционирования. Выполнение отмеченных условий связано с трудностями изза неопределенности а в отдельных случаях элементарного незнания...
21718. Задачи надёжности электроснабжения 203.5 KB
  Чтобы качественно сравнивать между собой события по степени их возможности нужно с каждым событием связать определенное число которое тем больше чем более возможно событие его вероятность. Найти вероятность исправной работы РП. Если вероятность одного события не изменяется от того произошло или не произошло другое событие то такие события называются независимыми и наоборот. Вероятность суммы n несовместных событий равна сумме вероятностей этих событий: где .
21719. Показатели надежности ЭМС 141 KB
  Вероятность безотказной работы ВБР– это вероятность того что при определенных условиях эксплуатации в заданном интервале времени не произойдет ни одного отказа. Кривые вероятности безотказной работы и вероятности отказов Вероятность отказа Qt– это вероятность того что при определенных условиях эксплуатации в заданном интервале времени произойдет хотя бы один отказ. Отказ и безотказная работа – события противоположенные и несовместимые 2 Частота отказов at– есть отношение отказавших изделий в единицу времени к первоначальному числу...
21720. Расчёт надежности при последовательном (основном) соединении элементов 225.5 KB
  С точки зрения надежности различают последовательные параллельные и системы со сложной структурой. Расчёт надежности при последовательном основном соединении элементов при таком соединении отказ технического изделия наступает при отказе одного из его узлов. Для повышения надежности систем и элементов применяют резервирование: Резервирование – это применение дополнительных средств иили возможностей с целью сохранения работоспособного состояния объекта при отказе одного или нескольких его элементов. Резервирование основано на...
21721. Модели отказов электроустановок 177.5 KB
  Вероятность безотказной работы такой системы определяется как вероятность безотказной работы всех элементов в течение времени t: где n – число элементов последовательно соединенной системы; –событие безотказной работы; – вероятность безотказной работы iго элемента. В случае невосстанавливаемых элементов вероятность отказа системы определяется как вероятность совпадения отказов или m элементов в течение расчётного времени. Если отказы одного элемента не зависят от отказов других элементов то формулы для оценки вероятности безотказной...
21722. МОДЕЛИ ОЦЕНКИ НАДЕЖНОСТИ ЭМС 117.5 KB
  Распределение экстремальных значений Пусть имеется случайная выборка объемом n взятая из бесконечной совокупности имеющей распределение Fx где х– непрерывная случайная величина.1 Так как разрушение материала связано с существованием наиболее слабой точки в работах по теории надежности рассматривается распределение экстремальных значений. Здесь будет рассмотрено распределение наименьших значений однако этот подход может быть использован и при выводе распределений наибольших значений. Функция распределения наименьших значений функция...
21723. Модели надёжности установок с восстановлением 310 KB
  Модели надёжности установок с восстановлением При экспоненциальном законе распределения времени восстановления и времени между отказами для расчёта показателей надёжности установки с восстановлением пригоден математический аппарат марковских случайных процессов. Дискретный случайный процесс называется марковском если все вероятностные характеристики будущего протекания этого процесса при зависят лишь от того в каком состоянии этот процесс находился в настоящий момент времени и не зависят от того каким образом этот процесс протекал до...
21724. Общие принципы определения ущерба от нарушений электроснабжения 80 KB
  Общие принципы определения ущерба от нарушений электроснабжения Проблема оценки ущерба от нарушений электроснабжения вызываемых отказами электрооборудования возникает как при проектировании так и при эксплуатации энергетических объектов. При проектировании потребность в характеристике ущерба ощущается как правило когда определяется экономическая эффективность капитальных вложений при выборе вариантов технических и организационнохозяйственных решений влияющих на степень надежности электроснабжения потребителей. При эксплуатации...