春天到了,今天在贴吧看到有个人在散播种子, 然后贴了张图片,说种子就藏在这张图片之中。  只要另存为后拓展名改成rar后能被压缩软件识别并解压。尝试了一下,竟然真可以。

    挺好奇的,于是就开始查找jpg图片的格式信息,发现jpg、bmp、gif文件头部有标识文件大小的数据段,所以我想如果在文件不管写入什么文件都是可以被识别的,而rar格式会从头搜索直到找到正确的rar头,然后根据这个rar头解压。于是其实只要把这两个文件合并成一个文件就可以了。于是就用VC++、C#写了一个小程序尝试了下果真如此。
VC++ MFC
bool Cjpg_rarDlg::dealwith(TCHAR* path1, TCHAR* path2, TCHAR* path3)
{
std::ifstream inf1, inf2;
std::ofstream ouf;
inf1.open(path1,std::ios::binary);
if(!inf1)
{
MessageBox(_T("待合成图片文件不存在!"));
return false;
}
inf2.open(path2,std::ios::binary);
if(!inf2)
{
MessageBox(_T("待合成rar压缩文件不存在!"));
inf1.close();
return false;
}
ouf.open(path3, std::ios::out| std::ios::binary);
if(!ouf)
{
MessageBox(_T("创建文件失败!"));
inf1.close();
inf2.close();
return false;
}
char buff[1024];
while(!inf1.eof())
{
inf1.read((char*)buff, sizeof(buff));
ouf.write((char*)buff, inf1.gcount());//用inf1.gcount()防止末尾缓存区有空的
}
inf1.close();
while(!inf2.eof())
{
inf2.read((char*)buff,sizeof(buff));
ouf.write((char*)buff ,inf2.gcount());//用inf1.gcount(/防止末尾缓存区有空的
}
inf2.close();
ouf.close();
MessageBox(_T("合成成功,请检查!"));
return true;
}
C#
C#
private bool dealwith(string path1,string path2,string path3)
       {
           FileStream inf1 = null;
           FileStream inf2 = null;
           FileStream outf = null;
           byte[] buff = new byte[1024];//缓冲区
           try
           {
               inf1 = new FileStream(path1, FileMode.Open);
               inf2 = new FileStream(path2, FileMode.Open);
               outf = new FileStream(path3, FileMode.CreateNew);
               int hasRead = 0;

hasRead = inf1.Read(buff, 0,1024);
               while (hasRead != 0)
               {
                   outf.Write(buff, 0, hasRead);
                   hasRead = inf1.Read(buff, 0, 1024);
               }

hasRead = inf2.Read(buff, 0, 1024);
               while (hasRead != 0)
               {
                   outf.Write(buff, 0, hasRead);
                   hasRead = inf2.Read(buff, 0, 1024);
               }
               return true;
           }
           catch (Exception err)
           {
               MessageBox.Show("发生错误!\n错误信息:\n" + err.Message);
               return false;
           }
           finally
           {
               inf1.Close();
               inf2.Close();

outf.Close();
           }

}

 
http://download.csdn.net/detail/zhaozeyang/4339499 源码及程序下载地址

图片文件中隐藏一个rar压缩包的秘密相关推荐

  1. VBA—压缩文件夹成一个rar压缩包

    应用背景:如果在一项工作中需要自动生成很多文件,然后再压缩 ,然后再进行上传等操作. 每次都手动压缩会很麻烦,所以可以加一点代码进行自动压缩rar文件. 说明: 1.思路就是调用cmd来做. (win ...

  2. 为什么QQ软件中无法显示rar压缩包

    有时候我们会遇到上述的情况:QQ软件中无法显示rar压缩包,明明电脑发送的时候是有文件的但是QQ软件显示的时候就是没有文件. 我查了一下 RAR的名字源自其作者Eugene Roshal,为Rosha ...

  3. 是否可以在另一个CSS文件中包含一个?

    是否可以在另一个CSS文件中包含一个? #1楼 是的,可以使用@import并提供css文件的路径,例如 @import url("mycssfile.css"); 要么 @imp ...

  4. android中的BitMap(二)从网络和资源文件中获得一个BitMap

      //取得网络上图片资源的路径 String urlstring="http://img.wallba.com/Public/Upload/Image/qichebizi/ asidunm ...

  5. 在git 2.13之前,只保存多个已更改的文件中的一个文件

    如何在我的分支上只隐藏多个已更改文件中的一个? #1楼 类似的情况. 提交并意识到它不行. git commit -a -m "message" git log -p 根据答案,这 ...

  6. 编写一个头文件,头文件中定义一个宏cube(x)用于求一个数的平方

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p145 7.1.2 上级实训内容 [实现内容17]编写一个头文件,头文件中定义一个宏cube(x)用于 ...

  7. 基类和派生类写在一个文件中_BootISO:从 ISO 文件中创建一个可启动的 USB 设备...

    今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...

  8. 如何在另一个JavaScript文件中包含一个JavaScript文件?

    JavaScript中是否有类似于CSS中@import的内容,可让您在另一个JavaScript文件中包含一个JavaScript文件? #1楼 而不是在运行时添加,而是使用脚本在上传之前进行串联. ...

  9. BootISO:从 ISO 文件中创建一个可启动的 USB 设备

    为了安装操作系统,我们中的大多数人(包括我)经常从 ISO 文件中创建一个可启动的 USB 设备.为达到这个目的,在 Linux 中有很多自由可用的应用程序.甚至在过去我们写了几篇介绍这种实用程序的文 ...

最新文章

  1. Fedora 19下Guacamole的安装使用
  2. 京东果然发福了:宣布涨薪两个月! 2 年内将员工平均薪资涨至 16 薪
  3. Understanding HBase and BigTable 译文
  4. php实现tail,Linux-如何用php实现Linux下的tail -f命令?
  5. Android之动画
  6. jQuery Validate 验证,校验规则写在控件中的具体例子
  7. [C++/CLI编程宝典][5]编译与反汇编
  8. AD迁移工具:ADMT
  9. MyBatis扫描mapper
  10. PCB CS架构(工程系统)实现单点登入方法
  11. PHP Xdebug调试专题
  12. 深度学习之激活函数详解
  13. openresty 前端开发入门一
  14. 网吧技术员应聘问卷你能答多少
  15. 深度学习综述(下载PDF版)
  16. 北京地区常用dns地址解析速度快
  17. ACE+TAO 通信中间件
  18. 【全奖博士】香港中文大学LaVi Lab王历伟教授团队招生
  19. Playing Atari with Deep Reinforcement Learning
  20. 51单片机应用篇-- --智能门锁

热门文章

  1. 2022-2028年中国三元锂电池行业市场运营格局及前景战略分析报告
  2. Zcash:工作原理
  3. 场景中配置阴影(个人笔记)
  4. vue页面fav icon
  5. Qt中使用QByteArray读文件得到的数据后转成int
  6. 串行的blast+2.2.25本地化: blastdbcmd,makeblastdb,blastn.简介
  7. CHIL-SQL-NULL 函数
  8. 快递100发送短信提醒
  9. 十二五中国电信宽带战略解析(四):主导与包容
  10. 交流直流电压检测电路