#711·trojan

如何构建特洛伊木马协议

作者: mohuangNPC创建于 2024年11月4日更新于 2025年10月25日
标签enhancement

// 具体的线程接受请求 private static final int LISTEN_PORT = 7890; private static final String TROJAN_HOST = "xxx.xxx.xxx"; private static final int TROJAN_PORT = 443; private static final String password = "password1";

public static void main(String[] args) { try (ServerSocket serverSocket = new ServerSocket(LISTEN_PORT)) { System.out.println("Trojan proxy server listening on port " + LISTEN_PORT); while (true) { Socket clientSocket = serverSocket.accept(); new Thread(new ClientHandler(clientSocket)).start(); } } catch (Exception e) { e.printStackTrace(); } }

/**

  • 具体的线程接受请求
  • +-----------------------+---------+----------------+---------+----------+
  • | hex(SHA224(password)) | CRLF | Trojan Request | CRLF | Payload |
  • +-----------------------+---------+----------------+---------+----------+
  • | 56 | X'0D0A' | Variable | X'0D0A' | Variable |
  • +-----------------------+---------+----------------+---------+----------+
  • where Trojan Request is a SOCKS5-like request:
  • +-----+------+----------+----------+
  • | CMD | ATYP | DST.ADDR | DST.PORT |
  • +-----+------+----------+----------+
  • | 1 | 1 | Variable | 2 |
  • +-----+------+----------+----------+ */ static class ClientHandler implements Runnable { private final Socket clientSocket;

public ClientHandler(Socket clientSocket) { this.clientSocket = clientSocket; }

@Override public void run() { long threadId = Thread.currentThread().getId(); String requestLine = ""; try (InputStream clientInput = clientSocket.getInputStream(); OutputStream clientOutput = clientSocket.getOutputStream()) { TrojanWrapperRequest trojanWrapperRequest = new TrojanWrapperRequest(); TrojanWrapperRequest.TrojanRequest trojanRequest = new TrojanWrapperRequest.TrojanRequest(); // 设置密码和请求 { trojanRequest.setCmd(0X01); String …

内容来源: trojan-gfw/trojan