私はステガノグラフィで遊んでいます。画像からテキストファイルを取得しようとしています。ファイルを読み込んでビットを取得できますが、これらのビットの抽出に問題があります。ビット抽出とステガノグラフィ
int getbits(pixel p) {
return p & 0x03;
}
char extract (pixel* image) {
static int postion;
postion = 0;
postion = *image;
postion++;
char curChar;
curChar = '\0';
for(int i = 0; i<4; ++i) {
curChar = curChar << 2;
curChar = curChar | getbits(postion);
}
return curChar;
}
ピクセルは符号なしの文字です。返り値としてextract()
とfputc(3)
というループがあります。私はこれらのビットからゴミを得るように感じる。これは、私に大型の(1.5ギガ)txtファイルを返す原因となります。あなたはオリあなたはすぐにそれを上書きしている指摘するように、カウントを保持するために、静的なVARを使用しようとしている間ので、[編集] -
void decode(PgmType* pgm, char output[80])
{
FILE*outstream;
int i, length;
outstream = fopen(output, "w");
if(!outstream)
{
fatal("Could not open");
}
for(i=0; i < 16; ++i)
{
length = length << 2;
length = length | getbits(*pgm->image);
}
if ((length* 4) < (pgm->width * pgm->height))
{
fatal("File Too Big");
}
for (i = 0 ;i<length; ++i)
{
fputc(extract(pgm->image), outstream);
}
fclose(outstream);
}
ステノグラフィーまたは**ステガノグラフィー**? –
抽出を呼び出すループを表示します。画像を正しくループしていることを示す必要があります。 – borrible
@borribleループを含めました –