package com.example.fuzzControll.service.impl; import com.example.fuzzControll.exception.testException.CmdException; import com.example.fuzzControll.service.AgentOfKittyService; import com.example.fuzzControll.tools.file.FileTools; import com.example.fuzzControll.tools.test.TestCmdTools; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @Service @Slf4j public class AgentOfKittyServiceImpl implements AgentOfKittyService { @Override public Boolean startNetworkAgent(String networkCard, String monitorName) { try { String finalCmd = "python /usr/fuzzenv/fuzzenv/fuzz_50/katnip/katnip/monitors/network.py " + networkCard + " " + monitorName; TestCmdTools cmdTools = new TestCmdTools(); List<String> result = cmdTools.runCmd(finalCmd, "startNetworkAgent"); List<String> filter = result.stream().filter(s -> s.contains("calling mon.teardown")).collect(Collectors.toList()); log.info("Network Agent:{}", (Object) StringUtils.toStringArray(result)); return filter.size() > 0; } catch (CmdException e) { log.error("startNetworkAgent run error:{}", e.getMessage()); throw new RuntimeException(e); } } @Override public Boolean startSshAgent(String monitorName, String sshUserName, String sshPassword, String sshIp, String sshPort, String command) { try { String finalCmd = "python /usr/fuzzenv/fuzzenv/fuzz_50/katnip/katnip/monitors/ssh.py " + monitorName + " " + sshUserName + " " + sshPassword + " " + sshIp + " " + sshPort + " " + command; TestCmdTools cmdTools = new TestCmdTools(); List<String> result = cmdTools.runCmd(finalCmd, "startSshAgent"); List<String> filter = result.stream().filter(s -> s.contains("Failed to stop thread")).collect(Collectors.toList()); return !(filter.size() > 0); } catch (CmdException e) { log.error("startNetworkAgent run error:{}", e.getMessage()); throw new RuntimeException(e); } } @Override public byte[] readPcapToByte() { byte[] fileByts = new byte[0]; try { FileTools fileTools = new FileTools(); fileByts = fileTools.fileReadAndTranstoBytes("/tmp/","test_1.pcap"); } catch (Exception e) { log.error("readPcapToByte error:{}", e.getMessage()); throw new RuntimeException(e); } return fileByts; } }