как скрыть данные в фрейме mp3 с помощью C # - PullRequest
0 голосов
/ 22 декабря 2010

после прочтения славы заголовка начинается фрейм данных, я хочу знать, каков размер фрейма данных, который читает mp3-плеер, так что, если я изменяю один бит каждого фрейма, не сильно влияя на звучание файла и как я могу изменить один бит (последний бит), чтобы эффект был минимальным в C #. пожалуйста, помогите мне

Ответы [ 3 ]

3 голосов
/ 22 декабря 2010

Технология, которую вы ищете, называется 'стеганография'.

Это не C # (это намного сложнее, чем можно подумать), но этосвязано. .Вы можете использовать это, используя p / invoke, или перенести его в код C #.

0 голосов
/ 22 апреля 2014

Я смог понять это и придумал свой собственный алгоритм, Rzr, что бы вы ни говорили, было правильно.

Файл mp3 является сильно сжатым файлом, любое изменение бита в любом кадре может привести к огромному шуму.

есть способ обойти это,

Soln_1: Hide the text data and in any of the bit of each byte and reconstruct the frame using humming code 

Soln_2: which i was able to do it, using Layer III, BitRate=128000, SampleRate=441000, Padding=0

недостатки : размер файла будет увеличен за исключением того, что непредвиденный пользователь не может предсказать, если у него нет точной копии исходного mp3-файла.

Способность достичь : без шума я смог скрыть текстовые данные размером до 5 КБ в 3-мегабайтном mp3-файле

Работа вокруг :

step1: scan every 8 bytes in each frame
step2: take a 8 bits from the text data

Предварительно определите место, куда нужно поместить каждый бит текстовых данных в каждом кадре, например: 4-е место.

step3:  check every 4th bit location of each byte of the frame is same as the each bit of the text data are same

т.д .: текстовые данные один байт 01110001

первые 8 байт из фреймов данных mp3

byte_1: 01101111 -->4th location bit is 0
byte_2: 01111111 -->4th location bit is 1
byte_3: 01111001 -->4th location bit is 1
byte_4: 01111011 -->4th location bit is 1
byte_5: 01100011 -->4th location bit is 0
byte_6: 01101100 -->4th location bit is 0
byte_7: 01101011 -->4th location bit is 0
byte_8: 01110011 -->4th location bit is 1

таким образом, этот байт из кадра, каждое местоположение 4th битов имеет биты, которые совпадают с битами текстовых данных.

Step4: note down the location of the byte in the mp3 data frame, in this case its "1" that is 1st location

если байт из фрейма данных mp3 не совпадает с битами данных, пропустите байт и переходите к следующему байту, продолжайте делать то же самое, пока не будут скрыты все текстовые данные.

Step5:now take all the locations where the text data is present and add these as a byte to the data frame of mp3.

это одно решение, которое мне удалось успешно реализовать.

0 голосов
/ 03 февраля 2011

Я также работаю над аналогичным проектом ... Прежде всего, вы должны знать о структуре mp3-файлов ... Надеюсь, эта ссылка поможет вам относительно структуры mp3-файлов ... ОднаждыВы понимаете структуру файла, довольно легко написать код самостоятельно ... Получите mp3-файл в виде потока и извлеките из него каждый кадр (Это должно быть очень просто, если вы знаете структуру mp3-файла ... На самом деле,Мне потребовалось всего пару часов, чтобы написать код для этого) ... И предложение о вашем алгоритме.В 5-мегабайтном mp3-файле более или менее 15 000 кадров ... Итак, если вы подумаете о замене бита на кадр, самое большое количество данных, которое вы можете сохранить, составляет 2 КБ ...

Я попробовал то же самое, но изменилБайт на кадр ... Это привело к некоторому шуму в результирующем файле ... Любые предложения о том, как уменьшить шум ...!?!?! ??И надеюсь, мой ответ поможет вам ...:)

...