detailed_uri."");
exit;
}
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("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";
}
// 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 header() {
print '
IP and DNS information
';
}
// PRINT FOOTER
function footer() {
global $config;
echo "
\n";
echo 'Your plain IP address: IPv4 | IPv6';
echo "
\n";
echo 'Your detailed IP info: IPv4 | IPv6';
}
// 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) {
$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_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 . "";
}
}
?>