0
点赞
收藏
分享

微信扫一扫

如何判断数据包是不是VNC协议类型?

我们知道,VNC(Virtual Network Computing)是基于RFB(Remote Frame Buffer)协议进行通信的,是一个基于平台无关的简单显示协议的超级瘦客户系统。

在日常的开发中,如何判断发来的网络数据是不是基于VNC协议呢?

有三种方法:

  1. 使用Wireshark:Wireshark是一个流行的网络分析工具,可以捕获和分析网络数据包。您可以使用Wireshark来捕获数据包,并检查它们的内容以确定是否是VNC协议。VNC协议通常使用TCP端口5900开始,如果您看到数据包使用这些端口进行通信,很可能是VNC协议。
  2. 检查协议头:VNC协议有自己的协议头,您可以通过检查数据包的头部信息来确定它是否是VNC协议。
  3. 分析数据包内容:您可以分析数据包的内容,查看它们是否包含VNC特有的命令和数据格式。

第一种用工具判断先不说,

我们来看第二种:vnc服务器发送所能够支持的最高RFB协议版本号给客户端,比如:“RFB 003.006/n”,即版本号为3.6,版本号固定格式为×××.×××,不足部分前面补零。

VNC协议的协议头(Protocol Header)是VNC协议中的一个重要部分,它包含了一些标识信息和数据长度等信息,用于指示接下来的数据包的类型和长度。VNC协议头的格式如下:

| 1 byte | 1 byte | 2 bytes |
+--------+--------+---------+
|   VN   |   AUTH |   LENGTH   |
+--------+--------+---------+

其中:

  • VN(Version Number):是一个1字节的无符号整数,用于指示VNC协议的版本号。当前的VNC协议版本号为3.8。
  • AUTH(Authentication Scheme):是一个1字节的无符号整数,用于指示VNC协议中使用的认证方案。如果AUTH的值为0,则表示不需要认证;如果为1,则表示使用VNC认证方案;如果为2,则表示使用TightVNC认证方案。
  • LENGTH:是一个2字节的无符号整数,用于指示接下来的数据包的长度,不包括VNC协议头的长度。

VNC协议头的长度为4字节,它的前3个字节(VN、AUTH和LENGTH)是固定的,最后一个字节是数据包的类型。根据数据包的类型不同,VNC协议头的最后一个字节也会不同。例如,数据包类型为0表示客户端发送的“连接请求”数据包,类型为2表示服务器发送的“屏幕更新”数据包。


VNC协议的协议头(Protocol Header)是VNC协议中的一个重要部分,它包含了一些标识信息和数据长度等信息,用于指示接下来的数据包的类型和长度。VNC协议头的格式如下:

| 1 byte | 1 byte | 2 bytes |
+--------+--------+---------+
|   VN   |   AUTH |   LENGTH   |
+--------+--------+---------+

其中:

  • VN(Version Number):是一个1字节的无符号整数,用于指示VNC协议的版本号。当前的VNC协议版本号为3.8。
  • AUTH(Authentication Scheme):是一个1字节的无符号整数,用于指示VNC协议中使用的认证方案。如果AUTH的值为0,则表示不需要认证;如果为1,则表示使用VNC认证方案;如果为2,则表示使用TightVNC认证方案。
  • LENGTH:是一个2字节的无符号整数,用于指示接下来的数据包的长度,不包括VNC协议头的长度。

VNC协议头的长度为4字节,它的前3个字节(VN、AUTH和LENGTH)是固定的,最后一个字节是数据包的类型。根据数据包的类型不同,VNC协议头的最后一个字节也会不同。例如,数据包类型为0表示客户端发送的“连接请求”数据包,类型为2表示服务器发送的“屏幕更新”数据包。


其实还有一种更好的判断方法,VNC协议使用的默认端口号是5900。通常情况下,VNC服务器会监听5900端口,而VNC客户端会连接到服务器的5900端口来进行远程桌面控制。

如果需要同时运行多个VNC服务器,每个VNC服务器可以使用不同的端口号。例如,第一个VNC服务器可以使用5900端口,第二个可以使用5901端口,以此类推。

另外,还有一些衍生的VNC实现,如TightVNC、UltraVNC等,它们可能会使用不同的默认端口号,但通常情况下,VNC的端口号是5900。

根据端口号判断目标主机是否在运行VNC服务是有一定的局限性的,因为某个端口号上运行的服务并不一定就是VNC服务。然而,VNC服务通常使用TCP端口5900作为默认端口,而且通常情况下不会改变这个默认设置。

因此,如果您想简单地根据端口号来判断目标主机是否在运行VNC服务,您可以使用端口扫描工具(如nmap)来扫描目标主机的端口,检查是否有端口号为5900的TCP端口处于监听状态。以下是一个简单的nmap命令示例:

nmap -p 5900 <target_host>

如果nmap命令返回结果显示端口5900处于打开状态,那么就有可能目标主机在运行VNC服务。然而,这并不是百分之百准确的判断,因为其他服务也可能使用这个端口号。

在实际情况中,要准确判断目标主机是否在运行VNC服务,最好的方法是结合端口扫描和协议识别,检查端口是否处于监听状态,并尝试与该端口建立连接,然后根据连接的响应来判断是否是VNC服务。






举报

相关推荐

0 条评论