fsockopen() 函数制作端口扫描器
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>'; }
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='#'> 网址/ip:<input type="text" name="ip" value="<?php echo $_POST['ip'] ?? '127.0.0.1'?>"> <button>扫描</button> </form> <table> <thead> <tr> <td>id</td> <td>端口号</td> <td>服务</td> <td>开启状态</td> </tr> </thead> <tbody> <?php $ip = $_POST['ip'] ?? '127.0.0.1'; if(ip2long($ip)){ $aIp = explode('.', $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>
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas


![Soundbar dikesan sebagai skrin monitor pada Windows PC [Betulkan]](https://img.php.cn/upload/article/000/465/014/170835733166289.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
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: 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.

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? 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.

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.

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

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.

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
