added service
target discovery
This commit is contained in:
parent
f92cf7acd9
commit
1e83857756
|
@ -0,0 +1,142 @@
|
||||||
|
package com.loafle.overflow.module.target.service;
|
||||||
|
|
||||||
|
import com.loafle.overflow.module.discovery.model.Host;
|
||||||
|
import com.loafle.overflow.module.discovery.model.Port;
|
||||||
|
import com.loafle.overflow.module.discovery.type.PortType;
|
||||||
|
import com.loafle.overflow.module.infra.dao.*;
|
||||||
|
import com.loafle.overflow.module.infra.model.*;
|
||||||
|
import com.loafle.overflow.module.meta.model.MetaInfraVendor;
|
||||||
|
import com.loafle.overflow.module.probe.model.Probe;
|
||||||
|
import com.loafle.overflow.module.target.dao.TargetDAO;
|
||||||
|
import com.loafle.overflow.module.target.model.Target;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.transaction.Transactional;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by snoop on 17. 6. 28.
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class TargetDiscoveryService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TargetDAO targetDAO;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InfraMachineDAO infraMachineDAO;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InfraOSDAO infraOSDAO;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InfraHostDAO infraHostDAO;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InfraDAO infraDAO;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InfraOSPortDAO infraOSPortDAO;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private InfraServiceDAO infraServiceDAO;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void saveAllTarget(List<Host> hosts, Probe probe) {
|
||||||
|
|
||||||
|
for(Host host : hosts) {
|
||||||
|
|
||||||
|
InfraMachine infraMachine = new InfraMachine();
|
||||||
|
infraMachine.setProbe(probe);
|
||||||
|
this.infraMachineDAO.save(infraMachine);
|
||||||
|
|
||||||
|
Infra infraByMachine = Infra.CreateInfraByType(infraMachine.getId(), InfraMachine.class);
|
||||||
|
this.infraDAO.save(infraByMachine);
|
||||||
|
|
||||||
|
|
||||||
|
InfraOS infraOS = new InfraOS();
|
||||||
|
infraOS.setMachine(infraMachine);
|
||||||
|
infraOS.setVendor(MetaInfraVendor.CreateInfraVendorByOS(host.getOs()));
|
||||||
|
this.infraOSDAO.save(infraOS);
|
||||||
|
|
||||||
|
Infra infraByOS = Infra.CreateInfraByType(infraOS.getId(), InfraOS.class);
|
||||||
|
this.infraDAO.save(infraByOS);
|
||||||
|
|
||||||
|
|
||||||
|
InfraHost infraHost = new InfraHost();
|
||||||
|
infraHost.setIp(host.getIp());
|
||||||
|
infraHost.setMac(host.getMac());
|
||||||
|
infraHost.setOs(infraOS);
|
||||||
|
this.infraHostDAO.save(infraHost);
|
||||||
|
|
||||||
|
Infra infraByHost = Infra.CreateInfraByType(infraHost.getId(), InfraHost.class);
|
||||||
|
this.infraDAO.save(infraByHost);
|
||||||
|
|
||||||
|
if(host.isTarget()) {
|
||||||
|
Target targetHost = new Target();
|
||||||
|
targetHost.setInfra(infraByHost);
|
||||||
|
targetHost.setProbe(probe);
|
||||||
|
this.targetDAO.save(targetHost);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(host.getPorts() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Port port : host.getPorts()) {
|
||||||
|
|
||||||
|
InfraOSPort infraOSPort = new InfraOSPort();
|
||||||
|
infraOSPort.setOs(infraOS);
|
||||||
|
infraOSPort.setPort(port.getPortNumber());
|
||||||
|
infraOSPort.setPortType("UDP");
|
||||||
|
if(port.getPortType() == PortType.TLS || port.getPortType() == PortType.TCP) {
|
||||||
|
infraOSPort.setPortType("TCP");
|
||||||
|
}
|
||||||
|
if (port.getPortType() == PortType.TLS) {
|
||||||
|
infraOSPort.setTlsType(true);
|
||||||
|
}
|
||||||
|
infraOSPort.setVendor(MetaInfraVendor.CreateInfraVendorByPort(port.getPortNumber()));
|
||||||
|
this.infraOSPortDAO.save(infraOSPort);
|
||||||
|
|
||||||
|
Infra infraByPort = Infra.CreateInfraByType(infraOSPort.getId(), InfraOSPort.class);
|
||||||
|
this.infraDAO.save(infraByPort);
|
||||||
|
|
||||||
|
if(port.getServices() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(com.loafle.overflow.module.discovery.model.Service service : port.getServices()) {
|
||||||
|
|
||||||
|
InfraService infraService = new InfraService();
|
||||||
|
infraService.setHost(infraHost);
|
||||||
|
infraService.setPort(port.getPortNumber());
|
||||||
|
infraService.setPortType("UDP");
|
||||||
|
if(port.getPortType() == PortType.TLS || port.getPortType() == PortType.TCP) {
|
||||||
|
infraService.setPortType("TCP");
|
||||||
|
}
|
||||||
|
if (port.getPortType() == PortType.TLS) {
|
||||||
|
infraService.setTlsType(true);
|
||||||
|
}
|
||||||
|
infraService.setVendor(MetaInfraVendor.CreateInfraVendorByService(service.getServiceName()));
|
||||||
|
this.infraServiceDAO.save(infraService);
|
||||||
|
|
||||||
|
Infra infraByService = Infra.CreateInfraByType(infraService.getId(), InfraService.class);
|
||||||
|
this.infraDAO.save(infraByService);
|
||||||
|
|
||||||
|
if(service.isTarget()) {
|
||||||
|
Target targetService = new Target();
|
||||||
|
targetService.setInfra(infraByService);
|
||||||
|
targetService.setProbe(probe);
|
||||||
|
this.targetDAO.save(targetService);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package com.loafle.overflow.module.target.service;
|
||||||
|
|
||||||
|
import com.loafle.overflow.module.discovery.model.Host;
|
||||||
|
import com.loafle.overflow.module.probe.model.Probe;
|
||||||
|
import com.loafle.overflow.spring.AppConfig;
|
||||||
|
import com.loafle.overflow.spring.JdbcConfiguration;
|
||||||
|
import org.codehaus.jackson.map.DeserializationConfig;
|
||||||
|
import org.codehaus.jackson.map.ObjectMapper;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.io.ResourceLoader;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by snoop on 17. 6. 28.
|
||||||
|
*/
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(classes = {AppConfig.class, JdbcConfiguration.class})
|
||||||
|
public class TargetDiscoveryServiceTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ResourceLoader resourceLoader;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TargetDiscoveryService targetDiscoveryService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void saveAllTarget() throws Exception {
|
||||||
|
|
||||||
|
String json = readFileAsString(resourceLoader.getResource("classpath:dh.json").getURI().getPath());
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
|
||||||
|
List<Host> hosts = mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, Host.class));
|
||||||
|
|
||||||
|
Probe probe = new Probe();
|
||||||
|
probe.setId(1);
|
||||||
|
|
||||||
|
this.targetDiscoveryService.saveAllTarget(hosts, probe);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String readFileAsString(String filePath) throws IOException {
|
||||||
|
StringBuffer fileData = new StringBuffer();
|
||||||
|
BufferedReader reader = new BufferedReader(
|
||||||
|
new FileReader(filePath));
|
||||||
|
char[] buf = new char[1024];
|
||||||
|
int numRead=0;
|
||||||
|
while((numRead=reader.read(buf)) != -1){
|
||||||
|
String readData = String.valueOf(buf, 0, numRead);
|
||||||
|
fileData.append(readData);
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
return fileData.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
173
src/test/resources/dh.json
Normal file
173
src/test/resources/dh.json
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
[{
|
||||||
|
"firstScanRange": 1,
|
||||||
|
"lastScanRange": 10000,
|
||||||
|
"name": "",
|
||||||
|
"ip": 3232235818,
|
||||||
|
"mac": 91754662925,
|
||||||
|
"os":"Windows",
|
||||||
|
"ports": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "SSH",
|
||||||
|
"target":true
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 443
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 80
|
||||||
|
}],
|
||||||
|
"createDate": 1498470178000,
|
||||||
|
"updateDate": 1498470178000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"firstScanRange": 1,
|
||||||
|
"lastScanRange": 10000,
|
||||||
|
"name": "",
|
||||||
|
"ip": 3232235781,
|
||||||
|
"mac": 91754660625,
|
||||||
|
"os":"Windows",
|
||||||
|
"ports": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "SSH"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 1936
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": null,
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 443
|
||||||
|
}],
|
||||||
|
"createDate": 1498470178000,
|
||||||
|
"updateDate": 1498470178000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"firstScanRange": 1,
|
||||||
|
"lastScanRange": 10000,
|
||||||
|
"name": "",
|
||||||
|
"ip": 3232235797,
|
||||||
|
"mac": 91754662913,
|
||||||
|
"os":"Windows",
|
||||||
|
"target":true,
|
||||||
|
"ports": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "SSH"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 3343
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"services": [{
|
||||||
|
"createDate": -62135596800000,
|
||||||
|
"updateDate": -62135596800000,
|
||||||
|
"portType": "TCP",
|
||||||
|
"serviceName": "HTTP"
|
||||||
|
}],
|
||||||
|
"portType": "TCP",
|
||||||
|
"portNumber": 443
|
||||||
|
}],
|
||||||
|
"createDate": 1498470178000,
|
||||||
|
"updateDate": 1498470178000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"firstScanRange": 1,
|
||||||
|
"lastScanRange": 10000,
|
||||||
|
"name": "",
|
||||||
|
"ip": 3232235877,
|
||||||
|
"mac": 75361038758387,
|
||||||
|
"os":"Windows",
|
||||||
|
"ports": null,
|
||||||
|
"createDate": 1498470179000,
|
||||||
|
"updateDate": 1498470179000
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user