Rumah pembangunan bahagian belakang tutorial php fsockopen() 函数制作端口扫描器

fsockopen() 函数制作端口扫描器

Aug 19, 2017 am 09:30 AM
fsockopen pengimbas pelabuhan


1、前言

本文利用 fsockopen() 函数,编写一个功能简单的端口扫描器。

2、关键技术

本实例的端口号是固定的,通过对数组的遍历,利用 fsockopen() 函数连接,如果连接成功,则该端口处于开放状态,否则该端口处于关闭状态。

核心代码如下:

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>';
}
Salin selepas log masuk

3、代码如下

<!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>
Salin selepas log masuk

4、主要函数介绍

4.1、fsockopen

根据一个主机名来创建一个连接,成功返回一个资源对象,失败返回false;主机不可用是抛出一个警告

详情参考:http://php.net/manual/en/function.fsockopen.php

Atas ialah kandungan terperinci fsockopen() 函数制作端口扫描器. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Soundbar dikesan sebagai skrin monitor pada Windows PC [Betulkan] Soundbar dikesan sebagai skrin monitor pada Windows PC [Betulkan] Feb 19, 2024 pm 11:42 PM

Pada PC Windows, sesetengah pengguna telah mendapati bahawa Soundbar dikenali sebagai monitor apabila disambungkan ke port HDMI. Ini mungkin menyebabkan kekeliruan, tetapi penyelesaiannya bukan satu-satunya. Cara Menyambung Bar Bunyi ke PC melalui HDMI Kebanyakan bar bunyi menggunakan sambungan audio HDMI, optik atau 3.5mm. Jika bar bunyi anda hanya menyokong sambungan HDMI, ia mesti disambungkan ke port HDMI berlabel HDMIARC. Banyak TV atau monitor biasanya dilengkapi dengan berbilang port HDMI, salah satunya harus menyokong protokol ARC yang mematuhi standard HDMI. Dalam erti kata lain, HDMI ialah antara muka yang digunakan untuk menghantar audio dan video Jika peranti tidak mempunyai port HDMI, pertimbangkan untuk menggunakan monitor.

Bagaimana untuk menyemak sama ada port pelayan jauh dibuka di Linux Bagaimana untuk menyemak sama ada port pelayan jauh dibuka di Linux Mar 21, 2023 am 09:50 AM

Bagaimana untuk menyemak sama ada port pelayan jauh dibuka di Linux: 1. Gunakan arahan "nmap ip -p port" untuk menyemak sama ada port terbuka Perintah khusus adalah seperti "nmap 172.17.193.18 -p 5902"; . Gunakan arahan "nc -v ip port" Periksa sama ada port dibuka.

Apakah port com1 dan com2? Apakah port com1 dan com2? Aug 25, 2022 am 10:53 AM

com1 dan com2 ialah port komunikasi bersiri, dirujuk sebagai port bersiri pada umumnya mempunyai dua antara muka bersiri COM, yang biasanya digunakan untuk menyambungkan tetikus, yang merupakan peranti komunikasi antara muka bersiri merujuk kepada penghantaran data secara berurutan. yang dicirikan oleh komunikasi Litar ini mudah, dan hanya sepasang talian penghantaran boleh mencapai komunikasi dua hala.

Bagaimana untuk menutup port 445 dalam Win11 Bagaimana untuk menutup port 445 dalam Win11 Jul 04, 2023 pm 12:17 PM

Bagaimana untuk menutup port 445 dalam Win11? Port No. 445 ialah port TCP, folder kongsi dan port pencetak, yang menyediakan perkhidmatan perkongsian fail atau pencetak dalam LAN. Baru-baru ini, sesetengah pengguna Win11 ingin menutup port 445, jadi bagaimana mereka harus melakukannya? Ramai rakan tidak tahu bagaimana untuk beroperasi secara terperinci Editor di bawah telah menyusun operasi terperinci untuk menutup port 445 dalam Win11 Jika anda berminat, ikuti editor untuk membaca di bawah. Operasi terperinci untuk menutup port 445 dalam Win11 1. Mula-mula, tekan kombinasi kekunci Win+S, atau klik ikon carian pada bar tugas bawah untuk membuka tetingkap carian Windows, masukkan Windows Firewall di bahagian atas, dan kemudian klik pilihan terbaik yang diberikan oleh sistem.

