聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

圖片文件合成器是什么?圖片、文件合成器的原理與方法

來源:CSDN 時間:2023-02-02 10:01:39

圖片文件合成器


(資料圖片)

背景

初學C語言,突然接觸到這個功能,發現這個功能有很多用途。所以,寫個博客記錄一下。

原理

圖片、文件合成的原理其實就是將文件的二進制代碼加載到圖片的二進制代碼后面,合成一個二進制文件;     windows加載器在進行加載時只結合文件的后綴名,檢索文件的標志頭和結束標志的位置讀取。也就是因為如此,我們有了可改造的空間。

為了更加清楚的了解其原理,根據自己的理解,繪制如下原理圖。 為了進一步了解其原理,將三個文件的二進制文件打開,根據其首末對比深入了解。(1:JPG文件的原碼、2:ZIP文件的原碼、3:合成文件的原碼)

方法

關于圖片文件合成器,本文闡述了兩種方法。<1>根據cmd中的copy命令將圖片、文件進行合成。<2>利用C語言寫了一段代碼進行圖片、文件的合成。

方法一

<1>假設創建一個JPG文件和一個ZIP文件(該文件是一個DOCX文件經過壓縮得到)

<2>win+R→cmd→copy /?命令 由上述原理可知 copy 命令下的 /B 命令即可將兩個文件的二進制文件放到一個文件中去。<3>copy /b 1.jpg+2.zip 3.zip 即可完成圖片、文件的合成。 生成的文件名假設為3.jpg。<4>3.jpg<5>將3.jpg文件的后綴名改為.zip(即改為壓縮文件) 解壓后,你會發現原來的DOCX文件。

方法二

<1>將需要進行合成的文件跟程序代碼放在相同的路徑下。

<2>C語言代碼實現跟方法一原理相同,所以直接上代碼。

#include#includevoid main(){//聲明變量FILE *f_pic,*f_file,*f_compound;char pic_name[20],file_name[20],compound_name[20];char ch;/printf("<>\n");printf("Enter the name of pic:   ");scanf("%s",&pic_name);printf("Enter the name of file:  ");scanf("%s",&file_name);printf("Enter the name of compound:");scanf("%s",&compound_name);///讀寫二進制文件 if(f_pic = fopen(pic_name,"rb"));else{printf("Can not open %s !!!!!!!\n",pic_name);exit(0);}if(f_file = fopen(file_name,"rb"));else{printf("Can not open %s !!!!!!!\n",file_name);exit(0);}if(f_compound = fopen(compound_name,"wb"));else{printf("Can not open %s !!!!!!!\n",compound_name);exit(0);}///feof()函數判斷二進制文件是否結束while(!feof(f_pic)){ch = fgetc(f_pic);fputc(ch,f_compound);}fclose(f_pic);while(!feof(f_file)){ch = fgetc(f_file);fputc(ch,f_compound);}fclose(f_file);fclose(f_compound);system("pause");}

<2>運行結果

結束語

看一下文件大小,你會發現合成文件等同于JPG文件+ZIP文件。      這個功能可以用來隱藏一些重要文件,還可以做一些加密文件......      哈哈哈,第一次寫博客,初學者記錄一下。      (初學者,語言有些簡單,如有錯誤,希望提出批評哦! )

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线