2015-09-27 100 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:我是越南人,所以它可以在我的句子中存在一些错误!