windows-7 - Windows 7真的支持SMB核心协议(protocol)吗?

标签 windows-7 smb

我已经开始为基于 Z80 的旧机器开发 SMB 服务器。这台机器运行一个非常简单的、类似MS-DOS的操作系统(没有多任务,没有用户概念,只有FAT文件系统,没有unicode,只有8.3文件名)并且内存有限,因此我的第一个想法是只实现SMB核心协议(protocol)。我将使用 TCP 传输。

就目前而言,我只有一个非常短的测试代码,它仅回复 SMB_COM_NEGOTIATE 命令,表明核心协议(protocol)(“PC NETWORK PROGRAM 1.0”)是所需的方言。为了测试它,我尝试从 Windows 7 计算机进行连接,打开资源管理器窗口并输入 "\\<server IP>"在地址栏中。我已使用 Wireshark 验证服务器收到协商命令并发送(显然)正确的响应。

问题:一旦 Windows 客户端收到响应,它就会显示一条通用的“无法访问资源”错误消息(错误代码为 0x80004005),然后什么也没有发生(没有进一步的 SMB)消息已发送)。我期望收到 SMB_COM_TREE_CONNECT 或类似的命令。

我当时想,也许Windows 7不支持核心协议(protocol)(它很旧,而且缺乏任何安全功能),但是,为什么它会在协商请求中列出核心方言名称呢?也许我错过了一些步骤?服务器必须在协商响应后发送任何额外的数据包吗?

客户端操作系统是 Windows 7 Ultimate 64 位,以下是请求和响应的 Wireshark 转储,以防任何人在过程中发现任何错误:

请求:

SMB dialect negotiate request

响应:

SMB dialect negotiate response

更新:如果我选择 NT LM 0.12 方言而不是核心方言,我会收到来自客户端的 SESSION_SETUP_AND_REQUESTX 命令。显然,Windows 7 确实不支持核心协议(protocol)。无论如何,任何额外的信息将不胜感激。

最佳答案

我相信 Windows 7 确实支持核心协议(protocol)。当按照 here 连接到旧服务器时,它会降级到 SMB 1.0。

根据 Windows 7 连接到 Samba 服务器的问题,我认为指定核心协议(protocol)的问题是由于 Windows 7 计算机上的 LANMAN 工作站/客户端设置造成的。

建议的更改是

  • 使 LM 和 NTLM 哈希成为安全策略的一部分是 网络安全:LAN Manager 身份验证级别发送 LM 和 NTLM 响应
  • 将注册表项的【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\【LmCompatibilityLevel】值更改为0,按照here
  • 在注册表中的 LanmanWorkStation 和 NetLogon 中添加以下参数 HKLM\System\CCS\Services\LanmanWorkstation\Parameters DWORD 域兼容性模式 = 1 DWORD DNSNameResolutionRequired = 0

    HKLM\System\CCS\Services\Netlogon\Parameters DWORD RequireSignOnSeal = 0 DWORD RequireStrongKey = 0

    列出了通过注册表和安全策略可能对这些设置进行的更改 here

这些更改应确保 LanmanWorkstation 不使用 NTLMv2 session 安全性。

关于windows-7 - Windows 7真的支持SMB核心协议(protocol)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014350/

相关文章:

windows - 为 Windows 实现 SMB 重定向器的最简单方法?

ruby - 在带有 Rails 3、Ruby 1.9.2 的 Windows 7 上运行自动测试时出错

ruby - Grit 是否适用于 Windows 7?

java - 使用带有 Samba JCIFS 的 Java 访问文件

macos - 如何配置 Vista Ultimate(64 位)帐户,以便它可以访问 OSX 上的 SMB 共享?

Mercurial: "hg push"到 smb 共享不起作用

Python - subprocess.Popen 不返回输出

c++ - 程序崩溃 - 如何读取 appcompat.txt?

shell - window 7 : Property Handler works in Explorer but Not FileOpenDialog?

Python写入文件smb路径