From a8ad0f11876aa7077ac3faaeb0e773d7d74d51be Mon Sep 17 00:00:00 2001 From: snoop Date: Fri, 6 Apr 2018 20:11:45 +0900 Subject: [PATCH] fixed discovery result save --- .../overflow/module/discovery/model/Host.java | 12 + .../overflow/module/discovery/model/Port.java | 11 + .../module/meta/model/MetaInfraVendor.java | 13 +- .../service/TargetDiscoveryService.java | 242 +++++++++--------- src/test/resources/180403-td.json | 1 + 5 files changed, 152 insertions(+), 127 deletions(-) create mode 100644 src/test/resources/180403-td.json diff --git a/src/main/java/com/loafle/overflow/module/discovery/model/Host.java b/src/main/java/com/loafle/overflow/module/discovery/model/Host.java index 9218625..786a84f 100644 --- a/src/main/java/com/loafle/overflow/module/discovery/model/Host.java +++ b/src/main/java/com/loafle/overflow/module/discovery/model/Host.java @@ -1,6 +1,7 @@ package com.loafle.overflow.module.discovery.model; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -19,6 +20,9 @@ public class Host { private Map ports; + private List portList; + + public Host(){} public long getId() { @@ -84,4 +88,12 @@ public class Host { public void setPorts(Map ports) { this.ports = ports; } + + public List getPortList() { + return portList; + } + + public void setPortList(List portList) { + this.portList = portList; + } } diff --git a/src/main/java/com/loafle/overflow/module/discovery/model/Port.java b/src/main/java/com/loafle/overflow/module/discovery/model/Port.java index bf7fa86..3e27c96 100644 --- a/src/main/java/com/loafle/overflow/module/discovery/model/Port.java +++ b/src/main/java/com/loafle/overflow/module/discovery/model/Port.java @@ -8,6 +8,7 @@ package com.loafle.overflow.module.discovery.model; import com.loafle.overflow.module.discovery.type.PortType; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -26,6 +27,8 @@ public class Port { private Map services; + private List serviceList; + public Port() {} public long getId() { @@ -75,4 +78,12 @@ public class Port { public void setServices(Map services) { this.services = services; } + + public List getServiceList() { + return serviceList; + } + + public void setServiceList(List serviceList) { + this.serviceList = serviceList; + } } diff --git a/src/main/java/com/loafle/overflow/module/meta/model/MetaInfraVendor.java b/src/main/java/com/loafle/overflow/module/meta/model/MetaInfraVendor.java index df2fa6f..5efb38b 100644 --- a/src/main/java/com/loafle/overflow/module/meta/model/MetaInfraVendor.java +++ b/src/main/java/com/loafle/overflow/module/meta/model/MetaInfraVendor.java @@ -85,22 +85,23 @@ public class MetaInfraVendor { MetaInfraVendor vendor = new MetaInfraVendor(); if(serviceName.equals("mysql")) { - vendor.setId(39); + vendor.setId(11); } else if(serviceName.equals("portgresql")) { - vendor.setId(39); + vendor.setId(15); } else if(serviceName.equals("wmi")) { - vendor.setId(39); + vendor.setId(23); } - else if(serviceName.equals("snmpv2")) { - vendor.setId(39); + else if(serviceName.equals("snmp")) { + vendor.setId(20); } else { - vendor.setId(43); // unknown + vendor.setId(24); // unknown } + return vendor; } } diff --git a/src/main/java/com/loafle/overflow/module/target/service/TargetDiscoveryService.java b/src/main/java/com/loafle/overflow/module/target/service/TargetDiscoveryService.java index 0fcc479..92f9247 100644 --- a/src/main/java/com/loafle/overflow/module/target/service/TargetDiscoveryService.java +++ b/src/main/java/com/loafle/overflow/module/target/service/TargetDiscoveryService.java @@ -59,170 +59,170 @@ public class TargetDiscoveryService { return true; } - private void createService(InfraHost infraHost, Port port, Probe probe) { + private void createService(InfraHost infraHost, Port port, Probe probe) { - if(port.getServices() == null) { - return; - } + if(port.getServices() == null) { + return; + } - MetaInfraType typeService = new MetaInfraType(); - typeService.setId(7); + MetaInfraType typeService = new MetaInfraType(); + typeService.setId(7); - String portType = "UDP"; + String portType = "UDP"; - if(port.getPortType() == PortType.TLS || port.getPortType() == PortType.TCP) { - portType = "TCP"; - } + if(port.getPortType() == PortType.TLS || port.getPortType() == PortType.TCP) { + portType = "TCP"; + } - for(String key : port.getServices().keySet()) { +// for(String key : port.getServices().keySet()) { + for(com.loafle.overflow.module.discovery.model.Service service : port.getServiceList()) { - com.loafle.overflow.module.discovery.model.Service service = port.getServices().get(key); +// com.loafle.overflow.module.discovery.model.Service service = port.getServices().get(key); - InfraService dbInfraService = this.infraServiceService.readByService(infraHost.getId(), port.getPortNumber(), portType); + InfraService dbInfraService = this.infraServiceService.readByService(infraHost.getId(), port.getPortNumber(), portType); - if(dbInfraService != null) { - if(service.isTarget() && dbInfraService.getTarget() == null) { - Target targetService = new Target(); - targetService.setDisplayName(service.getServiceName() + "-Service"); - this.targetService.regist(targetService); - dbInfraService.setTarget(targetService); - this.infraServiceService.regist(dbInfraService); - } - continue; - } + if(dbInfraService != null) { + if(service.isTarget() && dbInfraService.getTarget() == null) { + Target targetService = new Target(); + targetService.setDisplayName(service.getServiceName()); + this.targetService.regist(targetService); + dbInfraService.setTarget(targetService); + this.infraServiceService.regist(dbInfraService); + } + continue; + } - InfraService infraService = new InfraService(); - infraService.setHost(infraHost); - infraService.setPort(port.getPortNumber()); - infraService.setPortType(portType); - infraService.setInfraType(typeService); - infraService.setProbe(probe); + InfraService infraService = new InfraService(); + infraService.setHost(infraHost); + infraService.setPort(port.getPortNumber()); + infraService.setPortType(portType); + infraService.setInfraType(typeService); + infraService.setProbe(probe); - if (port.getPortType() == PortType.TLS) { - infraService.setTlsType(true); - } - infraService.setVendor(MetaInfraVendor.CreateInfraVendorByService(service.getServiceName())); + if (port.getPortType() == PortType.TLS) { + infraService.setTlsType(true); + } + infraService.setVendor(MetaInfraVendor.CreateInfraVendorByService(service.getServiceName())); - if(service.isTarget()) { - Target targetService = new Target(); - targetService.setDisplayName(service.getServiceName() + "-Service"); - this.targetService.regist(targetService); - infraService.setTarget(targetService); - } + if(service.isTarget()) { + Target targetService = new Target(); + targetService.setDisplayName(service.getServiceName()); + this.targetService.regist(targetService); + infraService.setTarget(targetService); + } - this.infraServiceService.regist(infraService); + this.infraServiceService.regist(infraService); - } + } - } + } - private void createPort(InfraHost infraHost, Host host, Probe probe) { + private void createPort(InfraHost infraHost, Host host, Probe probe) { - if(host.getPorts() == null) { - return; - } + if(host.getPorts() == null) { + return; + } - String portType = "UDP"; + String portType = "UDP"; - MetaInfraType typePort = new MetaInfraType(); - typePort.setId(6); + MetaInfraType typePort = new MetaInfraType(); + typePort.setId(6); - InfraOS infraOS = infraHost.getOs(); + InfraOS infraOS = infraHost.getOs(); - for( String key: host.getPorts().keySet()) { +// for( String key: host.getPorts().keySet()) { + for( Port port: host.getPortList()) { +// Port port = host.getPorts().get(key); - Port port = host.getPorts().get(key); + if(port.getPortType() == PortType.TLS || port.getPortType() == PortType.TCP) { + portType = "TCP"; + } - if(port.getPortType() == PortType.TLS || port.getPortType() == PortType.TCP) { - portType = "TCP"; - } + InfraOSPort dbInfraOSPort = this.infraOSPortService.readByPort(infraOS.getId(), port.getPortNumber(), portType); + if(dbInfraOSPort == null) { + InfraOSPort infraOSPort = new InfraOSPort(); + infraOSPort.setOs(infraOS); + infraOSPort.setPort(port.getPortNumber()); + infraOSPort.setPortType(portType); + infraOSPort.setProbe(probe); + infraOSPort.setInfraType(typePort); - InfraOSPort dbInfraOSPort = this.infraOSPortService.readByPort(infraOS.getId(), port.getPortNumber(), portType); - if(dbInfraOSPort == null) { - InfraOSPort infraOSPort = new InfraOSPort(); - infraOSPort.setOs(infraOS); - infraOSPort.setPort(port.getPortNumber()); - infraOSPort.setPortType(portType); - infraOSPort.setProbe(probe); - infraOSPort.setInfraType(typePort); + if (port.getPortType() == PortType.TLS) { + infraOSPort.setTlsType(true); + } + infraOSPort.setVendor(MetaInfraVendor.CreateInfraVendorByPort(port.getPortNumber())); + this.infraOSPortService.regist(infraOSPort); + } - if (port.getPortType() == PortType.TLS) { - infraOSPort.setTlsType(true); - } - infraOSPort.setVendor(MetaInfraVendor.CreateInfraVendorByPort(port.getPortNumber())); - this.infraOSPortService.regist(infraOSPort); - } + this.createService(infraHost, port, probe); + } + } - this.createService(infraHost, port, probe); - } - } - - private InfraHost createAndReadHost(Host host, Probe probe) { + private InfraHost createAndReadHost(Host host, Probe probe) { - InfraHost infraHost = this.infraHostService.readByIp(StringConvertor.ipToLong(host.getIp())); - if(infraHost != null) { + InfraHost infraHost = this.infraHostService.readByIp(StringConvertor.ipToLong(host.getIp())); + if(infraHost != null) { - if(host.isTarget() && infraHost.getTarget() == null) { - Target target = new Target(); - target.setDisplayName(String.valueOf(host.getIp()) + "-Host"); + if(host.isTarget() && infraHost.getTarget() == null) { + Target target = new Target(); + target.setDisplayName(String.valueOf(host.getIp()) + "-Host"); - this.targetService.regist(target); - infraHost.setTarget(target); - this.infraHostService.regist(infraHost); - } + this.targetService.regist(target); + infraHost.setTarget(target); + this.infraHostService.regist(infraHost); + } - return infraHost; - } else { - MetaInfraType typeMachine = new MetaInfraType(); - typeMachine.setId(1); // 1 = Machine; + return infraHost; + } else { + MetaInfraType typeMachine = new MetaInfraType(); + typeMachine.setId(1); // 1 = Machine; - MetaInfraType typeOS = new MetaInfraType(); - typeOS.setId(3); // 3 = Os + MetaInfraType typeOS = new MetaInfraType(); + typeOS.setId(3); // 3 = Os - MetaInfraType typeHost = new MetaInfraType(); - typeHost.setId(2); // 2 = Host + MetaInfraType typeHost = new MetaInfraType(); + typeHost.setId(2); // 2 = Host - InfraMachine infraMachine = new InfraMachine(); - infraMachine.setProbe(probe); - infraMachine.setInfraType(typeMachine); - infraMachine.setMeta(host.getIp()+"-MACHINE"); - this.infraMachineService.regist(infraMachine); + InfraMachine infraMachine = new InfraMachine(); + infraMachine.setProbe(probe); + infraMachine.setInfraType(typeMachine); + infraMachine.setMeta(host.getIp()+"-MACHINE"); + this.infraMachineService.regist(infraMachine); - InfraOS infraOS = new InfraOS(); - infraOS.setMachine(infraMachine); - infraOS.setVendor(MetaInfraVendor.CreateInfraVendorByOS(host.getOs())); - infraOS.setInfraType(typeOS); - infraOS.setProbe(probe); - infraOS.setMeta(host.getIp()+"-OS"); - this.infraOSService.regist(infraOS); + InfraOS infraOS = new InfraOS(); + infraOS.setMachine(infraMachine); + infraOS.setVendor(MetaInfraVendor.CreateInfraVendorByOS(host.getOs())); + infraOS.setInfraType(typeOS); + infraOS.setProbe(probe); + infraOS.setMeta(host.getIp()+"-OS"); + this.infraOSService.regist(infraOS); - InfraHost newInfraHost = new InfraHost(); - newInfraHost.setIp(StringConvertor.ipToLong(host.getIp())); + InfraHost newInfraHost = new InfraHost(); + newInfraHost.setIp(StringConvertor.ipToLong(host.getIp())); // newInfraHost.setMac(StringConvertor.ipToLong(host.getMac())); - newInfraHost.setMac(StringConvertor.macStrToLong(host.getMac())); - newInfraHost.setOs(infraOS); - newInfraHost.setInfraType(typeHost); - newInfraHost.setProbe(probe); + newInfraHost.setMac(StringConvertor.macStrToLong(host.getMac())); + newInfraHost.setOs(infraOS); + newInfraHost.setInfraType(typeHost); + newInfraHost.setProbe(probe); - if(host.isTarget()) { - Target target = new Target(); - target.setDisplayName(host.getIp() + "-Host"); + if(host.isTarget()) { + Target target = new Target(); + target.setDisplayName(host.getIp() + "-Host"); - this.targetService.regist(target); - newInfraHost.setTarget(target); - } + this.targetService.regist(target); + newInfraHost.setTarget(target); + } - this.infraHostService.regist(newInfraHost); - infraHost = newInfraHost; - } + this.infraHostService.regist(newInfraHost); + infraHost = newInfraHost; + } - return infraHost; - } - + return infraHost; + } diff --git a/src/test/resources/180403-td.json b/src/test/resources/180403-td.json new file mode 100644 index 0000000..15dcbc3 --- /dev/null +++ b/src/test/resources/180403-td.json @@ -0,0 +1 @@ +[{"id":0,"ip":"192.168.1.254","mac":"64:e5:99:63:e7:80","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"UDP","portNumber":53,"discoveredDate":-62135596800000,"host":null,"services":{},"serviceList":[{"id":0,"cryptoType":null,"serviceName":"DNS","discoveredDate":-62135596800000,"port":null,"target":false}]}]},{"id":0,"ip":"192.168.1.99","mac":"00:25:b3:fa:ca:9b","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"UDP","portNumber":161,"discoveredDate":-62135596800000,"host":null,"services":{},"serviceList":[{"id":0,"cryptoType":null,"serviceName":"SNMP_V2","discoveredDate":-62135596800000,"port":null,"target":false}]},{"id":0,"portType":"TCP","portNumber":7,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.206","mac":"30:9c:23:15:a3:09","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":null},{"id":0,"ip":"192.168.1.50","mac":"6c:f0:49:7a:60:68","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"TCP","portNumber":22,"discoveredDate":-62135596800000,"host":null,"services":{},"serviceList":[{"id":0,"cryptoType":"TCP","serviceName":"SSH","discoveredDate":-62135596800000,"port":null,"target":false}]}]},{"id":0,"ip":"192.168.1.15","mac":"00:19:b9:35:8e:a6","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"TCP","portNumber":22,"discoveredDate":-62135596800000,"host":null,"services":null},{"id":0,"portType":"TCP","portNumber":25,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.100","mac":"00:17:08:8d:cf:f7","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"UDP","portNumber":161,"discoveredDate":-62135596800000,"host":null,"services":{},"serviceList":[{"id":0,"cryptoType":null,"serviceName":"SNMP_V2","discoveredDate":-62135596800000,"port":null,"target":false}]},{"id":0,"portType":"TCP","portNumber":23,"discoveredDate":-62135596800000,"host":null,"services":null},{"id":0,"portType":"TCP","portNumber":21,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.16","mac":"00:19:b9:19:7e:c7","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"TCP","portNumber":22,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.106","mac":"44:8a:5b:f1:3a:7d","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"UDP","portNumber":161,"discoveredDate":-62135596800000,"host":null,"services":{},"serviceList":[{"id":0,"cryptoType":null,"serviceName":"SNMP_V2","discoveredDate":-62135596800000,"port":null,"target":false}]},{"id":0,"portType":"TCP","portNumber":21,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.101","mac":"44:8a:5b:f1:f1:f3","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":null},{"id":0,"ip":"192.168.1.102","mac":"44:8a:5b:f1:f2:d3","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":null},{"id":0,"ip":"192.168.1.205","mac":"40:98:ad:7b:d0:43","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":null},{"id":0,"ip":"192.168.1.103","mac":"44:8a:5b:44:8c:e8","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"TCP","portNumber":21,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.10","mac":"d0:50:99:97:5d:99","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":{},"portList":[{"id":0,"portType":"TCP","portNumber":22,"discoveredDate":-62135596800000,"host":null,"services":null}]},{"id":0,"ip":"192.168.1.203","mac":"a8:e5:39:5b:c9:62","os":null,"discoveredDate":-62135596800000,"target":false,"zone":null,"ports":null}] \ No newline at end of file