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творив програму приховання повідомлення у графічному файлі за допомогою стеганографічних перетворень.


 

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

12922. Хто людям добра бажає, той і собі має 51 KB
  Виховна година. Хто людям добра бажає той і собі має Мета: продовжити розмову про людські достоїнства і вади; допомогти учням зробити висновок що добро твориться просто ні за так І. Драч; викликати в них бажання творити добро й уникати злих вчинків. Обладнанн...
12923. Алкоголь і злочин. Чи можна між ними поставити знак рівності 51 KB
  Виховна година Алкоголь і злочин. Чи можна між ними поставити знак рівності Мета: узагальнити та систематизувати знання учнів про негативний вплив алкоголю на організм людини на психіку; виховувати негативне ставлення особистості до алкоголю та відповідальність за
12924. Наші права – щасливе дитинство 35.5 KB
  Виховна година на тему: Наші права – щасливе дитинство Мета:розповісти учням про їхні права й свободивизначені Конституцією про права дитини; навчити правильно реалізовувати свої прававиховувати в учнів поважне ставлення до власної особистості інших. Обла...
12925. Виховний захід. Дружба 51 KB
  Тема: Дружба Мета: розкрити зміст понять дружба дійсний друг; показати його відмінність від понять приятель і знайомий; прищепити учням повагу до цінностей дружби; сприяти розвиткові критичного ставлення до себе і своїх особистих якостей терпимості й коректно...
12926. Виховна година на тему «Європейські університети» 308 KB
  Виховна година на тему Європейські університети Ведучий 1 Доброго дня шановні викладачі студенти гості. Ведучий 2 Омар Хаям говорив: Знання для духу світоч найясніший знання для тіла панцир найміцніший. Ведучий 1 Знання нам дарують вихователі вчителі
12927. Виховна година на тему: «Шкідливість алкоголю» 62 KB
  Виховна година на тему: Шкідливість алкоголю Мета: Виховання свідомого ставлення до свого здоров’я та здоров’я громадян як найвищої соціальної цінності; формування валеологічного світогляду; формування та пропаганда здорового способу життя; профілактика шкідливих ...
12928. Виховна година на тему: «СНІД. Небезпека і профілактика» 54.5 KB
  Виховна година на тему: СНІД. Небезпека і профілактика Мета: дати учням елементарні знання про СНІД основні шляхи зараження цією хворобою та заходи щодо її профілактики. Обладнання: роздавальний матеріал анкета Перевір свої знання про СНІД; плакат із відпові
12929. Виховна година на тему «Наркоманія» 88 KB
  Виховна година на тему Наркоманія Мета: дати учням елементарні знання про хворобу наркоманію основні наркотичні речовини їх дію на організм людини та шляхи профілактики наркозалежності; розглянути наркоманію в моральному правовому і медичному аспектах; привести...
12930. Про шкоду паління та алкоголізму 64.5 KB
  Про шкоду паління та алкоголізму Виховна година для підлітків 12–15 років Мета заходу: формування в учнів правильного уявлення про здоров’я здоровий спосіб життя; виховання дбайливого ставлення до свого здоров’я здоров’я оточуючих; пропаганда здорового способу життя;...