了解Mp3文件结构

时间:2015-09-27 23:14:49

标签: java mp3 steganography

我正在开发一个mp3 Steganography项目,我希望通过定期操作最低有效位(LSB)来编码mp3文件中的文本。我想编码该文本而不对音频进行任何重大更改。根据这个链接http://www.datavoyage.com/mpgscript/mpeghdr.htm,有mp3标题,其中包含领先的mp3块的信息。所以我想要一个如何使这成为可能的指导?

1 个答案:

答案 0 :(得分:1)

Mp3文件由"帧"的序列组成。 (播放4分钟的mp3文件约为11000帧)。在每个MP3文件的前端和末尾有两个信息字段(Id3标签v1,v2)包含有关Mp3文件的信息 - 这两个字段是可选的,可以存在与否,而不会对Mp3文件的质量产生任何影响。你不应该在这里隐藏staga-message,因为它们很容易找到。帧由帧头(32位)和帧体(包含压缩声音)组成。根据你的问题,隐写术会影响帧头(32位),所以我会专注于帧头!

在32位的帧头中仍然存在一些"不重要的位"由于它们的功能(详细了解它们的功能)。简而言之,您可以使用以下索引中的位:24,27,28,29,30,31,32(第27位和第28位对声音质量影响很小),此链接中的索引为{{{ 3}}

因此,这取决于您是否每帧只需5位,每帧7位。由于我的工作(理论和源代码测试),7位是每帧可以使用的最大位数,但是其他人可以找到更大的位!

为了访问每个帧的字节数组,您可以编写自己的类,但Internet上有许多免费的可用类--Mark Heath的NAudio.dll - (由于论坛法规,我无法发布链接,您可以搜索谷歌) - 是一个有用的。

访问每个帧的字节数组后,您可以在Mp3文件中嵌入/提取数据。注意:每帧的32位字节数组的第一位是帧头,因此您可以轻松识别不重要位的精确索引!

我最近完成了关于这个主题的最后一年论文(图像上的隐写术--LSB,奇偶校验编码和MP3 - 未使用的Bits Header)。我的论文(用C#编写)的以下源代码是一个可运行的隐写程序。我希望它可以提供帮助:https://en.wikipedia.org/wiki/MP3#/media/File:Mp3filestructure.svg

Ps:我是越南人,所以我的句子中可能会出现一些错误!