Viewing file: Portscan.php (4.23 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Martin Jansen <mj@php.net> |
// | |
// +----------------------------------------------------------------------+
//
// $Id: Portscan.php,v 1.5 2003/04/22 12:14:11 mj Exp $
define("NET_PORTSCAN_SERVICE_FOUND", true);
define("NET_PORTSCAN_NO_SERVICE", false);
/**
* Portscan class
*
* This class provides methods to scan ports on machines,
* that are connected to the internet. See README for more
* information on how to use it.
*
* @author Martin Jansen <mj@php.net>
* @package Net_Portscan
* @category Net
* @version $Revision: 1.5 $
*/
class Net_Portscan
{
// {{{ checkPort()
/**
* Check if there is a service available at a certain port.
*
* This function tries to open a connection to the port
* $port on the machine $host. If the connection can be
* established, there is a service listening on the port.
* If the connection fails, there is no service.
*
* @access public
* @param string Hostname
* @param integer Portnumber
* @param integer Timeout for socket connection in seconds (default is 30).
* @return string
*/
function checkPort($host, $port, $timeout = 30)
{
$socket = @fsockopen($host, $port, $errorNumber, $errorString, $timeout);
if (!$socket) {
return NET_PORTSCAN_NO_SERVICE;
}
@fclose($socket);
return NET_PORTSCAN_SERVICE_FOUND;
}
// }}}
// {{{ checkPortRange()
/**
* Check a range of ports at a machine
*
* This function can scan a range of ports (from $minPort
* to $maxPort) on the machine $host for running services.
*
* @access public
* @param string Hostname
* @param integer Lowest port
* @param integer Highest port
* @param integer Timeout for socket connection in seconds (default is 30).
* @return array Associative array containing the result
*/
function checkPortRange($host, $minPort, $maxPort, $timeout = 30)
{
for ($i = $minPort; $i <= $maxPort; $i++) {
$retVal[$i] = Net_Portscan::checkPort($host, $i, $timeout);
}
return $retVal;
}
// }}}
// {{{ getService()
/**
* Get name of the service that is listening on a certain port.
*
* @access public
* @param integer Portnumber
* @param string Protocol (Is either tcp or udp. Default is tcp.)
* @return string Name of the Internet service associated with $service
*/
function getService($port, $protocol = "tcp")
{
return @getservbyport($port, $protocol);
}
// }}}
// {{{ getPort()
/**
* Get port that a certain service uses.
*
* @access public
* @param string Name of the service
* @param string Protocol (Is either tcp or udp. Default is tcp.)
* @return integer Internet port which corresponds to $service
*/
function getPort($service, $protocol = "tcp")
{
return @getservbyname($service, $protocol);
}
// }}}
}
?>
|