Betulkan Ralat Peranti AHCI Port 0 pada Komputer Windows Betulkan Ralat Peranti AHCI Port 0 pada Komputer Windows Feb 19, 2024 pm 12:45 PM

Jika anda menghadapi ralat peranti AHCI port 0 setiap kali anda memulakan komputer anda, anda perlu mengikuti kaedah yang disediakan dalam artikel ini untuk menyelesaikan masalah tersebut. Apakah ralat peranti AHCI port 0? Ralat peranti AHCI dilaporkan oleh BIOS. SMART telah menunjukkan bahawa cakera keras pada port 0 rosak dan mungkin tidak boleh diakses. Pemacu keras mungkin menghadapi masalah pada bila-bila masa. Jika ia adalah komputer meja, disyorkan untuk mencuba menukar port sambungan cakera keras. Jika masalah berterusan, ia mungkin masalah dengan cakera keras itu sendiri. Anda boleh menjalankan alat semakan cakera, lumpuhkan pemacu keras yang gagal dan semak port untuk menyelesaikan isu ini. Membetulkan Ralat Peranti AHCI Port 0 pada Komputer Windows Lazimnya, ralat peranti AHCI Port0 tidak berpunca daripada isu sistem pengendalian, sebaliknya daripada cakera keras yang gagal pada port 0.

iPhone anda tidak akan dicas selepas kemas kini iOS 17? Inilah yang boleh anda lakukan iPhone anda tidak akan dicas selepas kemas kini iOS 17? Inilah yang boleh anda lakukan Sep 21, 2023 pm 11:41 PM

Apakah punca masalah pengecasan iOS17? Terdapat beberapa kemungkinan sebab mengapa iPhone anda mungkin tidak dicas selepas mengemas kini kepada iOS17. Satu kemungkinan ialah terdapat pepijat dalam kemas kini perisian. Apple biasanya cepat membetulkan pepijat dalam kemas kini iOS, jadi jika anda menghadapi masalah pengecasan, anda patut menyemak sama ada kemas kini baharu tersedia. Kemungkinan lain ialah terdapat masalah dengan kabel pengecasan atau penyesuai. Jika anda menggunakan kabel atau penyesuai pengecasan pihak ketiga, pastikan ia diperakui oleh Apple. Cara Menyelesaikan Isu iPhone Tidak Mengecas Berikut ialah beberapa petua tentang cara menyelesaikan masalah iPhone tidak mengecas selepas kemas kini iOS17: Mulakan semula telefon Apple anda Ini biasanya menyelesaikan masalah kecil yang mungkin menjadi punca isu pengecasan iOS17

Apa yang perlu dilakukan jika terdapat ralat dalam pelabuhan pemetaan docker Apa yang perlu dilakukan jika terdapat ralat dalam pelabuhan pemetaan docker Oct 21, 2022 pm 03:29 PM

Penyelesaian kepada ralat pelabuhan pemetaan docker: 1. Tukar ke akaun root 2. Gunakan arahan "netstat -nap" untuk menyemak pid program yang sedang berjalan; atur cara dan tukar program.

Cara menggunakan LSOF untuk memantau port dalam masa nyata Cara menggunakan LSOF untuk memantau port dalam masa nyata Mar 20, 2024 pm 02:07 PM

LSOF (ListOpenFiles) ialah alat baris arahan yang digunakan terutamanya untuk memantau sumber sistem yang serupa dengan sistem pengendalian Linux/Unix. Melalui arahan LSOF, pengguna boleh mendapatkan maklumat terperinci tentang fail aktif dalam sistem dan proses yang mengakses fail ini. LSOF boleh membantu pengguna mengenal pasti proses yang sedang menduduki sumber fail, dengan itu mengurus sumber sistem dengan lebih baik dan menyelesaikan masalah yang mungkin berlaku. LSOF berkuasa dan fleksibel, dan boleh membantu pentadbir sistem mengesan masalah berkaitan fail dengan cepat, seperti kebocoran fail, deskriptor fail yang tidak ditutup, dsb. Melalui Perintah LSOF Alat baris arahan LSOF membenarkan pentadbir dan pembangun sistem untuk: Menentukan proses yang sedang menggunakan fail atau port tertentu, sekiranya berlaku konflik port

See all articles