2010-12-22 49 views
0

讀取頭文件名後,數據幀開始,我想知道數據幀大小是多少,即一個MP3播放器讀取的數據,以便如果我更改每個位框架對文件的聲音沒有太大的影響,我怎樣才能改變一個位(最後一位),所以在C#中效果最小。 請幫我如何使用C#隱藏數據在mp3數據幀中使用C#

回答

0

我能夠弄明白,並提出了我自己的算法,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文件的精確副本。

能夠取得:無噪音,我是能夠隱藏在3MB的MP3文件

解決高達5KB的文本數據:哪裏放

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

預definee位置每幀中的每一位文本數據,例如:第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

從mp3數據第一8字節幀

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. 

這是我能夠成功實施的一個解決方案。

3

你正在尋找被稱爲'steganography'.

它不是C#(這是很多複雜得多,人們會認爲),但this is related.技術。你可能想用p/invoke來使用它,或者把它移植到C#代碼中。

+0

你沒有得到我的問題,它沒有得到我的問題,它是關於如何使用C#語言讀取mp3數據幀,您建議的相關鏈接是在C,多少位數據幀用於播放歌曲... .hope你明白了我的觀點 – Napster 2010-12-27 09:38:52

0

我也在研究一個類似的項目...首先,你必須知道的MP3文件結構...我希望this link將幫助你有關MP3文件結構...一旦你清楚文件結構很容易就可以自己編寫代碼......將mp3文件作爲流獲取並從中提取每個幀(一旦知道了mp3文件結構,這應該很容易......事實上,它只需要幾個幾小時,我寫一個代碼來做到這一點)...和一個關於你的算法的建議。一個5 MB的MP3文件有或多或少的15,000幀...所以,如果你認爲每幀替換一點,你可以存儲的最大數據是2KB ...

我試過相同的,但我改變了一個字節frame ...這會在結果文件中引入一些噪音......關於如何減少噪音的任何建議......!?!?!?並希望我的答案可以幫助你... :)