2015-09-27 7 views
1

Я работаю над проектом в формате mp3 Steganography, и я хочу кодировать текст внутри mp3-файла, манипулируя наименее значимыми битами (LSB) через регулярные промежутки времени. Я хочу кодировать этот текст без существенных изменений в аудио. И согласно этой ссылке http://www.datavoyage.com/mpgscript/mpeghdr.htm есть mp3-заголовки, которые несут информацию о ведущем mp3-фрагменте. Итак, я хочу дать рекомендации о том, как я могу сделать это возможным?Понимание структуры Mp3-файла

+1

Добро пожаловать в переполнение стека. Ваш вопрос в его нынешнем виде довольно широкий и открытый. Если вы более подробно описываете, как * вы считаете, что проблема должна быть поставлена, вам может быть лучше получить четкий ответ. – WhiteViking

ответ

1

Mp3-файл выполнен из последовательностей «Рамки» (это около 11000 кадров для mp3-файла с 4-минутным воспроизведением). В начале и конце каждого файла MP3 есть два поля информации (Id3 Tag v1, v2), содержащий информацию о Mp3-файле - эти два поля являются необязательными и могут существовать или не влиять на качество Mp3-файла. Вы не должны скрывать сообщение staga здесь, потому что их можно легко найти. Кадр состоит из заголовка кадра (32 бита) и тела кадра (содержит сжатый звук). Согласно вашему вопросу, стеганография повлияет на заголовок кадра (32 бит), поэтому я сосредоточусь на заголовке кадра!

В 32 битах заголовка кадра по-прежнему существует некоторый «несущественный бит» из-за их функций (подробнее читайте об их функции). Короче говоря, вы можете использовать бит в индексе: 24, 27, 28, 29, 30, 31, 32 (с бит 27 и 28 будет иметь небольшое влияние на качество звука) с индексом на картинке в этой ссылке: https://en.wikipedia.org/wiki/MP3#/media/File:Mp3filestructure.svg.

Так что это зависит от того, хотите ли вы всего 5 бит на кадр из 7 бит на кадр. 7 бит - это максимальное количество бит, которое вы можете использовать на каждом кадре из-за моей работы (как теории, так и теста по исходному коду), но кто-то может найти больший бит!

Для доступа к массиву байтов каждого фрейма вы можете написать свой собственный класс, но в Интернете есть много бесплатных классов - NAudio.dll от Mark Heath - (я не могу опубликовать ссылку из-за законов форума, вы можете поиск Google) - является полезным.

Получив доступ к массиву байтов каждого фрейма, вы можете вставлять/извлекать данные в/из Mp3-файла. Обратите внимание, что: 32 первых бита байтового массива каждого кадра - это заголовок фрейма, поэтому вы можете легко определить точный индекс несущественных бит!

Я недавно закончил свою последнюю диссертацию на эту тему (стеганография на изображениях -LSB, кодирование четности и MP3 - неиспользуемые заголовки бит). Следующие исходные коды из моей диссертации (написанные на C#) - это запускаемая программа стеганографии. Я надеюсь, что это может помочь: http://www.mediafire.com/download/aggg33i5ydvgrpg/ThesisSteganography%2850900483%29.rar

Пс: Я вьетнамский, поэтому он может содержать некоторые ошибки в моих предложениях!