| Displaying  Source Code(s)  
 
 
          
            |  |  |  
            | 
              
                | Steganongrapy using Audio ( Project ) 
 --------------------------------------------------------------------------------
 
 Description : In this project, the message is encoded with audio 
                file for the secure transfer.
 
 import 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.*;
 
 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 class
 |  |  |