将文件加入到图形文件里;

简介:

今天到csdn有朋友短信问我如何写文件到图象内,反正是学习C#,就又写了一个这样的小工具

比如说公司不能携带源代码;可以带图片;要做的就是把源码用rar打个包,然后找个bmp文件,打开它,在尾部增加几个特征字符串,再把rar的数据增加上去,ok了。带出去后,打开bmp文件,找到特征字符串,把尾部记录复制出来,保存到一个新文件内;
该方法同样可以用于EXE文件.


为了简便操作,用C#编写了一个工具软件,以下是部分代码,(本人菜鸟臭作、高手勿笑):


ExpandedBlockStart.gif ContractedBlock.gif private bool EncodeDataToBitmap( string srcBmpFile, string srcFile, string destBmpFile) dot.gif {
InBlock.gif//加入到文件尾部
InBlock.gif
System.IO.FileStream SBF= null;
InBlock.gif System.IO.FileStream SF= null;
InBlock.gif System.IO.FileStream DBF= null;
InBlock.gifbyte[] srcBmpByte;
InBlock.gifbyte[] srcFileByte;
ExpandedSubBlockStart.gifContractedSubBlock.giftry dot.gif{
InBlock.gif SBF = new System.IO.FileStream(srcBmpFile,System.IO.FileMode.Open, System.IO.FileAccess.Read);
InBlock.gif SF = new System.IO.FileStream(srcFile,System.IO.FileMode.Open, System.IO.FileAccess.Read);
InBlock.gif DBF = new System.IO.FileStream(destBmpFile,System.IO.FileMode.CreateNew, System.IO.FileAccess.Write);
InBlock.gif
InBlock.gif srcBmpByte = new byte[SBF.Length];
InBlock.gif SBF.Read(srcBmpByte,0,(int)SBF.Length);
InBlock.gif srcFileByte = new byte[SF.Length];//取得该数据可以进一步加密一下或压缩一下
InBlock.gif
SF.Read(srcFileByte,0,(int)SF.Length);
InBlock.gif DBF.Write(srcBmpByte,0,srcBmpByte.Length);
InBlock.gif DBF.Write(System.Text.Encoding.Default.GetBytes("abcdefg"),0,System.Text.Encoding.Default.GetBytes("abcdefg").Length);
InBlock.gif DBF.Write(srcFileByte,0,srcFileByte.Length);
InBlock.gif
InBlock.gifreturn true;
ExpandedSubBlockStart.gifContractedSubBlock.gif }
catchdot.gif{
InBlock.gifreturn false;
ExpandedSubBlockStart.gifContractedSubBlock.gif }
finallydot.gif{
InBlock.gifif(SBF!=null)
InBlock.gif SBF.Close();
InBlock.gifif(SF!=null)
InBlock.gif SF.Close();
InBlock.gifif(DBF!=null)
InBlock.gif DBF.Close();
ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif }


代码就和上面所说的一样
1、读bmp数据
2、读文件数据
3、创建新bmp文件
4、写bmp数据
5、写特征字符串
6、写文件数据
7、完毕。

下面是拆开文件的代码:
ExpandedBlockStart.gif ContractedBlock.gif private bool DecodeDataFromBitmap( string srcBmpFile, string destFile) dot.gif {
InBlock.gif System.IO.FileStream SBF = null;
InBlock.gif System.IO.FileStream DF = null;
InBlock.gifbyte[] srcBmpByte;
ExpandedSubBlockStart.gifContractedSubBlock.giftrydot.gif{
InBlock.gif SBF = new System.IO.FileStream(srcBmpFile,System.IO.FileMode.Open,System.IO.FileAccess.Read);
InBlock.gif DF = new System.IO.FileStream(destFile,System.IO.FileMode.CreateNew,System.IO.FileAccess.Write);
InBlock.gif
InBlock.gif srcBmpByte = new byte[SBF.Length];
InBlock.gif SBF.Read(srcBmpByte,0,(int)SBF.Length);
InBlock.gif
InBlock.gifstring f = "";
InBlock.gifint offset = 0;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.giffor(int i=0;i<srcBmpByte.Length- 7;i++)dot.gif{
InBlock.gif f = "";
ExpandedSubBlockStart.gifContractedSubBlock.giffor(int j=i;j<i+7;j++)dot.gif{
InBlock.gif f+=(char)srcBmpByte[j];
ExpandedSubBlockEnd.gif }

ExpandedSubBlockStart.gifContractedSubBlock.gifif(f=="abcdefg")dot.gif{
InBlock.gif offset = i+7;
InBlock.gifbreak;
ExpandedSubBlockEnd.gif }

ExpandedSubBlockEnd.gif }

ExpandedSubBlockStart.gifContractedSubBlock.gifif(offset==0)dot.gif{
InBlock.gif f ="";
ExpandedSubBlockStart.gifContractedSubBlock.giffor(int i=srcBmpByte.Length-7;i<srcBmpByte.Length;i++)dot.gif{
InBlock.gif f+=(char)srcBmpByte[i];
ExpandedSubBlockEnd.gif }

ExpandedSubBlockStart.gifContractedSubBlock.gifif(f=="abcdefg")dot.gif{
InBlock.gif offset = srcBmpByte.Length-7;
ExpandedSubBlockStart.gifContractedSubBlock.gif }
elsedot.gif{
InBlock.gif MessageBox.Show("该文件未被加入数据!");
InBlock.gifreturn false;
ExpandedSubBlockEnd.gif }

ExpandedSubBlockEnd.gif }

InBlock.gif
InBlock.gif DF.Write(srcBmpByte,offset,srcBmpByte.Length-offset);
InBlock.gifreturn true;
ExpandedSubBlockStart.gifContractedSubBlock.gif }
catchdot.gif{
InBlock.gifreturn false;
ExpandedSubBlockStart.gifContractedSubBlock.gif }
finallydot.gif{
InBlock.gifif(SBF!=null)SBF.Close();
InBlock.gifif(DF!=null)DF.Close();
ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif }

过程是
1、读bmp文件
2、建立新文件
3、查找特征字符串
4、写新文件(特征字符串偏移位置+特征字符串长度)
5、完成。 



本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2005/04/28/146740.html,如需转载请自行联系原作者
相关文章
|
6天前
|
Windows
HiBit Uninstaller v3.2.10单文件版
HiBit Uninstaller是一款免费无广告功能强大的软件卸载程序,有强制卸载、批量卸载程序、Windows应用商店Appx管理器、Windows更新补丁管理器、浏览器扩展管理器、注册表清理、磁盘垃圾文件清理、快捷方式修复、文件粉碎程序、进程管理器、启动项管理器、系统服务管理器、计划任务管理器、资源管理器菜单项管理器、Windows系统还原管理器等功能。
19 2
|
6天前
文件
文件操作。
17 0
|
11月前
|
数据安全/隐私保护
p文件如何转为m文件
如果你是MATLAB爱好者,你一定知道MATLAB P文件,但是,你是否也和许多人一样,摸不着头脑?难道你也经常遇到MATLAB P文件加密问题,难以阅读和研究吗?那么,你需要一个MATLAB P文件解密工具!
|
编译器 数据库 C语言
文件(上)——“C”
文件(上)——“C”
|
IDE Linux 开发工具
.editorconfig文件
.editorconfig文件
50 0
|
Go 数据安全/隐私保护 Windows
WinNTSetup V5.3.0 Bata5 单文件版
WinNTSetup 是一款Windows系统硬盘安装器,支持从PE和本地安装系统,支持支持NT内核的系统。
WinNTSetup V5.3.0 Bata5 单文件版
|
Windows Linux
八、文件的处理
f = open ('‪H:\\呵呵.txt',encoding='utf-8',mode='r') s = f.read print(s) f.close f:变量,f_obj,file,f_handler,...文件句柄。
1072 0
|
PHP Windows JavaScript