精华内容
下载资源
问答
  • smb2 描述 SMB2 / 3客户端实施。 安装 go get github.com/hirochachacha/go-smb2 文献资料 例子 列出共享名称 package main import ( "fmt" "net" "github.com/hirochachacha/go-smb2" ) func main () { conn ,...
  • java操作网络共java-smb2

    2020-04-01 22:50:13
    java操作网络共享 smb2协议 使用smbj.jar访问共享文件夹,解决SMB2/SMB3共享文件夹访问 使用smbj.jar访问共享文件夹,支持SMB2/SMB3,用于解决使用jcifs.jar不支持SMB2/SMB3的问题
  • 使用smbj.jar访问共享文件夹,支持SMB2/SMB3,用于解决使用jcifs.jar不支持SMB2/SMB3的问题
  • SMB2 Transmogrificator是Nintendo Entertainment System游戏Super Mario Brother 2的关卡编辑器。它使用VB6编写,基于Acmlm \\\\\\\的SMB2 Level Discombobulator。
  • 我的电脑重新安装了2017秋季版的WIN10,在安卓手机上无法共享了,FX文件管理器因为支持smbv2 完美的解决这个问题,是RE文件管理器的优秀替代者。
  • 它实现了客户端SMB / CIFS协议(SMB1和SMB2),该协议允许您的Python应用程序访问文件和从SMB / CIFS共享文件夹(例如Windows文件共享和Samba文件夹)中传输文件。 主要项目网站: : 文档: : 问题追踪器:请...
  • SMB签名概述 服务器消息块(SMB)是Windows最常用的文件协议。SMB签名是一项功能,通过它可以在数据包级别对使用SMB的通信进行数字签名。对数据包进行数字签名可以使数据包的接收者确认其来源和真实性。SMB协议中...

    SMB签名概述

     

    服务器消息块(SMB)是Windows最常用的文件协议。SMB签名是一项功能,通过它可以在数据包级别对使用SMB的通信进行数字签名。对数据包进行数字签名可以使数据包的接收者确认其来源和真实性。SMB协议中的这种安全机制有助于避免诸如篡改数据包和“中间人”攻击之类的问题。

     

    SMB签名在所有当前受支持的Windows版本中都可用,但是默认情况下仅在域控制器上启用SMB签名。建议将其用于域控制器,因为SMB是客户端用于下载组策略信息的协议。SMB签名提供了一种确保客户端接收到真正的组策略的方法。

     

    SMB签名是在Windows 2000中引入的(当时它还被移植回Microsoft Windows NT 4.0和Microsoft Windows 98)。随着Windows Vista和Windows Server 2008中SMB2的引入,使用新的哈希算法(HMAC SHA-256代替了旧的MD5)改进了签名。当时,设置已更新,以简化配置和互操作性(您可以在后面的文章中找到详细信息)。SMB2签名的另一个重要改进是性能。在SMB1中,启用签名会大大降低性能,尤其是在通过WAN时。如果将SMB2加签名用于1GbE网络和现代CPU,则与SMB1相比,性能下降的幅度有限。如果使用更快的网络(例如10GbE),则签名对性能的影响会更大。

     

    SMB1签名配置和默认值

     

    有两种主要方法可以为SMB1客户端和SMB1服务器配置签名。设置组策略来配置它比较容易。例如,这是默认情况下如何将域控制器配置为要求签名。另一种方法是使用注册表设置。在每一侧(SMB1客户端和SMB1服务器),可以将SMB1签名设置为“必需”,“启用”或“禁用”。

     

    这是SMB1客户端签名设置的摘要:

     

    表格1

    设置         组策略设置     注册表项

    需要         数字签名通信(始终)–已启用         RequireSecuritySignature = 1

    已启用*  数字签名通信(如果服务器同意)–已启用     EnableSecuritySignature = 1,RequireSecuritySignature = 0

    残障人士         数字签名通信(如果服务器同意)–禁用         EnableSecuritySignature = 0,RequireSecuritySignature = 0

    这是SMB1服务器签名设置的摘要:

     

    表2

    设置         组策略设置     注册表项

    需要***  数字签名通信(始终)–已启用         RequireSecuritySignature = 1

    已启用     数字签名通信(如果客户同意)–已启用         EnableSecuritySignature = 1,RequireSecuritySignature = 0

    残废**     数字签名通信(如果客户同意)–已禁用         EnableSecuritySignature = 0,RequireSecuritySignature = 0

    *在SMB1客户端上签名的默认设置为“已启用”。

    **在SMB1服务器上签名的默认设置为“禁用”。

    ***用于在域控制器上签名的默认设置(通过组策略定义)为“必需”。

     

    组策略设置位于“计算机配置” Windows“设置”“安全设置”“本地策略”“安全选项”下。

    客户端注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanWorkStationParameters下。

    服务器注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters下。

    所有注册表项的类型均为DWORD。

     

    SMB2签名配置和默认值

     

    SMB2通过仅设置一项即可简化此配置:是否需要签名。可以通过组策略或注册表设置在SMB2客户端和SMB2服务器上进行配置。在每一侧,签名都可以设置为“必需”或“不需要”。

     

    这是SMB2客户端和SMB2服务器签名设置的摘要:

     

    表3

    设置         组策略设置     注册表项

    必填*       数字签名通信(始终)–已启用         RequireSecuritySignature = 1

    不需要**         数字签名通信(始终)–已禁用         RequireSecuritySignature = 0

    *在域控制器上签名的默认设置(通过组策略定义)为“必需”。

    **在SMB2服务器和SMB客户端上签名的默认设置为“不需要”。

     

    组策略设置位于“计算机配置” Windows“设置”“安全设置”“本地策略”“安全选项”下。

    客户端注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanWorkStationParameters下。

    服务器注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters下。

    所有注册表项的类型均为DWORD。

     

    SMB签署有效行为

     

    SMB客户端和SMB服务器之间进行了协商,以决定是否将有效使用签名。

     

    以下是SMB2的有效行为的摘要:

     

    表4

    服务器–必需         服务器–不需要

    客户–必填     签     签

    客户–不需要         签*  未签名**

    以下是Windows当前版本中SMB1的有效行为的摘要:

     

    表5

    服务器–必需         服务器–已启用     服务器–禁用

    客户–必填     签     签     签

    客户端-已启用        签*  签     未签名**

    客户端–禁用         签     未签名     未签名

    *域控制器SMB流量的默认值。

    **所有其他SMB流量的默认值。

     

    较旧的SMB1签名行为

     

    关于SMB1签名的一个常见混淆源是,较早版本的Windows具有不同的签名行为。如http://support.microsoft.com/kb/950876所述,该行为在2008年进行了更改,以匹配Windows Server 2008和Windows Vista的行为。以下是Windows Server 2003和Windows XP(或更早版本)的早期版本的有效行为的摘要:

     

    表6

    旧服务器–必需     旧服务器-已启用   旧服务器–禁用

    老客户–必填         签     签     无法连接

    旧客户端-已启用   签*  签     未签名**

    老客户-残疾人        无法连接         未签名     未签名

    *域控制器SMB1流量的默认值。

    **所有其他SMB1流量的默认值。

     

    如果您有旧的SMB1服务器或旧的SMB1客户端,则应对其进行修补或更新,以消除在配置错误的环境中连接失败的可能性。

     

    更改SMB签名行为

     

    通常,建议您保留默认的SMB签名设置。但是,客户有时希望在特定情况下重新配置SMB签名。例如,客户可能需要:

     

    提高域控制器中的SMB性能。的确,SMB签名将需要进行其他处理以进行哈希计算,因此您可以通过禁用“域控制器”上的“必需”设置来提高域控制器SMB的性能。但是,我们强烈建议不要更改默认值,因为它还会使您的组策略受到篡改和中间人攻击。

    通过禁用域控制器上的“必需”设置,允许使用WAN“优化”设备来加快分支机构和总部之间的SMB流量。同样,您是以性能换取安全性。尽管这些设备可能是合法的,但它们本质上是充当代理的角色,并且可以中继过时的组策略设置甚至是被篡改的组策略设置(如果受到威胁)。

    提高不是域控制器的SMB客户端或SMB服务器的安全性。通过在SMB客户端或SMB服务器上启用“必需”设置,可以强制对所有SMB通信进行签名。不建议对所有SMB通信进行签名,因为这将需要其他处理(用于哈希计算),并且会降低SMB性能。

    如果您决定必须更改SMB签名设置,则建议使用“数字签名通信(始终)”组策略设置。如果无法通过组策略执行此操作,则可以使用“ RequireSecuritySignature”注册表设置。

     

    重要说明:我们不再建议使用“数字签名通信(如果客户同意)”或“数字签名通信(如果服务器同意)”组策略设置。我们也不再建议使用“ EnableSecuritySignature”注册表设置。这些仅影响SMB1行为的选项可以由“(始终)数字签名通信”组策略设置或“ RequireSecuritySignature”注册表设置有效地代替。

     

    参考文献

     

    这是一些知识库文章(支持)和TechNet文章,它们提供了有关SMB签名的其他详细信息。请仔细解释这些引用,因为其中一些引用了较旧的SMB1行为。

     

    http://support.microsoft.com/kb/887429-较旧版本的OS的服务器消息块签名概述

    http://support.microsoft.com/kb/916846-组策略或注册表中SMB签名不匹配

    http://support.microsoft.com/kb/950876-Windows Server 2003和Windows XP修复程序,以匹配Windows Server 2008或Windows Vista SP1签名。

    http://technet.microsoft.com/zh-cn/library/cc728025.aspx-组策略:Microsoft网络客户端:对通信进行数字签名(始终)

    http://technet.microsoft.com/zh-cn/library/cc785861.aspx-组策略:Microsoft网络客户端:对通信进行数字签名(如果服务器同意)

    http://technet.microsoft.com/zh-cn/library/cc786681.aspx-组策略:Microsoft网络服务器:对通信进行数字签名(始终)

    http://technet.microsoft.com/zh-cn/library/cc759474.aspx-组策略:Microsoft网络服务器:对通信进行数字签名(如果客户端同意)

    http://technet.microsoft.com/zh-cn/library/cc512612.aspx-如何用安全性射击自己,第1部分

     

     

    PS:关于SMB3的快速说明

     

    尽管SMB3中用于签名的加密有所更改(SMB3使用AES-CMAC进行签名,而不是SMB2中的HMAC SHA-256),但本博客中描述的总体SMB2行为也适用于SMB3。

     

     

     

    PPS:内德·皮尔(Ned Pyle)在2017年9月9日发布的便条

     

    安全与安全有关–无论您想要还是不想要。如果安全至关重要,则性能无关紧要,而应用程序/传输协议安全的代价就是性能。如果您还不完全了解这些选项,那么5年前SMB中的加密已取代了签名。SMB 3.1.1(Windows 10,Windows Server 2016)中的加密性能实际上比签名性能要好得多,当然也要安全得多。

     

    您应该查看:

     

    https://aka.ms/stopusingsmb1-  或这些签名都无关紧要。

    https://blogs.technet.microsoft.com/secguide/-  检查安全性基线,包括SMB。

    https://blogs.technet.microsoft.com/srd/2015/02/10/ms15-011-ms15-014-hardening-group-policy/

    https://support.microsoft.com/zh-CN/help/3000483/ms15-011-vulnerability-in-group-policy-could-allow-remote-code-execution-february-10,-2015

    展开全文
  • PC如何支持SMB2

    千次阅读 2020-04-19 15:54:00
    PC如何支持SMB2局域共享文件访问出SMB2错提示需打开SMB2 局域共享文件访问出SMB2错 下面是在Win10环境下测试。 一般通过局域网访问共享文件时(\局域网ip)如出现下面的错误提示: 提示需打开SMB2 1、 需要先打开...

    局域共享文件访问出SMB2错

    下面是在Win10环境下测试。
    一般通过局域网访问共享文件时(\局域网ip)如出现下面的错误提示:
    在这里插入图片描述

    提示需打开SMB2

    1、 需要先打开SMB1功能
    在这里插入图片描述
    使能SMB1
    ALL
    注意:确定后会提示你重启电脑
    2、管理员运行PowerShell
    按着“win+x”快捷键,选择“Windows PowerShell(管理员)”,
    在这里插入图片描述
    3、使能SMB2,在命令行输入:执行 Set-SmbServerConfiguration -EnableSMB2Protocol $true
    在这里插入图片描述
    注意:中间的横杆是英文的。重启电脑。
    4、运行输入\192.168.x.x(你的共享文件的设备IP)。

    在这里插入图片描述
    能看到共享文件夹,就表示成功。
    在这里插入图片描述

    展开全文
  • SMB2 Protocol Specification

    2012-08-26 07:32:46
    SMB2 Protocol Specification
  • smb2

    千次阅读 2016-12-26 22:11:55
    The SMB 2 Protocol uses either TCP or NetBIOS over TCP as underlying transports. The SMB 3.x dialect family also supports the use of RDMA as a transport. The Remote Procedure Call Protocol Extens
    The SMB 2 Protocol uses either TCP or NetBIOS over TCP as underlying transports. The SMB 3.x dialect family also supports the use of RDMA as a transport.
    


    The Remote Procedure Call Protocol Extensions, as specified in [MS-RPCE], define an RPC over SMB Protocol or SMB 2 Protocol sequence that can use SMB 2 Protocol named pipes as its underlying transport.


    The SMB 2 Protocol is applicable for all scenarios that involve transferring files between client and server. The SMB 2 Protocol is also applicable for inter-process communication between client and server using named pipes.


    The SMB 2 Protocol is composed of, and driven by, message exchanges between the client and the server in the following categories:
    1. Protocol negotiation (NEGOTIATE)
    2. User authentication (SESSION_SETUP, LOGOFF)
    3. Share access (TREE_CONNECT, TREE_DISCONNECT)
    4. File access (CREATE CLOSE READ WRITE LOCK IOCTL QUERY_INFO SET_INFO FLUSH CANCEL)
    5. Directory access (QUERY_DIRECTORY CHANGE_NOTIFY)
    6. Volumn access (QUERY_INFO SET_INFO)
    7. Cache coherency (OPLOCK_BREAK)
    8. Simple messaging (ECHO)


    The SMB2 Packet Header is the header of all SMB 2 Protocol requests and response.
    There are two variants of this header: ASYNC, SYNC


    在 Tree Connect Response中,Share Type指定了共享类型:DISK,PIPE,PRINT


    The SMB2 CREATE Request packet is sent by a client to request either creation of or access to a file. In case of a named pipe or printer, the server MUST create a new file.


    知名的命名管道:
    atsvc
    samr
    srvsvc
    svcctl
    weinreg
    netlogon
    lsarpc
    eventlog

    展开全文
  • 之前整理了一篇jcifs不能用于SMB2/SMB3机器的解决方式,其中提到了将jcifs包替换为smbj的方式解决,给出的下载的demo中虽然可以正常列出共享文件夹中的文件,但是具体怎样将共享文件夹中的文件下载到本地并没有详细...

    说明

    之前整理了一篇jcifs不能用于SMB2/SMB3机器的解决方式,其中提到了将jcifs包替换为smbj的方式解决,给出的下载的demo中虽然可以正常列出共享文件夹中的文件,但是具体怎样将共享文件夹中的文件下载到本地并没有详细说明,现在将下载代码贴出,因为github上的jar包没有给出API文档,现在的代码只是看源文件找到的一种可行的下载方式,其中的部分参数等有时间再一并进行整理,如果有更好的下载方式欢迎留言

    代码

    package com.smb1.utils;
    
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.EnumSet;
    import java.util.concurrent.TimeUnit;
    
    import com.hierynomus.msdtyp.AccessMask;
    import com.hierynomus.msfscc.fileinformation.FileIdBothDirectoryInformation;
    import com.hierynomus.mssmb2.SMB2CreateDisposition;
    import com.hierynomus.mssmb2.SMB2ShareAccess;
    import com.hierynomus.smbj.SMBClient;
    import com.hierynomus.smbj.SmbConfig;
    import com.hierynomus.smbj.auth.AuthenticationContext;
    import com.hierynomus.smbj.connection.Connection;
    import com.hierynomus.smbj.session.Session;
    import com.hierynomus.smbj.share.DiskShare;
    import com.hierynomus.smbj.share.File;
    
    /**
     * SMB2连接示例
     * 例: 我们当前要连接 IP为:123.123.123.123 目录为: SRC/SMB2/ 下的文件 
     * @author liuyb
     *
     */
    public class SMB2Connect {
    	private static final String SHARE_DOMAIN = "计算机域名";
    	private static final String SHARE_USER = "共享文件设置的账户";
    	private static final String SHARE_PASSWORD = "共享文件设置的密码";
    	private static final String SHARE_SRC_DIR = "SRC/";
    	private static final String SHARE_DST_DIR = "SMB2/";
    
    	public static void main(String[] args) {
    		// 设置超时时间(可选)
    		SmbConfig config = SmbConfig.builder().withTimeout(120, TimeUnit.SECONDS)
    				.withTimeout(120, TimeUnit.SECONDS) // 超时设置读,写和Transact超时(默认为60秒)
    	            .withSoTimeout(180, TimeUnit.SECONDS) // Socket超时(默认为0秒)
    	            .build();
    		
    		// 如果不设置超时时间	SMBClient client = new SMBClient();
    		SMBClient client = new SMBClient(config);
    
    		try {
    			Connection connection = client.connect("IP或域名");	// 如:123.123.123.123
    			AuthenticationContext ac = new AuthenticationContext(SHARE_USER, SHARE_PASSWORD.toCharArray(), SHARE_DOMAIN);
    			Session session = connection.authenticate(ac);
    
    			// 连接共享文件夹
    			DiskShare share = (DiskShare) session.connectShare(SHARE_SRC_DIR);
    			
    			String folder = SHARE_SRC_DIR + SHARE_DST_DIR;
    			String dstRoot = "要保存的本地文件夹路径";	// 如: D:/smd2/
    			
    			for (FileIdBothDirectoryInformation f : share.list(SHARE_DST_DIR, "*.mp4")) {
    				String filePath = folder + f.getFileName();
    				String dstPath = dstRoot + f.getFileName();
    				
    				FileOutputStream fos = new FileOutputStream(dstPath);
    				BufferedOutputStream bos = new BufferedOutputStream(fos);
    				
    				if (share.fileExists(filePath)) {
    					System.out.println("正在下载文件:" + f.getFileName());
    					
    					File smbFileRead = share.openFile(filePath, EnumSet.of(AccessMask.GENERIC_READ), null, SMB2ShareAccess.ALL, SMB2CreateDisposition.FILE_OPEN, null);
    					InputStream in = smbFileRead.getInputStream();
    					byte[] buffer = new byte[4096];
    					int len = 0;
    					while ((len = in.read(buffer, 0, buffer.length)) != -1) {
    						bos.write(buffer, 0, len);
    					}
    					
    					bos.flush();
    					bos.close();
    					
    					System.out.println("文件下载成功");
    					System.out.println("==========================");
    				} else {
    					System.out.println("文件不存在");
    				}
                }
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (client != null) {
    				client.close();
    			}
    		}
    	}
    }

     

    展开全文
  • smb2 protocol

    2010-01-24 10:23:47
    microsoft 的 smb2 protocol document english
  • 问题描述 因为文件共享不安全,所以你不能连接到文件...你的系统需要 SMB2 或更高版本。有关如何解决此问题的信息,请参见: https://go.microsoft.com/fwlink/?linkid=852747 解决方案 ...
  • 这是一个适用于iOS,macOS和tvOS的小型Swift库,它包装了并允许连接SMB2 / 3共享并执行文件操作。 安装 椰子足/迦太基 将此行添加到您的pods文件中: pod "AMSMB2" 或将其添加到Cartfile中: github "amosavian/...
  • 1.WIN+X打开超级菜单 2.输入 Get-SmbServerConfiguration | Select EnableSMB2Protocol 3.然后显示TURE的话 就OK了 问题搞定
  • 它具有 Keychain 集成,支持多个遥控器,并与任何支持 SMB/SMB2 的服务器(例如 FreeNAS、Synology、QNap、Drobo、Linux 服务器、Windows 服务器)配合使用。 受 Git 启发的概念化和命令使用(例如 remotes、push、...
  • 你的系统需要SMB2或者更高版本,才能访问共享 posted @ 2019-05-05 14:08 JinweiChang 阅读(...) 评论(...) 编辑 收藏 ...
  • PS2PS2-SMB全套资料.zip

    2014-12-28 10:15:01
    PS2-SMB全套资料
  • 主要为大家详细介绍了java利用SMB读取远程文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • nodejs -- 用SMB2读写windows共享文件

    千次阅读 2017-10-10 13:38:07
    1:指定编码格式 var SMB2=require("smb2"); var smb2Client = new SMB2({ share:'\\\\192.168.0.7\\AppDoc' //共享文件夹地址 , domain:'DOMAIN' , username:'SERVER' //用户名 , password:'437612LANGJ
  • 1、进入控制面板\程序\程序和功能 2、点击启动或关闭Windows功能 3、SMB 1.0、CIFS 文件共享支持全部勾选
  • FileProvider - 这个Swift库提供WebDav和SMB2和本地文件的实现
  • smb v2到底是快还是慢?如何禁用呢

    千次阅读 2014-07-25 16:25:18
    这个问题就自己体验吧,微软对SMB协议(也称CIFS)
  • SMB 详尽解析

    2014-06-12 09:23:32
    详尽介绍SMB协议,协议的实现,文件设备的操作,设备通信,上传,下载,删除,更名等。
  • 它紧密地遵循CIFS规范(是Microsoft Windows平台标准文件共享协议),支持Unicode,命令管道,批处理,线程化调用者的IO复用,加密认证,完整事务,域/工作组/主机/共享/文件枚举,NetBIOS 套接字和名称服务,smb://...
  • SMB 2.0和3.0协议 Java应用

    千次阅读 2020-07-23 13:47:36
      · SMB 1.0   SMB1.0协议由于在文件共享传输过程中存在的传输效率低以及传输空间小等缺陷逐渐被抛弃了。为了更好的实现网络中文件的共享,在SMB1.0基础上开发了新的网络文件传输协议,即SMB2.0。   · SMB ...
  • SMB网络文件系统协议, 全名服务器消息块(Server Message Block),曾用名CIFS(通用互联网文件系统 Common Internet File System), 公元1983年诞生于IBM[1],幼年得到英特尔和微软的照料,最终在微软的培养下成长...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,318
精华内容 27,327
关键字:

smb2