デコーダーに問題があり、誰か助けてくれるかどうか疑問に思っていましたか?
基本的に、ステガノグラフィーエンコーダー用のデコーダーを構築しようとしています。エンコーダーは、メッセージからのビットをサウンドファイルのすべてのバイトの LSB に配置します。
デコーダーの仕事は、それらのビットを集めて、それらから新しいメッセージを作成することです
このコードは、次のことを行うためのものです。
コード: すべて選択
メッセージ配列の場所に移動します。
bitindex を 0 に設定し、7 までインクリメントします // (8 ビットを 1 バイトに)
サウンドアレイの場所に移動
サウンドビットが等しい場合は、新しいバイトに 0 を追加します。そうでない場合は、新しいバイトの末尾に 1 を追加します
左にビットシフトを 1 回実行する
ビットインデックスをインクリメントする
さまざまな を使用printf
すると、クラッシュする前に約 3/4 回スムーズに実行されることがわかります。
実際のループは次のようになります。
{
int mIndex, sIndex, bitIndex, mask;
char *message[9];
mask = 1;
mIndex = 0;
unsigned char *soundFile = LoadWavAudioFile("boomedit.wav");
int soundFileSize = GetSizeOfWavFile();
bitIndex = 0;
for(mIndex = 0; mIndex < 8; mIndex++)//index for message
{
printf("1\n");
for(sIndex = 0; sIndex < soundFileSize; sIndex++)//index for soundfile
{
printf("2\n");
for(bitIndex = 0; bitIndex < 8;)
{
printf("3\n");
int test;
if((soundFile[sIndex] & mask) > 0)//is message bit > 0
{
printf("++++++++++++++++\n");
*message[mIndex] = (soundFile[sIndex] | 1);//adds a one to message byte
*message[mIndex] = *message[mIndex] <<1; //shift bits 1 placce left
printf("*****************\n");
}
else
{ //no change the LSB to 0
printf("------------------\n");
*message[mIndex]= soundFile[sIndex] & 254; //adds a zero at end o
*message[mIndex] = *message[mIndex] <<1; //shifts bits 1 place to left
printf("******************\n");
}
bitIndex++;
}
}
}
printf("\n hiddden letters:%s\n", *message); //print message
printf("\nalert 5\n");
}
何かに役立つことを願っています。