-
大小: 3KB文件類型: .7z金幣: 1下載: 1 次發布日期: 2021-06-07
- 語言: Html/CSS
- 標簽:
資源簡介
http://hi.baidu.com/aijianmeng/blog/item/15de9200d52ec9191d9583eb.html
代碼片段和文件信息
#include?“InfoHidden.h“
int?main(int?argc?char?**argv)
{
????BITMAPFILEHEADER?bmpFileHeader;
????BITMAPINFOHEADER?bmpInfoHeader;
????size_t?nInfoSize?=?0;
????BYTE?binaryInifo[256]?=?{‘\0‘};
????FILE?*fp?=?NULL;
????Block?block;
????if?(argc?!=?3)
????{
????????printf(“usage:%s?bitmap?info“?argv[0]);
????????return?-1;
????}
????fp?=?fopen(argv[1]?“rb+“);
????if?(NULL?==?fp)
????{
????????printf(“%s\n“?strerror(errno));
????????return?-1;
????}
????if?(!readBMPFileHeader(fp?&bmpFileHeader))
????{
????????if?(bmpFileHeader.bfType?!=?0X4D42)
????????{
????????????printf(“不是bmp格式的位圖\n“);
????????????goto?end;
????????}
????}
????if?(!readBMPInfoHeader(fp?&bmpInfoHeader))
????{
????????if?(bmpInfoHeader.biBitCount?24)
????????{
????????????printf(“需要24位色或以上的位圖\n“);
????????????goto?end;
????????}
????????if?((bmpInfoHeader.biSize/12)?(nInfoSize/3))
????????{
????????????printf(“位圖不能存放當前的信息。能存放的最大信息量是:%d\n“?bmpInfoHeader.biSize/4);
????????????goto?end;
????????}
????}
????/*隱藏數據*/
????if?(hiddenInfo(fp?argv[2]))
????{
????????goto?end;
????}
????printf(“信息隱藏成功!\n“);
????/*測試獲取隱藏的數據*/
????fclose(fp);
????fp?=?fopen(argv[1]?“rb“);
????if?(NULL?==?fp)
????{
????????printf(“%s\n“?strerror(errno));
????????return?-1;
????}
????if?(!readBMPFileHeader(fp?&bmpFileHeader))
????{
????????if?(bmpFileHeader.bfType?!=?0X4D42)
????????{
????????????printf(“不是bmp格式的位圖\n“);
????????????goto?end;
????????}
????}
????if?(!readBMPInfoHeader(fp?&bmpInfoHeader))
????{
????????if?(bmpInfoHeader.biBitCount?24)
????????{
????????????printf(“需要24位色或以上的位圖\n“);
????????????goto?end;
????????}
????????if?((bmpInfoHeader.biSize/12)?(nInfoSize/3))
????????{
????????????printf(“位圖不能存放當前的信息。能存放的最大信息量是:%d\n“?bmpInfoHeader.biSize/4);
????????????goto?end;
????????}
????}
????/*解析數據*/
????analysisInfo(fp?binaryInifo);
??
????printf(“解析出來的數據是:%s\n“?binaryInifo);
end:
????fclose(fp);
????fp?=?NULL;
????return?0;
}
/*****************************************************************
*函數功能:讀取bmp文件頭
*傳入參數:fp?????????????bmp文件句柄
*傳出參數:bmpFileHeader??文件頭指針
*返?回?值:成功返回0,否則-1
*****************************************************************/
int?readBMPFileHeader(?FILE?*fp?BITMAPFILEHEADER?*bmpFileHeader?)
{
????size_t?nBlock;
????if?(NULL?==?fp)
????{
????????printf(“指針不能為NULL\n“);
????????return?-1;
????}
????nBlock?=?fread(bmpFileHeader?sizeof(BITMAPFILEHEADER)?1?fp);
????if?(nBlock?!=?1)
????{
????????printf(“讀取數據失敗:%s“?strerror(errno));
????????return?-1;
????}
????return?0;
}
/*****************************************************************
*函數功能:讀取bmp信息頭
*傳入參數:fp?????????????bmp文件句柄???????
*傳出參數:bmpInfoHeader??信息頭指針
*返?回?值:成功返回0,否則-1
*****************************************************************/
int?readBMPInfoHeader(?FILE?*fp?BITMAPINFOHEADER?*bmpInfoHeader?)
{
????size_t?nBlock;
????if?(NULL?==?fp)
????{
????????printf(“指
- 上一篇:html js 錄音 保存 試聽
- 下一篇:圖書系統HTML模版
評論
共有 條評論