只读后EOF标记在C#
问题描述:
读取字节所以我玩隐写有点,并在文本/图像/声音/视频后,我试图做可执行文件。已知有在EOF之后在这些文件中放置隐藏消息的方法。它对我来说有一定的作用,但是我不知道我是否可以在EOF之后才开始阅读隐藏的消息,而不是所有的字节。只读后EOF标记在C#
我有读的.exe到字节数组,并把这些字节附加信息代码:
public byte[] CreateHiddenMessage(byte[] container, byte[] message)
{
byte[] newArray = new byte[container.Length + message.Length];
//copy original bytes
for (int i = 0; i < container.Length; i++)
{
newArray[i] = container[i];
}
//add hidden info
for (int i = 0; i < message.Length; i++)
{
newArray[i + container.Length] = message[i];
}
return newArray;
}
然后,我保存这些字节不喜欢任何问题:
public static void WriteToFile(String name, byte[] bytesToSave)
{
System.IO.File.WriteAllBytes(name, bytesToSave);
}
而现在它是我面临的问题。新的可执行文件效果很好,它具有额外的字节,但是当我试图检索隐藏的消息时,我必须浏览所有这些字节并将它们打印在我的应用程序中(首先是很多随机标志,然后是实际消息)。
只有在EOF标记出现后才开始读取那些隐藏的字节(并转换为字符)吗?我知道没有像“EOF角色”这样的东西,但仍然有任何想法?
我唯一的想法是在原始文件中隐藏消息的开始,如“## $$ ## [message]”,然后读取所有字节刚开始转换后,将某种标题thingy代码此代码后的字符。但我想避免它!
不要回避它。做到这一点。 或者,在消息的最后,添加一个32位的数字,确切的消息长度。然后从最后只读取数量的字节。 –
我最好的建议是在文件末尾添加消息长度作为示例45,然后从最后一个位置读取45个字符,这样您就不需要阅读所有字符来查找消息,你知道你的信息的位置和时间。 – Marko
哦,这实际上是个好主意,放置指示隐藏消息长度的数字。我将把它应用到代码中。这样我就不需要以低成本(如消息结尾的4位附加字节为32位数字)遍历所有字节(对于EXE文件而言,它经常是它们的一部分)。 –