Projects

stegnography

You are not Member of this Project.
Project Owner : KMSARASWATHI
Created Date : Sat, 08/01/2011 - 19:57
Project Description :

In this project, the message is encoded with audio file for the secure

transfer.

 

class mainframe extends JFrame implements ActionListener,Runnable
 {
 JLabel Lfilename,Lmessage,Ldesign,Ltitle;
 JButton Bplay,Bopen,Bsave,Bstop,Bencrypt,Bdecrypt,Bsend,Bclear;
 JTextArea Amessage;
 JTextField Tfilename;
 Icon Iplay,Iopen,Istop,Isave;
 String Ekey,Dkey,address,name;
 JFileChooser filechooser;
 File Ofilename,Sfilename,tempfilename;
 InetAddress ipaddress;
 int Copened,Cencrypt,Cdecrypt,Cplay,Cstop,Csave;
 InputStream ins;
 AudioStream as;
 Thread t;
 public mainframe()throws Exception
  {
   // frame
   super("Swathe 1.0 - Steganography Using Audio");
   Container con=getContentPane();
   con.setLayout(null);
   // Basic
   Copened=0;
   Cencrypt=0;
   Cdecrypt=0;
   Cplay=0;
   Csave=0;
   Cstop=0;
   t=new Thread(this);
   t.start();
   // Icons
   Iplay=new ImageIcon("c:\Icon\play.gif");
   Isave=new ImageIcon("c:\Icon\save.gif");
   Iopen=new ImageIcon("c:\Icon\open.gif");
   Istop=new ImageIcon("c:\Icon\stop1.gif");
   // file chooser
   filechooser=new JFileChooser();
   filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
   // comp
   Ltitle=new JLabel("Steganography Using Audio");
   Ldesign=new JLabel("Designed By : M.Dayananthan, D.Langesh,
M.Vanitha");
   Lfilename=new JLabel("File Name ");
   Lmessage=new JLabel("Message  ");
   Bplay=new JButton("",Iplay);
   Bopen=new JButton("",Iopen);
   Bsave=new JButton("",Isave);
   Bstop=new JButton("",Istop);
   Bclear=new JButton("Clear");
   Bencrypt=new JButton("Encoding");
   Bdecrypt=new JButton("Decoding");
   Bsend=new JButton("Send");
   Amessage=new JTextArea();
   Tfilename=new JTextField();
   // tool tips
   Tfilename.setToolTipText("Opened filename");
   Bplay.setToolTipText("play");
   Bopen.setToolTipText("open");
   Bsave.setToolTipText("save");
   Bstop.setToolTipText("stop");
   Tfilename.setEditable(false);
   // Bounds
   Ltitle.setBounds(300,30,250,25);
   Lfilename.setBounds(100,100,100,25);
   Tfilename.setBounds(100,125,230,25);
   Lmessage.setBounds(450,100,100,25);
   Amessage.setBounds(450,125,300,220);
   Bclear.setBounds(450,370,80,22);
   Bplay.setBounds(100,200,50,25);
   Bstop.setBounds(160,200,50,25);
   Bopen.setBounds(220,200,50,25);
   Bsave.setBounds(280,200,50,25);
   Bencrypt.setBounds(100,250,110,25);
   Bdecrypt.setBounds(220,250,110,25);
   Bsend.setBounds(160,300,110,25);
   Ldesign.setBounds(350,420,400,50);

   // add
   con.add(Ltitle);
   con.add(Ldesign);
   con.add(Lfilename);
   con.add(Tfilename);
   con.add(Lmessage);
   con.add(Amessage);
   con.add(Bclear);
   con.add(Bplay);
   con.add(Bopen);
   con.add(Bsave);
   con.add(Bstop);
   con.add(Bencrypt);
   con.add(Bdecrypt);
   con.add(Bsend);
   // actionListener
   Bclear.addActionListener(this);
   Bplay.addActionListener(this);
   Bopen.addActionListener(this);
   Bsave.addActionListener(this);
   Bstop.addActionListener(this);
   Bencrypt.addActionListener(this);
   Bdecrypt.addActionListener(this);
   Bsend.addActionListener(this);
  } // constr of mainframe
 public void run()
  {
   try
    {
     recv r=new recv();
    }
   catch(Exception e)
    {
     System.out.println(e);
    }
  }
 public void Audioencrypt(String message,File file,int key) throws
Exception
  {
   byte b[]=new byte[1];
   BigInteger Abi,Mbi;
   int k,k1;
   InputStream ins=new FileInputStream(file);
   OutputStream outs=new FileOutputStream(new File("d:\temp.wav"));
   for(int c=0;c<key;c++)
    {
     int ch=ins.read();
     outs.write(ch);
    }
   int len=message.length();
   byte mess[]=new byte[1];
   char chmess[]=new char[len+1];
   k=k1=0;
   for(int i=0;i<=len;i++)
    {
     message.getChars(0,len,chmess,0);
     if(i==0)
      {
       BigDecimal bd=new BigDecimal(len);
       BigInteger Blen=bd.toBigInteger();
       String Slen=Blen.toString(2);
       char Clen[]=new char[Blen.bitLength()];
       Slen.getChars(0,Blen.bitLength(),Clen,0);
       for(int j=0;j<=7;j++)
        {
         if(j==0)
          {
           for(k=0;k<8-Blen.bitLength();k++)
            {
             int n=ins.read(b);
             Abi=new BigInteger(b);
             String Aby=Abi.toString(2);
             int Alen=Abi.bitLength();
             if(b[0]<0)
               Alen++;
             char Ach[]=new char[Alen+1];
             Aby.getChars(0,Alen,Ach,0);
             if(b[0]==0)
              {
              }
             else
              {
             if(Ach[Alen-1]=='1')
              {
               if(Alen==Abi.bitLength())
                {
                 BigInteger bi=new BigInteger("11111110",2);
                 BigInteger big=Abi.and(bi);
                 b=big.toByteArray();
                }
               else
                {
                         BigInteger bi=new BigInteger("-1",2);
                         BigInteger big=Abi.subtract(bi);
                 b=big.toByteArray();
                }
              }
               outs.write(b);
              }
          }  //for loop k
        j=j+k-1;
        } // if of j
               else
                {
                 int n=ins.read(b);
                 Abi=new BigInteger(b);
                 String Aby=Abi.toString(2);
                 int Alen=Abi.bitLength();
                 if(b[0]<0)
                 Alen++;
                 char Ach[]=new char[Alen+1];
                 Aby.getChars(0,Alen,Ach,0);
                if(b[0]==0)
                 {
                  Alen=1;
                 }
                   if(Clen[j-k]=='0' && Ach[Alen-1]=='1')
                    {
                      if(Alen==Abi.bitLength())
                       {
                        BigInteger bi=new BigInteger("11111110",2);
                        BigInteger big=Abi.and(bi);
                        b=big.toByteArray();
                       }
                      else
                       {
                         BigInteger bi=new BigInteger("-1",2);
                         BigInteger big=Abi.subtract(bi);
                        b=big.toByteArray();
                       }
                    }
                   else if(Clen[j-k]=='1' && Ach[Alen-1]=='0')
                    {
                     if(Alen==Abi.bitLength())
                        {
                       BigInteger bi=new BigInteger("1",2);
                       BigInteger big=Abi.add(bi);
                       b=big.toByteArray();
                        }
                     else
                        {
                       BigInteger bi=new BigInteger("-1",2);
                       BigInteger big=Abi.add(bi);
                       b=big.toByteArray();
                        }
                    }
                  outs.write(b);
                } // end else
           } // for loop j
       } // end of if
     else
      {
       String slen=String.valueOf(chmess[i-1]);
       byte blen[]=slen.getBytes();
       BigInteger Blen=new BigInteger(blen);
       String Slen=Blen.toString(2);
       char Clen[]=new char[Blen.bitLength()];
       Slen.getChars(0,Blen.bitLength(),Clen,0);
       for(int j=0;j<=7;j++)
        {
         if(j==0)
          {
           for(k1=0;k1<8-Blen.bitLength();k1++)
            {
             int n=ins.read(b);
             Abi=new BigInteger(b);
             String Aby=Abi.toString(2);
             int Alen=Abi.bitLength();
                 if(b[0]<0)
                 Alen++;
             char Ach[]=new char[Alen+1];
             Aby.getChars(0,Alen,Ach,0);
               if(b[0]==0)
                      {
                      }
             else
              {
                     if(Ach[Alen-1]=='1')
                      {
                       if(Alen==Abi.bitLength())
                        {
                         BigInteger bi=new BigInteger("11111110",2);
                         BigInteger big=Abi.and(bi);
                         b=big.toByteArray();
                        }
                       else
                        {
                         BigInteger bi=new BigInteger("-1",2);
                         BigInteger big=Abi.subtract(bi);
                         b=big.toByteArray();
                        }
                      }
              }
               outs.write(b);
             }  //for loop k
               j=j+k1-1;
            } // if of j
       else
        {
         int n=ins.read(b);
          Abi=new BigInteger(b);
             String Aby=Abi.toString(2);
             int Alen=Abi.bitLength();
                 if(b[0]<0)
                 Alen++;
             char Ach[]=new char[Alen+1];
             Aby.getChars(0,Alen,Ach,0);
               if(b[0]==0)
                      {
                       Alen=1;
                      }
                   if(Clen[j-k1]=='0' && Ach[Alen-1]=='1')
                    {
                       if(Alen==Abi.bitLength())
                        {
                         BigInteger bi=new BigInteger("11111110",2);
                         BigInteger big=Abi.and(bi);
                         b=big.toByteArray();
                        }
                       else
                        {
                         BigInteger bi=new BigInteger("-1",2);
                         BigInteger big=Abi.subtract(bi);
                         b=big.toByteArray();
                        }
                    }
                   else if(Clen[j-k1]=='1' && Ach[Alen-1]=='0')
                    {
                       if(Alen==Abi.bitLength())
                        {
                         BigInteger bi=new BigInteger("1",2);
                         BigInteger big=Abi.add(bi);
                         b=big.toByteArray();
                        }
                       else
                        {
                         BigInteger bi=new BigInteger("-1",2);
                         BigInteger big=Abi.add(bi);
                         b=big.toByteArray();
                        }
                    }
               outs.write(b);
        } // end else
      } // for loop j
    } // end of else
  } // for loop i
 while(true)
  {
   int i=ins.read();
   if(i==-1) break;
   outs.write(i);
  }
   ins.close();
   outs.close();
  }
public void Audiodecrypt(File filename,int key)throws Exception
 {
 InputStream ins=new FileInputStream(filename);
 byte b[]=new byte[1];
 BigInteger bb1;
 char mess[]=new char[8];
 int c=0;
 for(int i=0;i<key;i++)
 {
  int n=ins.read();
 }
 for(int i=0;i<8;i++)
  {
   ins.read(b);
   bb1=new BigInteger(b);
   String str=bb1.toString(2);
   int len=bb1.bitLength();
   if(b[0]<0)
    len++;
   char ch[]=new char[len+1];
   str.getChars(0,len,ch,0);
   if(b[0]==0)
    mess[i]='0';
   else
    mess[i]=ch[len-1];
  }
 String dd=new String(mess);
 BigInteger bb=new BigInteger(dd,2);
 String s=bb.toString(2);
 int l=bb.intValue();
char me[]=new char[l];
int count=0;
for(int m=0;m<l;m++)
 {
for(int i=0;i<8;i++)
  {
   ins.read(b);
   bb1=new BigInteger(b);
   String str=bb1.toString(2);
   int len=bb1.bitLength();
   if(b[0]<0)
    len++;
   char ch[]=new char[len+1];
   str.getChars(0,len,ch,0);
   if(b[0]==0)
    mess[i]='0';
   else
    mess[i]=ch[len-1];
  }
 String dd1=new String(mess);
 BigInteger bb2=new BigInteger(dd1,2);
 String s1=bb2.toString(2);
 int l1=bb2.intValue();
 me[count]=(char)l1;
 count++;
 }
String message=new String(me);
Amessage.setText(message);
ins.close();
 }
 public void actionPerformed(ActionEvent ae)
  {
  try
   {
 // Action for encryption button
   if(ae.getSource()==Bencrypt)
    {
     if(Copened==1)
      {
       Ekey=JOptionPane.showInputDialog("Enter The Key For
Encryption");
//String type
       if(Ekey.trim().equals(""))
        JOptionPane.showMessageDialog(this,"Enter the
Key","Error",JOptionPane.ERROR_MESSAGE);
       else
        {
         // encrypt the message
         int key=Integer.parseInt(Ekey);
         Audioencrypt(Amessage.getText(),Ofilename,key);
         Cencrypt=1;
        }
      }
     else
      {
       JOptionPane.showMessageDialog(this,"File Not
Opened","Error",JOptionPane.ERROR_MESSAGE);
      }
    } // end of Bencrypt
// Action for Clear button
   else if(ae.getSource()==Bclear)
    {
     Amessage.setText("");
    } // end of clear button
// Action for Decrypt button
   else if(ae.getSource()==Bdecrypt)
    {
     if(Copened==1)
      {
       Dkey=JOptionPane.showInputDialog("Enter The Key For
Decryption");
//String type
       if(Dkey.trim().equals(""))
        JOptionPane.showMessageDialog(this,"Enter the
Key","Error",JOptionPane.ERROR_MESSAGE);
       else
        {
        // decrypt message
         int key=Integer.parseInt(Dkey);
        Audiodecrypt(Ofilename,key);
        Cdecrypt=1;
        }
      }
     else
      JOptionPane.showMessageDialog(this,"File Not
Opened","Error",JOptionPane.ERROR_MESSAGE);
    } // end of Decrypt button
// Action for Play button
   else if(ae.getSource()==Bplay)
    {
     if(Copened==1)
      {
        ins=new FileInputStream(Ofilename);
        as=new AudioStream(ins);
        AudioPlayer.player.start(as);
        Cplay=1;
        Cstop=0;
      } // start playing
     else
      JOptionPane.showMessageDialog(this,"File Not
Opened","Error",JOptionPane.ERROR_MESSAGE);
    } // end of play button
 
// Action for Stop button
   else if(ae.getSource()==Bstop)
    {
     if(Cplay==1)
      {
       Cplay=0;
       Cstop=1;
       AudioPlayer.player.stop(as);
      } // stop plaing
     else
      JOptionPane.showMessageDialog(this,"No Audio Is
playing","Error",JOptionPane.ERROR_MESSAGE);
    } // end of stop button
 
// Action for open Button
   else if(ae.getSource()==Bopen)
    {
     int r=filechooser.showOpenDialog(this);
     tempfilename=filechooser.getSelectedFile(); //File type
     if(r==JFileChooser.CANCEL_OPTION)
      JOptionPane.showMessageDialog(this,"File Not
Selected","Error",JOptionPane.ERROR_MESSAGE);
     else
      {
       name=tempfilename.getName();
       if(!(name.endsWith(".wav")))
         JOptionPane.showMessageDialog(this,"Select Only
Wav","Error",JOptionPane.ERROR_MESSAGE);
       else
         {
           Copened=1;
           Ofilename=tempfilename;
           Tfilename.setEditable(true);
           Tfilename.setText(name);
           Tfilename.setEditable(false);
          }
        }
    }   // end of Open button
// Action for Save Button
   else if(ae.getSource()==Bsave)
    {
     if(Copened==1 && Cencrypt==1 || Cdecrypt==1)
      {
       int r=filechooser.showSaveDialog(this);
       Sfilename=filechooser.getSelectedFile(); //File type
       InputStream in=new FileInputStream("d:\temp.wav");
       OutputStream out=new FileOutputStream(Sfilename);
       Ofilename=Sfilename;
       name=Sfilename.getName();
       Tfilename.setEditable(true);
       Tfilename.setText(name);
       Tfilename.setEditable(false);
       while(true)
        {
         int i=in.read();
         if(i==-1) break;
         out.write(i);
        }
      in.close();
      out.close();
      }
     else
      {
       String s;
       if(Copened==0)
        s="File not Opened";
       else if(Cencrypt==0)
        s="Not Encrypted";
       else
        s="Not Decrypted";
JOptionPane.showMessageDialog(this,s,"Error",JOptionPane.ERROR_MESSAGE);
      }
    } // end of save button
// Action for send button
   else if(ae.getSource()==Bsend)
    {
     if(Copened==1 && Cencrypt==1)
      {
       address=JOptionPane.showInputDialog("Enter The IPaddress");
       ipaddress=InetAddress.getByName(address);
       Socket socket=new Socket(ipaddress,6000);
       OutputStream out=socket.getOutputStream();
       InputStream in=new FileInputStream(Ofilename);
       while(true)
        {
         int i=in.read();
         if(i==-1) break;
         out.write(i);
        }
        in.close();
        out.close();
      }
     else
      {
       String s;
       if(Copened==1)
         s="Encryption not done";
       else
         s="Open the File first";
JOptionPane.showMessageDialog(this,s,"Error",JOptionPane.ERROR_MESSAGE);
      }
    }
   } // end try
   catch(Exception e)
    {
    //
JOptionPane.showMessageDialog(this,e,"Error",JOptionPane.ERROR_MESSAGE);
    }
  } // end of actionperformed
 }//end of class

class recv extends JFrame implements Runnable
 {
  JFileChooser fc;
  ServerSocket ss;
  Socket s;
  InputStream ins;
  OutputStream out;
  byte b[];
  int len;
 public recv() throws Exception
   {
     b=new byte[100];
     fc=new JFileChooser();
     fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
     ss=new ServerSocket(6000);
     torun();
   }
 public void torun() throws Exception
  {
     while(true)
      {
       s=ss.accept();
       ins=s.getInputStream();
       String str="Your have Receive An AudioFile.
Save them";
JOptionPane.showMessageDialog(this,str,"Information",JOptionPane.INFORMATI
ON_MESSAGE);
       int r=fc.showSaveDialog(this);
       File file=fc.getSelectedFile();
       out=new FileOutputStream(file);
       Thread t=new Thread(this);
       t.start();
      }
   }
  public void run()
   {
     try
       {
        while(true)
         {
          int n=ins.read();
          if(n==-1) break;
          out.write(n);
         }
      //  s.close();
        ins.close();
        out.close();
       }
     catch(Exception e)
       {
          System.out.println(e);
       }
   } // end of run
 } //end of class
 

public class techmeet1
 {
 public static void main(String arg[])throws Exception
  {
   mainframe frame=new mainframe();
   frame.setSize(800,600);
   frame.setVisible(true);

   frame.addWindowListener( new WindowAdapter()
    {
     public void windowClosing(WindowEvent we)
      {
       System.exit(0);
      }
    });
  } // end of main
 } // end of classimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import sun.audio.*;
import java.applet.*;
import java.math.*;
You are not authorized to access this content.
You are not authorized to access this content.
You are not authorized to access this content.
You are not authorized to access this content.
You are not authorized to access this content.