2015-09-27 103 views
1

我正在研究一個mp3隱寫術項目,我想通過定期操作最低有效位(LSB)來對mp3文件中的文本進行編碼。我想對文本進行編碼,而不會對音頻進行任何重大更改。根據這個鏈接http://www.datavoyage.com/mpgscript/mpeghdr.htm有MP3頭帶有領先的MP3塊的信息。所以我想要一個關於如何使這成爲可能的指導?瞭解Mp3文件結構

+1

歡迎來到Stack Overflow。你的問題現在是相當廣泛和開放的。如果你更詳細地描述了你認爲應該接近的問題,你可能會有更好的運氣得到明確的答案。 – WhiteViking

回答

1

Mp3文件是由「幀」序列(它是約4萬分鍾播放一個MP3文件約11000幀)。在每個MP3文件的前端和末尾,有兩個信息字段(Id3 Tag v1,v2)包含有關Mp3文件的信息 - 這兩個字段是可選的,可以存在或不存在,但不會對Mp3文件的質量產生任何影響。你不應該在這裏隱藏staga-message,因爲它們很容易找到。幀由幀頭(32位)和幀體(包含壓縮聲音)組成。根據你的問題,隱寫會影響幀頭(32位),所以我會專注於幀頭!

在32位的幀頭中,由於它們的功能仍然存在一些「不重要的位」(詳細瞭解它們的功能)。總之,您可以在以下鏈接中使用位索引:24,27,28,29,30,31,32(第27和28位對聲音質量的影響很小),索引號爲。

所以這取決於你是否只想每幀7比特每幀5比特。 7位是由於我的工作(理論和源代碼測試)而可以在每幀上使用的最大位數,但其他人可以找到更大的位!

爲了訪問每個幀的字節數組,你可以編寫自己的類,但是Internet上有很多免費的類 - Mark Heath的NAudio.dll - (由於論壇法律,我無法發佈鏈接,你可以搜索谷歌) - 是一個有用的。

訪問了每個幀的字節數組後,您可以在/從Mp3文件中嵌入/提取數據。請注意:每個幀的32個字節數組的第一個比特是幀頭,因此您可以輕鬆識別不重要比特的精確索引!

我最近完成了關於此主題的最後一年論文(圖像上的隱寫術-LSB,奇偶校驗編碼和MP3 - 未使用位頭)。我的論文中的以下源代碼(用C#編寫)是一個可運行的隱寫術程序。我希望它可以幫助:http://www.mediafire.com/download/aggg33i5ydvgrpg/ThesisSteganography%2850900483%29.rar

Ps:我是越南人,所以它可以在我的句子中存在一些錯誤!