C#を使用してMP3データフレームでデータを非表示にする方法

StackOverflow https://stackoverflow.com/questions/4507110

  •  12-10-2019
  •  | 
  •  

質問

ヘッダーの名声を読んだ後、データフレームが始まり、データフレームのサイズが何であるか、MP3プレーヤーが読み取ることを知りたいので、ファイルの音にあまり原因とすることなく、各フレームのビットを変更すると、 C#で効果が最小になるため、1つのビット(最後のビット)を変更できますか。私を助けてください

役に立ちましたか?

解決 3

私はそれを理解することができ、私自身のアルゴリズムである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

各フレームにテキストデータの各ビットを配置する場所の先入観以前の場所: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

例:テキストデータ1バイトです 01110001

MP3データフレームからの1番目の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.

これは、私が正常に実装できたソリューションの1つです。

他のヒント

探している技術は呼ばれています 「ステガノグラフィー」。

それはC#ではありません(これは思っているよりもはるかに複雑です)が これは関連しています。. 。 P/Invokeを使用してこれを使用するか、C#コードに移植することをお勧めします。

私は同様のプロジェクトにも取り組んでいます...まず第一にあなたがmp3ファイル構造について知っている必要があります...私は願っています このリンク MP3ファイル構造に関してあなたが役立ちます...ファイル構造について明確になったら、自分でコードを書くのは非常に簡単です... mp3ファイルをストリームとして取得し、そこから各フレームを抽出します(これは本当に簡単でなければなりませんMP3ファイル構造について知ってください...実際、私がそれを行うためにコードを書くのに数時間かかりました)...そしてあなたのアルゴリズムについての提案。 5 MB MP3ファイルには多かれ少なかれ15,000フレームがあります...したがって、フレームごとに少し交換することを考えると、保存できる最大のデータは2kbです。

私は同じことを試みましたが、フレームごとにバイトを変更しました...これにより、結果のファイルにいくつかのノイズが導入されました...ノイズを減らす方法についての提案...!?!?!??そして、私の答えがあなたを助けることを願っています... :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top