Php 通过TCP套接字请求服务名称

Php 通过TCP套接字请求服务名称,php,sockets,Php,Sockets,我正在用PHP制作一个简单的端口扫描程序,并试图弄清楚如何请求连接到的服务的名称,类似于Nmap如何发现服务 我使用fsockopen()打开套接字,所以我会使用fwrite($socket,“我正在与什么服务通信?”)来提问,然后使用fgets($socket)来听 如何询问服务是什么?程序中硬编码了不同端口的用途。远程应用程序不会报告它们。互联网上有大量的列表提供了这些信息 在不同操作系统上查看标准服务和类似服务的响应也是一样的。这就是nmap猜测它在与什么操作系统对话的方式 这是一个不错的

我正在用PHP制作一个简单的端口扫描程序,并试图弄清楚如何请求连接到的服务的名称,类似于Nmap如何发现服务

我使用fsockopen()打开套接字,所以我会使用
fwrite($socket,“我正在与什么服务通信?”)
来提问,然后使用
fgets($socket)
来听


如何询问服务是什么?

程序中硬编码了不同端口的用途。远程应用程序不会报告它们。互联网上有大量的列表提供了这些信息

在不同操作系统上查看标准服务和类似服务的响应也是一样的。这就是nmap猜测它在与什么操作系统对话的方式

这是一个不错的起点

是具有nmap端口映射的源文件

可怕的部分是代码,它告诉我们哪些版本正在运行。我很高兴我不用写这个:\


最后一个,非常确定这是一个说明如何猜测远程计算机是哪个操作系统的文件:

是的,我刚刚找到一个页面,其中Nmap开发人员描述了他们扫描服务的方法();这听起来很难复制。我可能决定放弃这个功能,我写这个只是为了好玩。不过值得一试,谢谢!我希望只有一个所有程序都知道的标准“version”命令。@user2120415检查是否有打开的TCP端口非常容易,您可以做出天真的假设,比如如果22正在接受连接,那么SSH正在服务器上运行。端口80?HTTP等。您不必报告版本等。