detailed_uri.""); exit; } print_footer(); // HTTP HEADERS function show_http_headers() { echo "

YOUR HTTP HEADERS

"; readheader("REMOTE_ADDR"); readheader("HTTP_X_FORWARDED_FOR"); readheader("HTTP_USER_AGENT"); readheader("HTTP_CLIENT_IP"); readheader("HTTP_X_FORWARDED"); readheader("HTTP_FORWARDED_FOR"); readheader("HTTP_FORWARDED"); readheader("HTTP_HOST"); readheader("HTTP_URI"); echo "
"; } // DNS LOOKUP function show_hostname($ip) { global $hostname; $hostname = ip2hostname($ip); echo "HOSTNAME: " . link_target($hostname); echo "
\n"; } // REVERSE IP4 LOOKUP function show_reverse($hostname) { global $hostname; $ip = hostname2ip($hostname); echo "IPv4 REVERSE LOOKUP: " . link_target($ip); echo "
\n"; } // IPINFO function show_ipinfo($ip) { echo "

IPINFO

\n"; $json = file_get_contents("http://ipinfo.io/" . $ip); $data = json_decode($json, TRUE); echo "LOCATION: " . $data['country'] .", ". $data['region'] .", ". $data['city'] . "
\n"; echo "MAP: " . $data['loc'] . "
\n"; echo "AS: " . $data['org'] . "
\n"; } // WHOIS function show_whois($target) { echo "

WHOIS

\n"; if(preg_match('/^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$/', $target)) { // if domain, skip subdomains preg_match('/[a-zA-Z\d\-]+\.[a-zA-Z\d]+$/', $target, $m); $target = $m[0]; } $whois = shell_exec("timeout 5 whois " . $target ); echo "
"; print_r($whois); echo "
"; echo "
\n"; } // DNSRECORDS function show_dnsrecords($hostname) { echo "

DNS Records

\n"; // A $dnsrecords = dnsrecords($hostname, "DNS_A"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; echo link_target($value['ip']) . "
\n"; } // AAAA $dnsrecords = dnsrecords($hostname, "DNS_AAAA"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; echo link_target($value['ipv6']) . "
\n"; } // CNAME $dnsrecords = dnsrecords($hostname, "DNS_CNAME"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; echo link_target($value['target']) . "
\n"; } // MX $dnsrecords = dnsrecords($hostname, "DNS_MX"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; echo link_target($value['target']) . " (" . $value['pri'] . ")
\n"; } // NS $dnsrecords = dnsrecords($hostname, "DNS_NS"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; echo link_target($value['target']) . "
\n"; } // TXT $dnsrecords = dnsrecords($hostname, "DNS_TXT"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; $i = 0; foreach($value['entries'] as $entry) { if($i !== 0){echo " | ";} echo $entry; } echo "
\n"; } // SOA $dnsrecords = dnsrecords($hostname, "DNS_SOA"); foreach($dnsrecords as $key=>$value) { echo "" . $value['type'] . ": "; echo "" . $value['mname'] . " (mname), "; echo "" . $value['rname'] . " (rname), "; echo "" . $value['serial'] . " (serial)
\n"; } // OTHER $dnsrecords = dnsrecords($hostname, "OTHER"); if(!empty($dnsrecords)) { echo "Other DNS records:
\n "; echo "
"; print_r($dnsrecords); echo "
"; echo "
\n"; } } // PRINT HEADER function print_header() { print ' IP and DNS information '; } // PRINT FOOTER function print_footer() { global $config; echo "


\n"; echo 'Your plain IP address: IPv4 | IPv6'; echo "
\n"; echo 'Your detailed IP info: IPv4 | IPv6'; echo ''; } // HELPER FUNCTIONS function readheader($value) { echo "" . $value . ": "; // show desired value if(isset($_SERVER[$value])) { // only if desired header has been delivered echo $_SERVER[$value]; } echo "
\n"; } function ip2hostname($ip) { $hostname = gethostbyaddr($ip); return $hostname; } function hostname2ip($hostname) { $ipsbyhostname = gethostbynamel($hostname); if($ipsbyhostname === false) { $ip = $hostname; } else { $ip = implode(', ', gethostbynamel($hostname)); } return $ip; } function dnsrecords($hostname, $record = "DNS_ALL") { if($record === "OTHER") { $dnsrecords = dns_get_record($hostname, DNS_ALL - DNS_A - DNS_AAAA - DNS_MX - DNS_CNAME - DNS_NS - DNS_TXT - DNS_SOA); } else { $dnsrecords = dns_get_record($hostname, constant($record)); } return $dnsrecords; } function link_target($target) { if(filter_var($target, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) || filter_var($target, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { // target is an IP return "" . $target . ""; } elseif(preg_match('/^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$/', $target)) { return "" . $target . ""; } } ?>