DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Захист інформації в комп’ютерних системах.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Захист інформації в комп’ютерних системах
Група:
КI

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 3 з курсу „ Захист інформації в комп’ютерних системах ” Виконав: ст. гр. КІ-4 Львів – 2005 Мета роботи: Створити програму, яка б загодовувала текст з файлу у BMP-файл без помітних змін у зображенні та потім при могла відновити закодований текст із BMP-файлу. Виконання роботи: У BMP-файлі із глибиною кольору 24 біт кожен піксель описується трьома байтами, що відповідають за червону, зелену та синю складові відповідно. Для того щоб закодувати символи тексту у такий BMP-файл використовуються молодші біти кожного байту. Їх зміна дуже незначно впливає на зміну кольору – зміна молодшого біта в одному байті змінює відтінок відповідного кольору у пікселі всього на  EMBED Equation.3 , що при перегляді помітити практично неможливо. Для того, щоб при відтворенні тексту із BMP-файлу була відома довжина зашифрованого тексту, перед записом власне тексту у BMP-файл, я записую у BMP-файл двобайтове число у якому збережено довжину вхідного тексту у байтах. Текст програми: #include "stdafx.h" #include "stdlib.h" #include "io.h" #include "math.h" FILE * pic, * txt, * out; void error(); void encrypt(char*,char*,char*); // text into bmp void decrypt(char*,char*,char*); // text from bmp int main(int argc, char* argv[]) { char mode; if (argc!=4) error(); mode=argv[1][0]; if ( mode=='e') encrypt(argv[1],argv[2],argv[3]); else if ( mode=='d') decrypt(argv[1],argv[2],argv[3]); else { error(); return 1; } puts("\nDONE!"); fclose(pic); fclose(out); return 0; } void encrypt(char* a1,char* a2,char* a3) //into bmp { int i=0, count=0; unsigned int ch, buf; int text=open(a3,1,1); unsigned int textlength=filelength(text); // calculate text file length close(text); if ( ((pic = fopen(a2,"rb")) != NULL) && ((txt = fopen(a3,"rb")) != NULL) && ((out = fopen("mix.bmp","wb")) != NULL) ) printf("Files've been successfully open!\n"); else { printf("Files can't be open!\n"); exit(1); }; printf(" mode: %s = ENCRYPTING;\n input image file: %s;\n",a1,a2); printf(" input text file: %s;\n output (mixed) image file: mix.bmp.\n",a3); for (i=0;i<55;i++) fputc(fgetc(pic), out); // ------------ copy BMP header --- // ------------------------------------------- save text length to BMP file --- for(i=0;i<=15;i++){ // text length is stored with 16 bits fread(&buf,1,1,pic); // read byte from BMP if ((textlength&(int)pow(2,i))==0) // if bit #i of current byte = 0 buf = buf & 0xFFFE; // set youngest bit of BMP byte to 0 else buf = buf | 0x0001; // else - to 1 fwrite(&buf,1,1,out); // write 'mixed' byte to BMP } while(!feof(txt)) { // -------------------------------- encode the text --- ch = fgetc(txt); // read byte from text for(i=0;i<=7;i++){ // cycle within text byte fread(&buf,1,1,pic); // read byte from BMP if ( (ch&(int)pow(2,i)) == 0 ) // if bit #i from text byte = 0 buf = buf & 0xFE; // set youngest bit of BMP byte to 0 else buf = buf | 0x01; // else - to 1 fwrite(&buf,1,1,out); // write 'mixed' byte to BMP } } fread(&buf,1,1,pic); // ---------------------------------- copy the rest --- while(!feof(pic)) { fwrite(&buf,1,1,out); fread(&buf,1,1,pic); } fclose(txt); } void decrypt(char* a1,char* a2,char* a3) //from bmp { int i=0, count=0; unsigned int ch, buf, textlength, l=0; if ( ((pic = fopen(a2,"rb")) != NULL) && ((out = fopen(a3,"wb")) != NULL) ) printf("Files've been successfully open!\n"); else { printf("Files can't be open!\n"); exit(1); }; printf(" mode: %s = DECRYPTING;\n input (mixed) image file: %s;\n",a1,a2); printf(" output text file: %s.\n",a3); for (i=0;i<55;i++) fgetc(pic); // ------------------------ skip BMP header --- textlength=0; // ---------------------------------------- get text length --- for(i=0;i<=15;i++){ // text length is stored with 16 bits fread(&buf,1,1,pic); // read byte from BMP if ( buf & 0x0001 == 1 ) // if the youngest bit of BMP byte = 1 textlength = textlength | (int)pow(2,i); // put 1 into bit #i of text byte } for (l=0;l<textlength;l++) { // -------------- extract the text from BMP --- ch = 0; for(i=0;i<=7;i++){ // cycle within text byte fread(&buf,1,1,pic); // read byte from BMP if ( buf & 0x01 == 1 ) // if the youngest bit of BMP byte = 1 ch = ch | (int)pow(2,i); // put 1 into bit #i of text byte else ch = ch & ~(int)pow(2,i); // else - put 0 } fwrite(&ch,1,1,out); // write 'extracted' byte to text file } } void error() { printf("Wrong parameters!\nSYNTAX: txt_into_bmp e|d <input file> <output file> \n"); getchar(); exit(1); } Висновок: виконуючи цю лабораторну роботу, я ознайомився із внутрішньою структурою растрових зображень формату BMP, вивчив та реалізував метод «невидимого зберігання» тексту у BMP-файлі.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!