如何找出在远程主机上启用了哪个版本的SMB?

我的本地机器正在运行Windows 7,它支持最新的SMB协议版本(SMB 2.1)。 我也有一个远程主机,我不知道该远程主机上安装了哪些操作系统或SMB支持软件; 我只知道远程主机支持某种版本的SMB协议。

如何从Windows 7计算机的命令提示符(或PowerShell)中find该远程主机支持的SMB版本?

编辑:虽然我提到Windows 7上面,我敢肯定,这个问题是相关的许多系统/networkingpipe理员或桌面支持人员,因此,我在这里发布的问题,而不是在superuser.com。

最简单的方法是安装WireShark并捕获数据包,它将解码它们并显示协议版本。 他们在他们的wiki上有一个SMBv2条目 ,所以最新版本的WireShark应该在数据包捕获中对其进行解码。

在Windows 8和更高版本上,可以使用powerhsell命令Get-SmbConnection来检查每个连接使用哪个SMB版本。

确定远程主机的SMB版本只有两种可能的方法。

首先是使用telnet进行横幅抓取。 即使那样,你也不能保证任何有用的东西都会回来。 我可以成功连接到我的一个SMB服务器,但是没有得到任何有用的横幅信息。

其次是使用networking安全扫描器通过networking对系统进行指纹识别 。 您将不得不寻找一个好的工具,因为在确定正在运行的SMB版本方面仍然不能保证成功。 例如,我刚刚在networking上使用了nmap的快速扫描(我知道在多个端点上运行的是Microsoft SMB),而且我没有得到关于它运行的SMB版本的相关信息。