Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Datoteke i LSB supstitucija!

[es] :: C/C++ programiranje :: Datoteke i LSB supstitucija!

[ Pregleda: 2198 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

wipeout
Renato Jovic
Split

Član broj: 70705
Poruke: 9
*.sava.sczg.hr.



Profil

icon Datoteke i LSB supstitucija!10.12.2006. u 15:00 - pre 211 meseci
Moze li mi netko reci gresku u sljedecem programu? Naime meni nakon pokretanja program napravi kopiju datoteke ali koja je 4 puta veca od orginala( 2.5,11mb) i koju nije moguce nije otvoriti....

Code:

#include <stdio.h>
#include <conio.h>

int Lsb(unsigned char x)
{
   unsigned char mask=00000001;

   x=(x ^ mask);

  /* for(int t=128;t>0;t/=2)
        {
            if(x & t)
                printf("1 ");
            else
                printf("0 ");
        }

   printf("\n%c \n",x);
   */
   return x;
}

int main(void)
{
      FILE *slika,*stego;
    int bit,i=0,t=0;

    slika=fopen("c:\\slika.bmp","rb");
    stego=fopen("c:\\stego.bmp","wb");

    if(slika == NULL)
    {
        printf(">>Greska u otvaranju datoteke ! ");
        return 1;
    }

    while(!feof(slika))
    {
        bit=Lsb((char)fgetc(slika));
        fwrite(&bit,sizeof(bit),1,stego);        

    }

    return 0;
}





Unaprijed Hvala!
Kako glasi kletva kompjuterasa? Dabogda ti zena bila open source!
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
89.190.198.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Datoteke i LSB supstitucija!10.12.2006. u 20:33 - pre 211 meseci
(1) Ako od ulaznog fajla uzimaš unsigned char (koji je veličine jednog bajta), toliko treba i da pišeš nakon transformacije, da bi veličina izlaznog bila ista. Bio si pisao int, koji je kod tebe 4x veći od char, i otuda razlika u veličini.

(2) Provera "da li se došlo do kraja fajla" se vrši neposredno po čitanju znaka. Ne nakon što je neki znak (koji je mogući kraj fajla) već tretiran kao znak koji nije kraj fajla. Pogledaj učinjene ispravke.

Code:
#include <stdio.h>
#include <conio.h>

unsigned char Lsb(unsigned char x)
{
   unsigned char mask=00000001;

   x=(x ^ mask);

  /* for(int t=128;t>0;t/=2)
        {
            if(x & t)
                printf("1 ");
            else
                printf("0 ");
        }

   printf("\n%c \n",x);
   */
   return x;
}

int main(void)
{
    FILE *slika,*stego;
    int i=0,t=0;
    unsigned char bit;

    slika=fopen("C:\\slika.bmp","rb");
    stego=fopen("C:\\stego.bmp","wb");

    if(slika == NULL)
    {
        printf(">>Greska u otvaranju datoteke ! ");
        return 1;
    }

    while(1)
    {
        bit=Lsb((char)fgetc(slika));
        if(feof(slika)) break;
        fwrite(&bit,sizeof(bit),1,stego);
    }

    return 0;
}

Ipak se ++uje.
 
Odgovor na temu

wipeout
Renato Jovic
Split

Član broj: 70705
Poruke: 9
*.sava.sczg.hr.



Profil

icon Re: Datoteke i LSB supstitucija!16.12.2006. u 19:34 - pre 211 meseci
puno hvala na korisnom odgovoru..zaista jedna glupa pogreska s moje strane...imam jos jedno pitanje..
nedavno sam se poceo zanimati za steganografiju i napravio sam jednostavan program koji na zadnji bit BMP datoteke stavlja neku skrivenu poruku ..sve je to lijepo i krasno i ta datoteka se uspije modificirati,cak i slika ostane "ista",tj. korisniku nije vidljivo vidjeti promjene vidljivim okom.problem nastaje u tome kada nemam ideju kako te bitove koje sam promijeno ,tj poruka koju sam sakrio,vratiti nazad i prikazati je u obliku stringa...imam ideju kako ocitati stanja zadnjeg bita svakog pixela (0 ili 1),ali ne znam kako to interpretirati (spojiti) u string,tj poruku koju sam sakrio..ako sam bio nejasan,slobodno recite..svaka ideja je dobrodosla...unaprije hvala...
Kako glasi kletva kompjuterasa? Dabogda ti zena bila open source!
 
Odgovor na temu

[es] :: C/C++ programiranje :: Datoteke i LSB supstitucija!

[ Pregleda: 2198 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.