Home Backend Development PHP Tutorial fsockopen() function creates a port scanner

fsockopen() function creates a port scanner

Aug 19, 2017 am 09:30 AM
fsockopen scanner port


1. Preface

This article uses the fsockopen() function to write a port scanner with simple functions.

2. Key Technology

The port number of this example is fixed. By traversing the array, the fsockopen() function is used to connect. If the connection is successful, the port is open, otherwise The port is closed.

The core code is as follows:

foreach ($port as $key => $value) {
    echo '<tr>';
    echo '<td>' . $key . '</td>';
    echo '<td>' . $value . '</td>';
    echo '<td>' . $msg[$key] . '</td>';    //$errno 和 $errstr 在这里基本用不上,只是为了设置 timeout,防止请求超时
    $fp = @fsockopen($ip, $value, $errno, $errstr, 1);//如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。所有需要加@
    $result = $fp ? '<span style="color:red">开启</span>' : '<span style="color:red">关闭</span>';
    echo '<td>' . $result . '</td>';
    echo '</tr>';
}
Copy after login

3. The code is as follows

##

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>端口扫描</title>
    <style type="text/css">
        td{
            padding:10px;
            border-bottom:1px solid #eee;
        }    </style>
</head>
<body>
    <form method="post" action=&#39;#&#39;>
        网址/ip:<input type="text" name="ip" value="<?php echo  $_POST[&#39;ip&#39;] ?? &#39;127.0.0.1&#39;?>">
        <button>扫描</button>
    </form>
    <table>
        <thead>
            <tr>
                <td>id</td>
                <td>端口号</td>
                <td>服务</td>
                <td>开启状态</td>
            </tr>
        </thead>
        <tbody>
            <?php  
                $ip = $_POST[&#39;ip&#39;] ?? &#39;127.0.0.1&#39;;                if(ip2long($ip)){
                    $aIp = explode(&#39;.&#39;, $ip);//ip4地址使用.分隔符                    //这里没有对 0.0.0.0 这种本机地址进行判断,只是粗略的判断ip是否合法 
                    foreach ($aIp as $key => $value) {                        if($value < 0 || $value > 255){
                            die('地址不合法');
                        }
                    }
                }
                
                $port = array(                    21, 
                    23, 
                    25,                    79,                    80, 
                    110, 
                    135, 
                    137, 
                    138, 
                    139, 
                    143, 
                    443, 
                    445, 
                    1433, 
                    3306, 
                    3389
                );
                $msg = array(                    'Ftp',                    'Telnet',                    'Smtp',                    'Finger',                    'Http',                    'Pop3',                    'Location Service',                    'Netbios-NS',                    'Netbios-DGM',                    'Netbios-SSN',                    'IMAP',                    'Https',                    'Microsoft-DS',                    'MSSQL',                    'MYSQL',                    'Terminal Services'
                );                //无论使用prot还是msg循环都是可以的,因为$key是对应的,都是索引数组
                foreach ($port as $key => $value) {
                    echo '<tr>';
                    echo '<td>' . $key . '</td>';
                    echo '<td>' . $value . '</td>';
                    echo '<td>' . $msg[$key] . '</td>';                    //$errno 和 $errstr 在这里基本用不上,只是为了设置 timeout,防止请求超时
                    $fp = @fsockopen($ip, $value, $errno, $errstr, 1);//如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。所有需要加@
                    $result = $fp ? '<span style="color:red">开启</span>' : '<span style="color:red">关闭</span>';
                    echo '<td>' . $result . '</td>';
                    echo '</tr>';
                }            ?>
        </tbody>
    </table>
</body>
</html>
Copy after login
4. Introduction to the main functions

4.1, fsockopen

Creates a connection based on a host name, returns a resource object successfully, returns false on failure; if the host is unavailable, a warning is thrown

For details, refer to: http:// php.net/manual/en/function.fsockopen.php

The above is the detailed content of fsockopen() function creates a port scanner. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Soundbar detected as monitor screen on Windows PC [Fix] Soundbar detected as monitor screen on Windows PC [Fix] Feb 19, 2024 pm 11:42 PM

On Windows PCs, some users have discovered that the Soundbar is recognized as a monitor when connected to the HDMI port. This may cause some confusion, but the solution is not the only one. How to Connect a Soundbar to a PC via HDMI Most soundbars use HDMI, optical, or 3.5mm audio connections. If your soundbar only supports HDMI connections, it must be connected to an HDMI port labeled HDMIARC. Many TVs or monitors are usually equipped with multiple HDMI ports, one of which should support the ARC protocol that complies with the HDMI standard. In other words, HDMI is an interface used to transmit audio and video. If the device does not have an HDMI port, consider using a monitor.

How to check whether the remote server port is open in Linux How to check whether the remote server port is open in Linux Mar 21, 2023 am 09:50 AM

How to check whether the remote server port is open in Linux: 1. Use the "nmap ip -p port" command to check whether the port is open. The specific command is such as "nmap 172.17.193.18 -p 5902"; 2. Use the "nc -v ip port" command Check whether the port is open. The specific command is "nc -v 172.17.193.18 5902".

What ports are com1 and com2? What ports are com1 and com2? Aug 25, 2022 am 10:53 AM

com1 and com2 are serial communication ports, referred to as serial ports; a motherboard generally has two COM serial interfaces, which are usually used to connect mice, which are communication devices. The serial interface refers to the sequential transmission of data bit by bit, which is characterized by communication The circuit is simple, and only a pair of transmission lines can achieve two-way communication.

How to close port 445 in Win11 How to close port 445 in Win11 Jul 04, 2023 pm 12:17 PM

How to close port 445 in Win11? Port No. 445 is a TCP port, a shared folder and printer port, which provides file or printer sharing services within the LAN. Recently, some Win11 users want to close port 445, so how should they do it? Many friends don’t know how to operate in detail. The editor below has compiled the detailed operations for closing port 445 in Win11. If you are interested, follow the editor to read below! Detailed operation of closing port 445 in Win11 1. First, press the Win+S key combination, or click the search icon on the bottom taskbar, open the Windows search window, enter Windows Firewall at the top, and then click the best option given by the system.

Fix AHCI Port 0 Device Error on Windows Computer Fix AHCI Port 0 Device Error on Windows Computer Feb 19, 2024 pm 12:45 PM

If you encounter an AHCI port 0 device error every time you start your computer, you need to follow the methods provided in this article to solve the problem. What is AHCI port 0 device error? AHCI device errors are reported by the BIOS. SMART has indicated that the hard drive on port 0 is faulty and may not be accessible. The hard drive may have problems at any time. If it is a desktop computer, it is recommended to try changing the hard drive connection port. If the problem persists, it may be a problem with the hard drive itself. You can run a disk check tool, disable the failed hard drive and check the ports to resolve this issue. Fixing AHCI Port 0 Device Errors on Windows Computers Typically, AHCI Port0 device errors do not originate from operating system issues, but rather from the hard drive failing on port 0.

Your iPhone won't charge after iOS 17 update? Here's what you can do Your iPhone won't charge after iOS 17 update? Here's what you can do Sep 21, 2023 pm 11:41 PM

What is the cause of iOS17 charging problem? There are several possible reasons why your iPhone may not be charging after updating to iOS17. One possibility is that there is a bug in the software update. Apple is usually quick to fix bugs in iOS updates, so if you're having charging issues it's worth checking to see if a new update is available. Another possibility is that there is a problem with the charging cable or adapter. If you're using a third-party charging cable or adapter, make sure it's certified by Apple. How to Fix iPhone Not Charging Issue Here are some tips on how to fix iPhone not charging issue after iOS17 update: Restart your Apple phone This usually resolves minor issues that may be the root cause of iOS17 charging issue

What to do if there is an error in docker mapping port What to do if there is an error in docker mapping port Oct 21, 2022 pm 03:29 PM

Solution to docker mapping port error: 1. Switch to the root account; 2. Use the "netstat -nap" command to check the pid of the program running; 3. Use the "kill -9 2901 su u260517" command to kill the program and switch the program. .

How to use LSOF to monitor ports in real time How to use LSOF to monitor ports in real time Mar 20, 2024 pm 02:07 PM

LSOF (ListOpenFiles) is a command line tool mainly used to monitor system resources similar to Linux/Unix operating systems. Through the LSOF command, users can get detailed information about the active files in the system and the processes that are accessing these files. LSOF can help users identify the processes currently occupying file resources, thereby better managing system resources and troubleshooting possible problems. LSOF is powerful and flexible, and can help system administrators quickly locate file-related problems, such as file leaks, unclosed file descriptors, etc. Via LSOF Command The LSOF command line tool allows system administrators and developers to: Determine which processes are currently using a specific file or port, in the event of a port conflict

See all articles