一、创建工程生成bat文件,idea中File->Project Structure




二、监听3389远程端口方法
package com.company;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.util.Date;
import java.util.concurrent.atomic.AtomicBoolean;
public class MonitorLink {
public static void monitorLink(AtomicBoolean flag,AtomicBoolean rFlag,RequestData requestData){
String logFilePath = "log.txt";
try {
//查询正在会话的用户信息
Process processes = Runtime.getRuntime().exec("query session");
BufferedReader readers = new BufferedReader(new InputStreamReader(processes.getInputStream()));
String lineOne;
String lines = null;
while ((lineOne = readers.readLine()) != null) {
lines += lineOne;
}
//是否存在唯一用户在使用端口3389(是否正在与3389端口开启会话)
if (lines.contains("#")) {
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "netstat -ano | findstr :3389");
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.trim().startsWith("TCP")) {
String[] parts = line.trim().split("\\s+");
String localAddress = parts[1];
String foreignAddress = parts[2];
String state = parts[3];
//隔离机IP
InetAddress localHost = InetAddress.getLocalHost();
requestData.setLocalIP(localHost.getHostAddress());
//远程连接IP
String foreignIP = foreignAddress.split(":")[0];
//String foreignPort = foreignAddress.split(":")[1];
//是否建立远程连接
if (state.equals("ESTABLISHED")) {
// 获取远程主机名
InetAddress inetAddress = InetAddress.getByName(foreignIP);
requestData.setHostName(inetAddress.getHostName());
requestData.setLocalName(InetAddress.getLocalHost().getHostName());
//跟上一次比远程连接的IP不同
if(!requestData.getForeignIP().equals(foreignIP)){
requestData.setToken(TokenRequestSender.getToken());
//当前远程用户被管理员挤掉,发送当前远程用户的断开信息
RemoveIpState.removeIpState(requestData.getLocalIP(),requestData.getForeignIP(),requestData.getToken(),requestData.getTotal());
//requestData.setTotal(0);
//被挤掉后设置发送标识(只允许发送一次)
flag.set(true);
//记录正在使用的远程用户ip
requestData.setForeignIP(foreignIP);
if(flag.get()==true){
flag.set(false);
rFlag.set(false);
//发送远程连接信息从am.fuyaogroup.com获取密码
HttpRequestSender.sendRequest(requestData);
}
}else{
if(flag.get()==true){
//远程用户ip相同时设置发送标识(只允许发送一次)
requestData.setToken(TokenRequestSender.getToken());
flag.set(false);
rFlag.set(false);
//发送远程连接信息从am.fuyaogroup.com获取密码
HttpRequestSender.sendRequest(requestData);
}
}
}
}
}
process.waitFor();
}
//断开远程连接时
if (!lines.contains("#")) {
//设置发送标识(只允许发送一次)
if(rFlag.get()==false){
flag.set(true);
rFlag.set(true);
//发送断开信息到数据库将隔离机置为空闲
RemoveIpState.removeIpState(requestData.getLocalIP(),requestData.getForeignIP(),TokenRequestSender.getToken(),requestData.getTotal());
//requestData.setTotal(0);
}
}
}catch (Exception e){
String txtContent = "MonitorLink.java>>>>>>>>\t"+ "Exception:" + e.toString() + "\t" + "日期:" + new Date() + "\n";
Log.registerLog(txtContent,logFilePath);
}
}
}
修改系统的用户密码
package com.company;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
public class ChangeWindowsPassword {
public static void changeWindowsPassword(String ip,String token,String newPassword){
// 创建日志文件(如果文件不存在)
String logFilePath = "log.txt";
String content = "";
try {
// 构建命令(管理员身份运行)
String command = "cmd /c net user admin " + newPassword;
// 执行命令
Process process = Runtime.getRuntime().exec(command);
// 等待命令执行完成
process.waitFor();
// 输出命令执行结果
int exitValue = process.exitValue();
//执行修改密码命令,代码返回为0 ,说明成功
if (exitValue == 0) {
} else {
}
} catch (Exception e) {
e.printStackTrace();
content = "ChangeWindowsPassword.java>>>>>>>>\t" + "Exception:\t"+e.toString() + "日期:" + new Date() + "\n";
Log.registerLog(content,logFilePath);
}
}
}
938

被折叠的 条评论
为什么被折叠?



