检测 SMB 与 SMB2 的网络共享

Posted

技术标签:

【中文标题】检测 SMB 与 SMB2 的网络共享【英文标题】:Detect SMB vs SMB2 for network share 【发布时间】:2014-02-07 00:14:11 【问题描述】:

给定一个像\\server\share这样的UNC路径,有没有办法使用Win32 API来确定本地和远程计算机是使用SMB还是SMB2连接?

【问题讨论】:

查看***.com/questions/10800616/… 【参考方案1】:

在刻录付费支持事件后,Microsoft 的官方回答是 Windows 7 中的驱动程序不会公开此信息。在 Windows 8 上,可以使用 WMI 和 MSFT_SmbConnection 类或 PowerShell 的 Get-SmbConnection cmdlet .

【讨论】:

Win10 PowerShell 的 Get-SmbConnection cmdlet 需要我的管理 shell。工作【参考方案2】:

也许您可以在 SMB2 规范中找到答案。

Server Message Block (SMB) Protocol Versions 2 and 3 specification

应该有一种方法可以检测版本...也许您可以尝试实现 SMB 协议的最小部分,只是为了向服务器询问协议版本?

【讨论】:

【参考方案3】:

最容易找到的方法之一是使用 wireshark(在 Windows 上)或 tcptrace/tcpdump 在 unix(运行 SMB 的地方)上进行网络跟踪。跟踪输出应该为您提供版本

【讨论】:

我正在寻找我们可以在程序启动时为客户连接的任意服务器动态检测到的东西。使用数据包嗅探器或调试器将不起作用。

以上是关于检测 SMB 与 SMB2 的网络共享的主要内容,如果未能解决你的问题,请参考以下文章

SMB2协议特性之oplock与lease(上)

一些网络应用层协议

smb服务是什么

Atitit.协议的转换smb2http 原理

第十一章 网络文件共享服务之samba

ubuntu16.04通过网络访问windows共享文件夹