diff --git a/src/main/java/ai/CAPECTracer.java b/src/main/java/ai/CAPECTracer.java index 95753adf877e9672d72d835ac0de662f18e0bb77..d18ecd833b35a04d985196fa7d696fc3f2776b30 100644 --- a/src/main/java/ai/CAPECTracer.java +++ b/src/main/java/ai/CAPECTracer.java @@ -1,5 +1,8 @@ package ai; +import launcher.LauncherException; +import launcher.RshClient; +import launcher.RshClientReader; import myutil.TraceManager; import java.io.*; @@ -57,30 +60,22 @@ public class CAPECTracer extends AIInteract { String traces = ""; try { - String s = null; - - // Execute the process - Process p = Runtime.getRuntime().exec("python3 " + capecTracerFolder + "/capec_tracer.py"); - - BufferedReader stdInput = new BufferedReader(new - InputStreamReader(p.getInputStream())); - BufferedReader stdError = new BufferedReader(new - InputStreamReader(p.getErrorStream())); - - // read the output from the command - while ((s = stdInput.readLine()) != null) { - TraceManager.addDev(s); - } - - // read any errors from the attempted command - while ((s = stdError.readLine()) != null) { - TraceManager.addDev(s); + RshClient rshc = new RshClient("localhost"); + rshc.setCmd("python3 " + capecTracerFolder + "/capec_tracer.py"); + rshc.sendExecuteCommandRequest(); + RshClientReader data = rshc.getDataReaderFromProcess(); + int characterInt = data.read(); + StringBuilder output = new StringBuilder(); + + while (characterInt != -1) { + output.append((char) characterInt); + characterInt = data.read(); } + TraceManager.addDev(output.toString()); byte[] bytes = Files.readAllBytes(Path.of(capecTracerFolder + "/traced_capecs.txt")); - traces = new String(bytes); - } catch (IOException e) { + } catch (IOException | LauncherException e) { TraceManager.addDev(e.getMessage()); }