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 |
|
|