########################################################################
# nqt.php last revised 02/19/05 (http://www.shat.net/php/nqt/) #
# Initial release 03/11/01 #
# NQT is now nearly four years old and still in wide use! #
# #
# Copyright (C) shaun@shat.net. Full license follows update history. #
# #
# Version 1.7 #
# 02/19/05: Added support for Italian domains (.it), with thanks to #
# Andrea Balestrero. I am planning more changes soon. #
# #
# Version 1.6 #
# 05/07: Due to transitioning in the administration of the .org TLD, #
# whois.crsnic.net no longer provides information for .org domains. I #
# updated the script to use whois.corenic.net for .orgs instead. #
# Thanks Jim In Cyberspace for the heads-up! #
# #
# Version 1.5 #
# 11/15: Adjusted the domain name regex to support 4-letter TLDs such #
# as .info, and added WWWhois support for the .info, .name, .cc, .ws, #
# .us, and .biz TLDs. Thanks to Andre from reload.de for the great #
# suggestion! #
# #
# Version 1.4 #
# 08/31: Added support for HTTP GET variables. You can now access your #
# copy of NQT and pass some variables within the URL, e.g. #
# http://your.host/nqt.php?target=shat.net&queryType=wwwhois #
# http://your.host/nqt.php?target=shat.net&queryType=all&portNum=80 #
# Credit to hypersven.com for this suggestion! #
# #
# Version 1.3 #
# 06/28: PHP 4.20+ sets register_globals to "off" by default. This #
# script expects them to be "on." Added a workaround. #
# #
# Version 1.2 #
# 03/01: The behavior of the gethostbyaddr() function appears to have #
# changed in PHP 4.12, it no longer accepts hostnames in fqdn format. #
# (This is how it really should work anyway, I think the old behavior #
# was a bug.) Previous versions of NQT relied upon the fact that the #
# gethostbyaddr() function would accept a hostname. If you're getting #
# errors about addresses not being in a.b.c.d format, please download #
# and install this version of the script. #
# #
# Version 1.1 #
# 10/30: Security update, thanks Dmitry Frolov, Mathijs Futselaar. #
# Previous versions of script allowed possible execution of arbitrary #
# commands on the host system. Updated lines marked with #bugfix, code #
# courtesy Dmitry Frolov. #
# #
# LICENSE #
# #
# Network Query Tool is Copyright (C) shaun@shat.net. If you use this #
# script, the copyright notice appended to query results MUST remain #
# INTACT and UNALTERED, including the link to the distribution site #
# DNS Query Results:Network Query Tool
");
#$target = gethostbyaddr($target);
#if (! eregi("[a-zA-Z]", ($target = gethostbyaddr($target))) )
if( (!eregi("[a-zA-Z]", $target) && (!eregi("[a-zA-Z]", $ntarget))))
$msg .= "Can't do a DNS query without a hostname.";
else{
if(!eregi("[a-zA-Z]", $target)) $target = $ntarget;
if (! $msg .= trim(nl2br(`dig any '$target'`))) #bugfix
$msg .= "The dig command is not working on your system.";
}
#TODO: Clean up output, remove ;;'s and DiG headers
$msg .= "
DNStracer Query Results:
"); #$target = gethostbyaddr($target); #if (! eregi("[a-zA-Z]", ($target = gethostbyaddr($target))) ) if( (!eregi("[a-zA-Z]", $target) && (!eregi("[a-zA-Z]", $ntarget)))) $msg .= "Can't do a DNS query without a hostname."; else{ if(!eregi("[a-zA-Z]", $target)) $target = $ntarget; if (! $msg .= trim(nl2br(`dnstracer -c -s A.ROOT-SERVERS.NET '$target'`))) #bugfix $msg .= "The dig command is not working on your system."; } #TODO: Clean up output, remove ;;'s and DiG headers $msg .= ""; message($msg); } function wwwhois($target){ global $ntarget; $server = "whois.crsnic.net"; message("
WWWhois Results:
"); #Determine which WHOIS server to use for the supplied TLD if((eregi("\.com\$|\.net\$|\.edu\$", $target)) || (eregi("\.com\$|\.net\$|\.edu\$", $ntarget))) $server = "whois.crsnic.net"; else if((eregi("\.info\$", $target)) || (eregi("\.info\$", $ntarget))) $server = "whois.afilias.net"; else if((eregi("\.org\$", $target)) || (eregi("\.org\$", $ntarget))) $server = "whois.corenic.net"; else if((eregi("\.name\$", $target)) || (eregi("\.name\$", $ntarget))) $server = "whois.nic.name"; else if((eregi("\.biz\$", $target)) || (eregi("\.biz\$", $ntarget))) $server = "whois.nic.biz"; else if((eregi("\.us\$", $target)) || (eregi("\.us\$", $ntarget))) $server = "whois.nic.us"; else if((eregi("\.cc\$", $target)) || (eregi("\.cc\$", $ntarget))) $server = "whois.enicregistrar.com"; else if((eregi("\.ws\$", $target)) || (eregi("\.ws\$", $ntarget))) $server = "whois.nic.ws"; else if((eregi("\.it\$", $target)) || (eregi("\.it\$", $ntarget))) $server = "whois.nic.it"; else if((eregi("\.hu\$", $target)) || (eregi("\.hu\$", $ntarget))) $server = "whois.nic.hu"; else{ $msg .= "I only support .com, .net, .org, .hu, .edu, .info, .name, .us, .cc, .ws, and .biz."; message($msg); return; } message("Connecting to $server...
IP Whois Results:
"); if (!$target = gethostbyname($target)) $msg .= "Can't IP Whois without an IP address."; else{ message("Connecting to $server..."; message($msg); } function checkp($target,$portNum){ message("
"); if (! $sock = fsockopen($server, 43, $num, $error, 20)){ unset($sock); $msg .= "Timed-out connecting to $server (port 43)"; } else{ fputs($sock, "$target\n"); while (!feof($sock)) $buffer .= fgets($sock, 10240); fclose($sock); } if (eregi("RIPE.NET", $buffer)) $nextServer = "whois.ripe.net"; else if (eregi("whois.apnic.net", $buffer)) $nextServer = "whois.apnic.net"; else if (eregi("nic.ad.jp", $buffer)){ $nextServer = "whois.nic.ad.jp"; #/e suppresses Japanese character output from JPNIC $extra = "/e"; } else if (eregi("whois.registro.br", $buffer)) $nextServer = "whois.registro.br"; if($nextServer){ $buffer = ""; message("Deferred to specific whois server: $nextServer...
"); if(! $sock = fsockopen($nextServer, 43, $num, $error, 10)){ unset($sock); $msg .= "Timed-out connecting to $nextServer (port 43)"; } else{ fputs($sock, "$target$extra\n"); while (!feof($sock)) $buffer .= fgets($sock, 10240); fclose($sock); } } $buffer = str_replace(" ", " ", $buffer); $msg .= nl2br($buffer); } $msg .= "
Checking Port $portNum...
"); if (! $sock = fsockopen($target, $portNum, $num, $error, 5)) $msg .= "Port $portNum does not appear to be open."; else{ $msg .= "Port $portNum is open and accepting connections."; fclose($sock); } $msg .= ""; message($msg); } function p($target){ message("
Ping Results:
"); if (! $msg .= trim(nl2br(`ping -c5 '$target'`))) #bugfix $msg .= "Ping failed. Host may not be active."; $msg .= ""; message($msg); } function p6($target){ message("
Ping6 Results:
"); if (! $msg .= trim(nl2br(`ping6 -c5 '$target'`))) #bugfix $msg .= "Ping failed. Host may not be active."; $msg .= ""; message($msg); } function tr($target){ message("
Traceroute Results:
"); if (! $msg .= trim(nl2br(`/usr/sbin/traceroute '$target'`))) #bugfix $msg .= "Traceroute failed. Host may not be active."; $msg .= ""; message($msg); } function tr6($target){ message("
Traceroute6 Results:
"); if (! $msg .= trim(nl2br(`/usr/bin/traceroute6 '$target'`))) #bugfix $msg .= "Traceroute failed. Host may not be active."; $msg .= ""; message($msg); } function lookup6($target){ message("
Traceroute6 Results:
"); if (! $msg .= trim(nl2br(`host -t AAAA '$target'`))) #bugfix $msg .= "Traceroute failed. Host may not be active."; $msg .= ""; message($msg); } #If the form has been posted, process the query, otherwise there's #nothing to do yet if(!$queryType) exit; #Make sure the target appears valid #if( (!$target) || (!preg_match("/^[\w\d\.\-]+\.[\w\d]{1,4}$/i",$target)) ){ #bugfix # message("Error: You did not specify a valid target host or IP."); # exit; # } #Figure out which tasks to perform, and do them if( ($queryType=="all") || ($queryType=="lookup") ) lookup($target); if( ($queryType=="all") || ($queryType=="lookup6") ) lookup6($target); if( ($queryType=="all") || ($queryType=="dig") ) dig($target); if( ($queryType=="all") || ($queryType=="dnstracer") ) dnstracer($target); if( ($queryType=="all") || ($queryType=="wwwhois") ) wwwhois($target); if( ($queryType=="all") || ($queryType=="arin") ) arin($target); if( ($queryType=="all") || ($queryType=="checkp") ) checkp($target,$portNum); if( ($queryType=="all") || ($queryType=="p") ) p($target); if( ($queryType=="all") || ($queryType=="p6") ) p6($target); if( ($queryType=="all") || ($queryType=="tr") ) tr($target); if( ($queryType=="all") || ($queryType=="tr6") ) tr6($target); ?>
NQT20050219 Network Query Tool 1.7
Copyright © 2001-2024, shaun@shat.net
more module ( ping6 ,traceroute6 ,wwwhois .hu ,resolve6/reverse6) by cateye
Copyright © 2004-2024, cateye@cateye.hu