2016-08-04 54 views
2

讀取字節所以我玩隱寫有點,並在文本/圖像/聲音/視頻後,我試圖做可執行文件。已知有在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代碼此代碼後的字符。但我想避免它!

+0

不要回避它。做到這一點。 或者,在消息的最後,添加一個32位的數字,確切的消息長度。然後從最後只讀取數量的字節。 –

+1

我最好的建議是在文件末尾添加消息長度作爲示例45,然後從最後一個位置讀取45個字符,這樣您就不需要閱讀所有字符來查找消息,你知道你的信息的位置和時間。 – Marko

+0

哦,這實際上是個好主意,放置指示隱藏消息長度的數字。我將把它應用到代碼中。這樣我就不需要以低成本(如消息結尾的4位附加字節爲32位數字)遍歷所有字節(對於EXE文件而言,它經常是它們的一部分)。 –

回答

1

因此,我決定採用Gerardo Grignoli的想法,並在持有該消息的可執行文件末尾寫入隱藏消息的長度。