A port scanner is a program designed to probe a server or host for open ports. Looking at open ports, one can tell what services might be running on the remote server.
We earlier made a TCP Connect port scanner in C here - https://www.binarytides.com/tcp-connect-port-scanner-code-c-winsock/
and here - https://www.binarytides.com/tcp-connect-port-scanner-c-code-linux-sockets/
Now we shall try making the same port scanner in PHP.
The code is very simple:
Using fsockopen
<?php /* Simple TCP connect port scanner in php using fsockopen */ //avoid warnings like this PHP Warning: fsockopen(): unable to connect to 192.168.1.2:83 (Connection refused) in /var/www/blog/port_scanner.php on line 10 error_reporting(~E_ALL); $from = 1; $to = 255; //TCP ports $host = '192.168.1.2'; for($port = $from; $port <= $to ; $port++) { $fp = fsockopen($host , $port); if ($fp) { echo "port $port open \n"; fclose($fp); } }
Output :
desktop:~$ php /var/www/blog/port_scanner.php port 21 open port 22 open port 80 open
The above code uses fsockopen to connect a host on a port , and if the connection is established then it returns true , indicating that the port is open.
Using PHP Sockets
/* Simple TCP connect port scanner in php using fsockopen */ //avoid warnings PHP Warning: fsockopen(): unable to connect to 192.168.1.2:83 (Connection refused) in /var/www/blog/port_scanner.php on line 10 error_reporting(~E_ALL); $from = 1; $to = 255; //TCP ports $host = '192.168.1.2'; //Create a socket $socket = socket_create(AF_INET , SOCK_STREAM , SOL_TCP); for($port = $from; $port <= $to ; $port++) { //connect to the host and port $connection = socket_connect($socket , $host , $port); if ($connection) { echo "port $port open \n"; //Close the socket connection socket_close($socket); //Create a new since earlier socket was closed , we need to close and recreate only when a connection is made //otherwise we can use the same socket $socket = socket_create(AF_INET , SOCK_STREAM , SOL_TCP); } }
Output :
desktop:~$ php /var/www/blog/port_scanner.php port 21 open port 22 open port 80 open
The above example uses the php socket functions socket_create and socket_connect , to connect to a host on a port.
If the connection is established the socket_connect function returns true , indicating that the port is open.
thank you
this lesson good ;
And what can I do with the port if it happens to be open on a remote machine?