improved whois
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Copyright 2019 Joern Muehlencord (joern@muehlencord.de).
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -24,131 +24,136 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Joern Muehlencord (joern@muehlencord.de)
|
||||
*/
|
||||
public class ArinWhoisParser extends AbstractWhoisParser implements WhoisParser {
|
||||
|
||||
/**
|
||||
* logger object
|
||||
*/
|
||||
private static final Logger logger = LoggerFactory.getLogger(ArinWhoisParser.class);
|
||||
/**
|
||||
* logger object
|
||||
*/
|
||||
private static final Logger logger = LoggerFactory.getLogger(ArinWhoisParser.class);
|
||||
|
||||
private static final String START_STRING = "# start";
|
||||
private static final String END_STRING = "# end";
|
||||
private static final String NET_RANGE = "NetRange:";
|
||||
private static final String ORG_NAME = "OrgName:";
|
||||
/**
|
||||
* information to be returned
|
||||
*/
|
||||
private WhoisInformation whoisInformation;
|
||||
private static final String START_STRING = "# start";
|
||||
private static final String END_STRING = "# end";
|
||||
private static final String NET_RANGE = "NetRange:";
|
||||
private static final String ORG_NAME = "OrgName:";
|
||||
/**
|
||||
* information to be returned
|
||||
*/
|
||||
private WhoisInformation whoisInformation;
|
||||
|
||||
@Override
|
||||
public WhoisInformation parseWhoIsString(String whoisString) throws WhoisException {
|
||||
whoisInformation = new WhoisInformation();
|
||||
whoisInformation.setResponseString(whoisString);
|
||||
if (whoisString.contains(START_STRING)) {
|
||||
@Override
|
||||
public WhoisInformation parseWhoIsString(String whoisString) throws WhoisException {
|
||||
whoisInformation = new WhoisInformation();
|
||||
|
||||
String multipleWhoisString = whoisString;
|
||||
// if re-allocated just return empty whoisInformation because this RIR is not responsible
|
||||
if (whoisString.contains("Allocated to LACNIC")) {
|
||||
throw new WhoisException("Allocated to LACNIC");
|
||||
}
|
||||
|
||||
while (multipleWhoisString.contains(START_STRING)) {
|
||||
String whoisPartString;
|
||||
try {
|
||||
whoisPartString = getValueBetweenKeywords(multipleWhoisString, START_STRING, END_STRING);
|
||||
} catch (ParseException ex) {
|
||||
throw new WhoisException("Error while reading whois part elements. Reason: " + ex.getMessage(), ex);
|
||||
}
|
||||
analyse(whoisPartString);
|
||||
multipleWhoisString = multipleWhoisString.substring(multipleWhoisString.indexOf(END_STRING) + 4);
|
||||
}
|
||||
whoisInformation.setResponseString(whoisString);
|
||||
if (whoisString.contains(START_STRING)) {
|
||||
|
||||
String multipleWhoisString = whoisString;
|
||||
|
||||
while (multipleWhoisString.contains(START_STRING)) {
|
||||
String whoisPartString;
|
||||
try {
|
||||
whoisPartString = getValueBetweenKeywords(multipleWhoisString, START_STRING, END_STRING);
|
||||
} catch (ParseException ex) {
|
||||
throw new WhoisException("Error while reading whois part elements. Reason: " + ex.getMessage(), ex);
|
||||
}
|
||||
analyse(whoisPartString);
|
||||
multipleWhoisString = multipleWhoisString.substring(multipleWhoisString.indexOf(END_STRING) + 4);
|
||||
}
|
||||
|
||||
} else {
|
||||
analyse(whoisString);
|
||||
}
|
||||
|
||||
whoisInformation.validate();
|
||||
|
||||
return whoisInformation;
|
||||
}
|
||||
|
||||
private void analyse(String whoisString) throws WhoisException {
|
||||
String[] blocks;
|
||||
if (whoisString.contains("\r\n")) {
|
||||
blocks = whoisString.split("\r\n\r\n");
|
||||
} else {
|
||||
blocks = whoisString.split("\n\n");
|
||||
}
|
||||
for (String block : blocks) {
|
||||
analyseBlock(block);
|
||||
}
|
||||
}
|
||||
|
||||
private void analyseBlock(String block) throws WhoisException {
|
||||
logger.debug("Start analysing block");
|
||||
logger.debug("\n---\n{}\n---\n", block);
|
||||
|
||||
if ((block == null) || (!block.contains(" "))) {
|
||||
logger.debug("Skipping empty block");
|
||||
return;
|
||||
}
|
||||
|
||||
String startString = block.substring(0, block.indexOf(" "));
|
||||
if (startString.equals("%")) {
|
||||
startString = block.substring(0, block.indexOf(" ", 2));
|
||||
}
|
||||
while (startString.startsWith("\n")) {
|
||||
startString = startString.substring(1, startString.length());
|
||||
}
|
||||
|
||||
Map<String, String> valueMap = getValueMap(block);
|
||||
|
||||
switch (startString) {
|
||||
|
||||
case NET_RANGE:
|
||||
if (valueMap.containsKey(NET_RANGE)) {
|
||||
String netRange = valueMap.get(NET_RANGE);
|
||||
// convert inetnum to CDIR
|
||||
// TODO - what happens if not 3 parts are found
|
||||
String[] ipAddresses = netRange.split(" ");
|
||||
// FIXME add CDIR notation support
|
||||
String startIpAddress = ipAddresses[0];
|
||||
String endIPAddress = ipAddresses[2];
|
||||
whoisInformation.addNetwork(rangeToCidrList(startIpAddress, endIPAddress));
|
||||
logger.info("Network: {}", whoisInformation.getNetwork());
|
||||
} else {
|
||||
analyse(whoisString);
|
||||
throw new WhoisException("Cannot identify netrange value");
|
||||
}
|
||||
break;
|
||||
|
||||
whoisInformation.validate();
|
||||
case ORG_NAME:
|
||||
String orgName = getValue(ORG_NAME, valueMap);
|
||||
String orgId = getValue("OrgId:", valueMap);
|
||||
String country = getValue("Country:", valueMap);
|
||||
|
||||
return whoisInformation;
|
||||
}
|
||||
|
||||
private void analyse(String whoisString) throws WhoisException {
|
||||
String[] blocks;
|
||||
if (whoisString.contains("\r\n")) {
|
||||
blocks = whoisString.split("\r\n\r\n");
|
||||
} else {
|
||||
blocks = whoisString.split("\n\n");
|
||||
}
|
||||
for (String block : blocks) {
|
||||
analyseBlock(block);
|
||||
}
|
||||
}
|
||||
|
||||
private void analyseBlock(String block) throws WhoisException {
|
||||
logger.debug("Start analysing block");
|
||||
logger.debug("\n---\n{}\n---\n", block);
|
||||
|
||||
if ((block == null) || (!block.contains(" "))) {
|
||||
logger.debug("Skipping empty block");
|
||||
return;
|
||||
}
|
||||
|
||||
String startString = block.substring(0, block.indexOf(" "));
|
||||
if (startString.equals("%")) {
|
||||
startString = block.substring(0, block.indexOf(" ", 2));
|
||||
}
|
||||
while (startString.startsWith("\n")) {
|
||||
startString = startString.substring(1, startString.length());
|
||||
}
|
||||
|
||||
Map<String, String> valueMap = getValueMap(block);
|
||||
|
||||
switch (startString) {
|
||||
|
||||
case NET_RANGE:
|
||||
if (valueMap.containsKey(NET_RANGE)) {
|
||||
String netRange = valueMap.get(NET_RANGE);
|
||||
// convert inetnum to CDIR
|
||||
// TODO - what happens if not 3 parts are found
|
||||
String[] ipAddresses = netRange.split(" ");
|
||||
// FIXME add CDIR notation support
|
||||
String startIpAddress = ipAddresses[0];
|
||||
String endIPAddress = ipAddresses[2];
|
||||
whoisInformation.addNetwork(rangeToCidrList(startIpAddress, endIPAddress));
|
||||
logger.info("Network: {}", whoisInformation.getNetwork());
|
||||
} else {
|
||||
throw new WhoisException("Cannot identify netrange value");
|
||||
}
|
||||
break;
|
||||
|
||||
case ORG_NAME:
|
||||
String orgName = getValue(ORG_NAME, valueMap);
|
||||
String orgId = getValue("OrgId:", valueMap);
|
||||
String country = getValue("Country:", valueMap);
|
||||
|
||||
if ((orgName == null) || (country == null)) {
|
||||
throw new WhoisException("Cannot identify OrgName and/or country value");
|
||||
}
|
||||
if (orgId == null) {
|
||||
orgId = orgName;
|
||||
}
|
||||
whoisInformation.setNetworkInformation(new NetworkInformation(orgName, orgId, country));
|
||||
logger.info("Networkinformation: {}", whoisInformation.getNetworkInformation());
|
||||
break;
|
||||
|
||||
case "OrgAbuseHandle:":
|
||||
// TODO add abuse handler
|
||||
logger.info("Skipping OrgAbuseHandle block");
|
||||
break;
|
||||
case "OrgTechHandle:":
|
||||
// admin person of network server belongs to
|
||||
logger.info("Skipping OrgTechHandle block");
|
||||
break;
|
||||
|
||||
case "#":
|
||||
logger.info("Skipping comment block");
|
||||
break;
|
||||
default:
|
||||
logger.info("Unknown block found");
|
||||
}
|
||||
if ((orgName == null) || (country == null)) {
|
||||
throw new WhoisException("Cannot identify OrgName and/or country value");
|
||||
}
|
||||
if (orgId == null) {
|
||||
orgId = orgName;
|
||||
}
|
||||
whoisInformation.setNetworkInformation(new NetworkInformation(orgName, orgId, country));
|
||||
logger.info("Networkinformation: {}", whoisInformation.getNetworkInformation());
|
||||
break;
|
||||
|
||||
case "OrgAbuseHandle:":
|
||||
// TODO add abuse handler
|
||||
logger.info("Skipping OrgAbuseHandle block");
|
||||
break;
|
||||
case "OrgTechHandle:":
|
||||
// admin person of network server belongs to
|
||||
logger.info("Skipping OrgTechHandle block");
|
||||
break;
|
||||
|
||||
case "#":
|
||||
logger.info("Skipping comment block");
|
||||
break;
|
||||
default:
|
||||
logger.info("Unknown block found");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Copyright 2019 Joern Muehlencord (joern@muehlencord.de).
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -22,108 +22,112 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Joern Muehlencord (joern@muehlencord.de)
|
||||
*/
|
||||
public class DefaultWhoisParser extends AbstractWhoisParser implements WhoisParser {
|
||||
|
||||
/**
|
||||
* logger object
|
||||
*/
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultWhoisParser.class);
|
||||
/**
|
||||
* information to be returned
|
||||
*/
|
||||
private WhoisInformation whoisInformation;
|
||||
/**
|
||||
* logger object
|
||||
*/
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultWhoisParser.class);
|
||||
/**
|
||||
* information to be returned
|
||||
*/
|
||||
private WhoisInformation whoisInformation;
|
||||
|
||||
@Override
|
||||
public WhoisInformation parseWhoIsString(String whoisString) throws WhoisException {
|
||||
whoisInformation = new WhoisInformation();
|
||||
whoisInformation.setResponseString(whoisString);
|
||||
// split by blank lines to identify blocks
|
||||
String[] blocks;
|
||||
if (whoisString.contains("\r\n")) {
|
||||
blocks = whoisString.split("\r\n\r\n");
|
||||
@Override
|
||||
public WhoisInformation parseWhoIsString(String whoisString) throws WhoisException {
|
||||
// if re-allocated just return empty whoisInformation because this RIR is not responsible
|
||||
if (whoisString.contains("Allocated to LACNIC")) {
|
||||
throw new WhoisException("Allocated to LACNIC");
|
||||
}
|
||||
|
||||
whoisInformation = new WhoisInformation();
|
||||
whoisInformation.setResponseString(whoisString);
|
||||
// split by blank lines to identify blocks
|
||||
String[] blocks;
|
||||
if (whoisString.contains("\r\n")) {
|
||||
blocks = whoisString.split("\r\n\r\n");
|
||||
} else {
|
||||
blocks = whoisString.split("\n\n");
|
||||
}
|
||||
for (String block : blocks) {
|
||||
analyseBlock(block);
|
||||
}
|
||||
|
||||
whoisInformation.validate();
|
||||
|
||||
return whoisInformation;
|
||||
}
|
||||
|
||||
private void analyseBlock(String block) throws WhoisException {
|
||||
logger.debug("Start analysing block");
|
||||
logger.debug("\n---\n{}\n---\n", block);
|
||||
|
||||
if ((block == null) || (!block.contains(" "))) {
|
||||
logger.debug("Skipping empty block");
|
||||
return;
|
||||
}
|
||||
|
||||
String startString = block.substring(0, block.indexOf(" "));
|
||||
if (startString.equals("%")) {
|
||||
startString = block.substring(0, block.indexOf(" ", 2));
|
||||
}
|
||||
|
||||
Map<String, String> valueMap = getValueMap(block);
|
||||
|
||||
switch (startString) {
|
||||
|
||||
case "inetnum:":
|
||||
String inetnum = getValue("inetnum:", valueMap);
|
||||
String country = getValue("country:", valueMap);
|
||||
String netname = getValue("netname:", valueMap);
|
||||
String descr = getValue("descr:", valueMap);
|
||||
|
||||
if ((inetnum == null) || (country == null)) {
|
||||
throw new WhoisException("Cannot identify inetnum and/or country value");
|
||||
}
|
||||
|
||||
if (inetnum.contains(" ")) {
|
||||
// convert inetnum to CDIR
|
||||
// TODO - what happens if not 3 parts are found
|
||||
String[] ipAddresses = inetnum.split(" ");
|
||||
// FIXME add CDIR notation support
|
||||
String startIpAddress = ipAddresses[0];
|
||||
String endIPAddress = ipAddresses[2];
|
||||
whoisInformation.addNetwork(rangeToCidrList(startIpAddress, endIPAddress));
|
||||
} else {
|
||||
blocks = whoisString.split("\n\n");
|
||||
}
|
||||
for (String block : blocks) {
|
||||
analyseBlock(block);
|
||||
whoisInformation.addNetwork(inetnum);
|
||||
}
|
||||
|
||||
whoisInformation.validate();
|
||||
logger.info("Network: {}", whoisInformation.getNetwork());
|
||||
whoisInformation.setNetworkInformation(new NetworkInformation(netname, descr, country));
|
||||
|
||||
return whoisInformation;
|
||||
}
|
||||
|
||||
private void analyseBlock(String block) throws WhoisException {
|
||||
logger.debug("Start analysing block");
|
||||
logger.debug("\n---\n{}\n---\n", block);
|
||||
|
||||
if ((block == null) || (!block.contains(" "))) {
|
||||
logger.debug("Skipping empty block");
|
||||
return;
|
||||
}
|
||||
|
||||
String startString = block.substring(0, block.indexOf(" "));
|
||||
if (startString.equals("%")) {
|
||||
startString = block.substring(0, block.indexOf(" ", 2));
|
||||
}
|
||||
|
||||
Map<String, String> valueMap = getValueMap(block);
|
||||
|
||||
switch (startString) {
|
||||
|
||||
case "inetnum:":
|
||||
String inetnum = getValue("inetnum:", valueMap);
|
||||
String country = getValue("country:", valueMap);
|
||||
String netname = getValue("netname:", valueMap);
|
||||
String descr = getValue("descr:", valueMap);
|
||||
|
||||
if ((inetnum == null) || (country == null)) {
|
||||
throw new WhoisException("Cannot identify inetnum and/or country value");
|
||||
}
|
||||
|
||||
if (inetnum.contains(" ")) {
|
||||
// convert inetnum to CDIR
|
||||
// TODO - what happens if not 3 parts are found
|
||||
String[] ipAddresses = inetnum.split(" ");
|
||||
// FIXME add CDIR notation support
|
||||
String startIpAddress = ipAddresses[0];
|
||||
String endIPAddress = ipAddresses[2];
|
||||
whoisInformation.addNetwork(rangeToCidrList(startIpAddress, endIPAddress));
|
||||
} else {
|
||||
whoisInformation.addNetwork(inetnum);
|
||||
}
|
||||
|
||||
logger.info("Network: {}", whoisInformation.getNetwork());
|
||||
whoisInformation.setNetworkInformation(new NetworkInformation(netname, descr, country));
|
||||
|
||||
break;
|
||||
case "route:":
|
||||
// get information on level-2 network
|
||||
String route = getValue("route:", valueMap);
|
||||
whoisInformation.addRootNetwork(route);
|
||||
logger.info("Root network: {}", whoisInformation.getRootNetwork());
|
||||
break;
|
||||
|
||||
case "role:":
|
||||
// admin company of network server belongs to
|
||||
logger.info("Skipping role block");
|
||||
break;
|
||||
case "person:":
|
||||
// admin person of network server belongs to
|
||||
logger.info("Skipping person block");
|
||||
break;
|
||||
case "% Information":
|
||||
case "% Note:":
|
||||
case "% This":
|
||||
case "%":
|
||||
logger.info("Skipping comment block");
|
||||
break;
|
||||
default:
|
||||
logger.info("Unknown block found");
|
||||
logger.error(block);
|
||||
}
|
||||
break;
|
||||
case "route:":
|
||||
// get information on level-2 network
|
||||
String route = getValue("route:", valueMap);
|
||||
whoisInformation.addRootNetwork(route);
|
||||
logger.info("Root network: {}", whoisInformation.getRootNetwork());
|
||||
break;
|
||||
|
||||
case "role:":
|
||||
// admin company of network server belongs to
|
||||
logger.info("Skipping role block");
|
||||
break;
|
||||
case "person:":
|
||||
// admin person of network server belongs to
|
||||
logger.info("Skipping person block");
|
||||
break;
|
||||
case "% Information":
|
||||
case "% Note:":
|
||||
case "% This":
|
||||
case "%":
|
||||
logger.info("Skipping comment block");
|
||||
break;
|
||||
default:
|
||||
logger.info("Unknown block found");
|
||||
logger.error(block);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ public class Whois {
|
||||
WHOIS_SERVERS.add("whois.afrinic.net");
|
||||
WHOIS_SERVERS.add("whois.apnic.net");
|
||||
WHOIS_SERVERS.add("whois.arin.net");
|
||||
WHOIS_SERVERS.add("whois.lacnic.net");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -79,7 +80,7 @@ public class Whois {
|
||||
}
|
||||
|
||||
/**
|
||||
* reads and parses the inforomation for the given ip address from the given whoisserver
|
||||
* reads and parses the information for the given ip address from the given whoisserver
|
||||
*
|
||||
* @param whoIsServer the whoisClient server to use
|
||||
* @param ip the ip to query whoisClient data for
|
||||
|
||||
@ -15,11 +15,12 @@
|
||||
*/
|
||||
package de.muehlencord.shared.network.whois;
|
||||
|
||||
import de.muehlencord.shared.network.BaseTest;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import de.muehlencord.shared.network.BaseTest;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@ -76,8 +77,8 @@ public class WhoisTest extends BaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
public void testUnkown() throws WhoisException {
|
||||
// @Disabled
|
||||
public void testUnknown() throws WhoisException {
|
||||
Whois whoIsClient = new Whois();
|
||||
// whoIsClient.execute("whois.arin.net", "174.139.180.10");
|
||||
// whoIsClient.execute("whois.twnic.net", "60.250.38.39");
|
||||
@ -86,7 +87,10 @@ public class WhoisTest extends BaseTest {
|
||||
// whoIsClient.execute("whois.apnic.net", "182.72.111.26");
|
||||
// whoIsClient.execute("whois.ripe.net", "213.55.95.62"); // Transferred to Afrinic
|
||||
// whoIsClient.execute("whois.afrinic.net", "213.55.95.62");
|
||||
whoIsClient.execute("whois.arin.net", "32.64.68.229");
|
||||
// whoIsClient.execute("whois.arin.net", "32.64.68.229");
|
||||
// WhoisInformation info = whoIsClient.execute("whois.lacnic.net", "179.43.168.126");
|
||||
WhoisInformation info = whoIsClient.execute("179.43.168.126");
|
||||
System.out.println (info);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -0,0 +1,452 @@
|
||||
|
||||
% Joint Whois - whois.lacnic.net
|
||||
% This server accepts single ASN, IPv4 or IPv6 queries
|
||||
|
||||
% LACNIC resource: whois.lacnic.net
|
||||
|
||||
|
||||
% Copyright LACNIC lacnic.net
|
||||
% The data below is provided for information purposes
|
||||
% and to assist persons in obtaining information about or
|
||||
% related to AS and IP numbers registrations
|
||||
% By submitting a whois query, you agree to use this data
|
||||
% only for lawful purposes.
|
||||
% 2022-02-25 08:42:23 (-03 -03:00)
|
||||
|
||||
inetnum: 179.43.128.0/18
|
||||
status: allocated
|
||||
aut-num: AS51852
|
||||
owner: PRIVATE LAYER INC
|
||||
ownerid: PA-PLIN-LACNIC
|
||||
responsible: Milciades Garcia
|
||||
address: Torres De Las Americas, Torre C, 0, Suite 1404, Floor 14
|
||||
address: 00000 - Panama -
|
||||
country: PA
|
||||
phone: +41 43 5082295
|
||||
owner-c: MIG23
|
||||
tech-c: MIG23
|
||||
abuse-c: MIG23
|
||||
inetrev: 179.43.128.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.129.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20191008
|
||||
inetrev: 179.43.130.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.131.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20191008
|
||||
inetrev: 179.43.132.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.133.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.134.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.140.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.141.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.144.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.142.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20191008
|
||||
inetrev: 179.43.143.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.150.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.151.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.145.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.155.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.157.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.182.0/24
|
||||
nserver: NS1.CURTIR.ME [lame - not published]
|
||||
nsstat: 20220225 UH
|
||||
nslastaa: 20190327
|
||||
nserver: NS2.CURTIR.ME [lame - not published]
|
||||
nsstat: 20220225 UH
|
||||
nslastaa: 20190327
|
||||
inetrev: 179.43.183.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.187.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.188.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.190.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.191.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.161.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM [lame - not published]
|
||||
nsstat: 20220225 NOT SYNC ZONE
|
||||
nslastaa: 20210211
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.146.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.160.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.148.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.152.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.162.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.169.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.178.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.139.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.163.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.165.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM [lame - not published]
|
||||
nsstat: 20220225 QREFUSED
|
||||
nslastaa: 20150617
|
||||
inetrev: 179.43.166.0/24
|
||||
nserver: NS-160.AWSDNS-20.COM [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20150425
|
||||
nserver: NS-1647.AWSDNS-13.CO.UK [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20150425
|
||||
inetrev: 179.43.167.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.168.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.176.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.149.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.181.0/24
|
||||
nserver: NS1.LEADSPLANOSDESAUDE.COM.BR [lame - not published]
|
||||
nsstat: 20220224 UH
|
||||
nslastaa: 20150727
|
||||
nserver: NS2.LEADSPLANOSDESAUDE.COM.BR [lame - not published]
|
||||
nsstat: 20220224 UH
|
||||
nslastaa: 20150727
|
||||
inetrev: 179.43.154.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.184.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.185.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.186.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.172.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.170.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
inetrev: 179.43.156.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.189.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.164.0/24
|
||||
nserver: NS-437.AWSDNS-54.COM [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20150424
|
||||
nserver: NS-1214.AWSDNS-23.ORG [lame - not published]
|
||||
nsstat: 20220224 QREFUSED
|
||||
nslastaa: 20150424
|
||||
inetrev: 179.43.171.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.177.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.180.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM [lame - not published]
|
||||
nsstat: 20220225 NOT SYNC ZONE
|
||||
nslastaa: 20201124
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.158.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.159.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220221 AA
|
||||
nslastaa: 20220221
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220221 AA
|
||||
nslastaa: 20220221
|
||||
inetrev: 179.43.147.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220223 AA
|
||||
nslastaa: 20220223
|
||||
inetrev: 179.43.173.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220225 AA
|
||||
nslastaa: 20220225
|
||||
inetrev: 179.43.174.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.175.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220222 AA
|
||||
nslastaa: 20220222
|
||||
inetrev: 179.43.179.0/24
|
||||
nserver: DNS01.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
nserver: DNS02.PRIVATELAYER.COM
|
||||
nsstat: 20220224 AA
|
||||
nslastaa: 20220224
|
||||
created: 20131112
|
||||
changed: 20151101
|
||||
|
||||
nic-hdl: MIG23
|
||||
person: Milciades Garcia
|
||||
e-mail: support@privatelayer.com
|
||||
address: Edif. Ocean Business Plaza, 1404, Marbella
|
||||
address: 00000 - Panama City -
|
||||
country: PA
|
||||
phone: +41 43 5082295
|
||||
created: 20151023
|
||||
changed: 20220206
|
||||
|
||||
% whois.lacnic.net accepts only direct match queries.
|
||||
% Types of queries are: POCs, ownerid, CIDR blocks, IP
|
||||
% and AS numbers.
|
||||
|
||||
Reference in New Issue
Block a user