• 大小: 3KB
    文件类型: .7z
    金币: 2
    下载: 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(“指

评论

共有 条评论

相关资源