from steganography in jpeg by karan anand
steganography in compressed images(jpeg),dc coeffs not touched

dec(var)
function dec(var)



tabledc=[...
     2 0 0 0 0 0 0 0 0 0
     3 0 1 0 0 0 0 0 0 0
     3 0 1 1 0 0 0 0 0 0
     3 1 0 0 0 0 0 0 0 0
     3 1 0 1 0 0 0 0 0 0
     3 1 1 0 0 0 0 0 0 0
     4 1 1 1 0 0 0 0 0 0
     5 1 1 1 1 0 0 0 0 0
     6 1 1 1 1 1 0 0 0 0
     7 1 1 1 1 1 1 0 0 0
     8 1 1 1 1 1 1 1 0 0
     9 1 1 1 1 1 1 1 1 0];


%    run - no of bits required to encode data- total length - base code length(imp) -  base code use for both luminance and chr as in hex file...
tableac=[...
 0  1   3  2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0  2   4  2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0  3   6  3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 0  4   8  4 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
 0  5  10  5 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
 0  6  13  7 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
 0  7  15  8 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 
 0  8  18 10 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0
 0  9  25 16 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0
 0 10  26 16 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1
 1  1   5  4 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 1  2   7  5 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 
 1  3  10  7 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0
 1  4  13  9 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0
 1  5  16 11 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0
 1  6  22 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0
 1  7  23 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1
 1  8  24 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0
 1  9  25 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1
 1 10  26 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0
 2  1   6  5 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
 2  2  10  8 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0
 2  3  13 10 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 
 2  4  16 12 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0
 2  5  21 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1
 2  6  22 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0
 2  7  23 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1
 2  8  24 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0
 2  9  25 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1
 2 10  26 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0
 3  1   7  6 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
 3  2  11  9 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0
 3  3  15 12 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 
 3  4  20 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1
 3  5  21 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0
 3  6  22 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
 3  7  23 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0
 3  8  24 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1
 3  9  25 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0
 3 10  26 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1
 4  1   7  6 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
 4  2  12 10 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 
 4  3  19 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0
 4  4  20 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1
 4  5  21 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0
 4  6  22 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1
 4  7  23 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0
 4  8  24 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1
 4  9  25 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0
 4 10  26 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1
 5  1   8  7 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0
 5  2  13 11 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 
 5  3  19 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0
 5  4  20 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1
 5  5  21 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0
 5  6  22 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1
 5  7  23 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0
 5  8  24 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1
 5  9  25 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 0
 5 10  26 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1
 6  1   8  7 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0
 6  2  14 12 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 
 6  3  19 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0
 6  4  20 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1
 6  5  21 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0
 6  6  22 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1
 6  7  23 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0
 6  8  24 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1
 6  9  25 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0
 6 10  26 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1
 7  1   9  8 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0
 7  2  14 12 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 
 7  3  19 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0
 7  4  20 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1
 7  5  21 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0
 7  6  22 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1
 7  7  23 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0
 7  8  24 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1
 7  9  25 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0
 7 10  26 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1
 8  1  10  9 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
 8  2  17 15 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
 8  3  19 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0
 8  4  20 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1
 8  5  21 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0
 8  6  22 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1
 8  7  23 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0
 8  8  24 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1
 8  9  25 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0
 8 10  26 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1
 9  1  10  9 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 
 9  2  18 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0
 9  3  19 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
 9  4  20 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
 9  5  21 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1
 9  6  22 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0
 9  7  23 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1
 9  8  24 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0
 9  9  25 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1
 9 10  26 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0
10  1  10  9 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 
10  2  18 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1
10  3  19 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0
10  4  20 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1
10  5  21 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0
10  6  22 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1
10  7  23 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0
10  8  24 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1
10  9  25 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0
10 10  26 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1
11  1  11 10 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 
11  2  18 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0
11  3  19 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1
11  4  20 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0
11  5  21 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1
11  6  22 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0
11  7  23 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1
11  8  24 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0
11  9  25 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1
11 10  26 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0
12  1  11 10 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 
12  2  18 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1
12  3  19 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0
12  4  20 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1
12  5  21 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0
12  6  22 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1
12  7  23 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0
12  8  24 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
12  9  25 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
12 10  26 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1
13  1  12 11 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 
13  2  18 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0
13  3  19 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1
13  4  20 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0
13  5  21 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1
13  6  22 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0
13  7  23 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1
13  8  24 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0
13  9  25 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1
13 10  26 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0
14  1  17 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1
14  2  18 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0
14  3  19 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1
14  4  20 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0
14  5  21 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
14  6  22 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
14  7  23 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1
14  8  24 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0
14  9  25 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
14 10  26 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0
15  1  17 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
15  2  18 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
15  3  19 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
15  4  20 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
15  5  21 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
15  6  22 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0
15  7  23 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
15  8  24 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
15  9  25 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
15 10  26 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0];


img=imread(var,'jpg');
prop=imfinfo(var,'jpg');
%img=imread('save1.jpg','jpg');
%prop=imfinfo('save1.jpg','jpg');

h=ceil((prop.Height)/8);
w=ceil((prop.Width)/8);
offset=1,ptr=0;
buff=[];
answer=[];
fr=[];
fid1=  fopen('save.jpg','r','b');
fseek(fid1,623,-1);
fr1=fread(fid1,'ubit1');
fr1=fr1';
lfr=length(fr1)/8;
flag1=0;

for i=1:lfr-2
   if flag1==0
      fr=[fr fr1((8*i)-7:8*i)];
      if fr1((8*i)-7:8*i)==[1 1 1 1 1 1 1 1]
         flag1=1;
      end
   else
      flag1=0
   end
end

fid2=fopen('decoded.txt','w','b')

flag=0;

for i=1:h
   for j=1:w
      for y=1:3
         %if flag==1
          %  break;
        %end
      for k=1:12
         if tabledc(k,2:1+tabledc(k,1))==fr(offset:offset+tabledc(k,1)-1)
            offset=offset+tabledc(k,1)+k-1;
             break;
         end
      end
      
      for m=1:64
         
        if fr(offset:offset+3)==[1 0 1 0]
       	offset=offset+4;
         break;
         
      else
         if fr(offset:offset+10)==[1 1 1 1 1 1 1 1 0 0 1];
            offset=offset+11;
         else
      for k=1:160
         if tableac(k,5:4+tableac(k,4))==fr(offset:offset+tableac(k,4)-1)
            offset=offset+tableac(k,4);
            buff=fr(offset:offset+tableac(k,2)-1);
               answer=[answer buff(length(buff))];
               if length(answer)==8
                  if answer==[1 1 1 1 1 1 1 1]
                     flag=1;
                     fclose(fid2);
                     break;
                  else
                     fwrite(fid2,answer,'ubit1');
                     answer=[];
                  end
               end
               offset=offset+tableac(k,2);
            break;

 
            
            %if buff(0)==0;
             %  buff=ones(1,length(buff))-buff;
            %end
            
            %for l=1:length(buff)
             %  if buff(l)==0
              %    str=[str '0']
               %else
                %  str=[str '1']
               %end
            %end
                                       
         end
      end
   end%216
end%212

if(flag==1)
   break;
end
end

if(flag==1)
   break;
end
end

if(flag==1)
   break;
end
end

if(flag==1)
  break;
end
end


fclose(fid1);

            
         


Contact us at files@mathworks.com