windows共享⽂件夹使⽤中的问题(SMB协议)共享文件夹设置密码
关于SMB
windows的⽂件共享,使⽤的是SMB协议。SMB协议有v1,v2,v3三个版本,其中v1版本是CIFS协议的扩充。
这⼏个协议的报⽂和内容在⽹上真的是挺难到说明的。。
问题
最近在接⼊⼀个仪器时碰到了问题,仪器是嵌⼊式系统(连⽀持⼈员都不不到。。),在⽹上好不容易到⼀个设备说明,可以通过windows共享⽂件夹将⾥⾯的内容导出来。
我在win7系统上开放了共享⽂件夹,经过⼀系列guest⽤户配置、防⽕墙配置以后,设备可以成功传输上⽂件了。
初步分析
不过想在公司的虚拟机上直接获取⽂件夹,⽽虚拟机使⽤的是windows server 2012,这时候问题来了,仪器访问不了2012系统的共享⽂件夹,⼀直报错。
我做了⼀些对⽐
win7系统,设备始终能存储⽂件;
2012系统,设备始终不能访问;
2012系统,我使⽤win7电脑是可以访问的
⽤xp系统,也能访问2012系统的共享⽂件夹(这个操作是后来做的)
抓包分析
陷⼊了死胡同,从测试来看,推测可能是win7和win2012系统共享⽂件夹某些设置有区别。⽆奈使⽤wireshark抓取报⽂尝试分析猜测。
有如下发现
设备访问使⽤的是SMBv1版本协议
设备在写⼊win7系统时,先后使⽤open和write指令,
open指令打开⽂件,按道理系统应该返回⼀个可写的权限,但是系统返回的是全0(即只读)
write指令写⼊时,可以成功(按我的理解应该是不能成功的)
⽽设备在写⼊win2012系统,使⽤同样的指令
open同样返回只读权限
write指令则返回失败
完全⼀样的指令流程,win2012上写⼊失败,⽽win7成功。
⽽且从报⽂信息看,win2012写⼊失败是有⼀定道理的(权限不⾜),但是为什么会权限不⾜,我调整了很久的⽤户权限策略,依旧没有改变。
关于这个情况,个⼈推测可能是某个时期SMB协议的漏洞,win7存在,⽽在win2012中修复了。
对⽐分析
同样抓包了其他windows系统访问win2012系统时的报⽂。
发现访问时,会使⽤SMB2.1版本协议,与设备不同。
尝试禁⽤SMB2.1,限制系统只能使⽤SMBv1,发现在SMB连接建⽴过程中,有特殊的NTLMSSP认证过程,⽽设备没有这个步骤。
怀疑权限的授予,可能与这个过程有关。
⽆论如何,我是不可能改设备的代码的。。只能从⾃⼰⾝上想办法。
规避⽅案
设备改不了,只能从服务器这边想办法,搜了很久也没有看到有⼈碰到类似问题。
windows的SMB我也debug不了,最后决定⾃⼰在服务器上开⼀个SMB服务,同时把windows⾃带的SMB服务关掉(Server这个服务,否则端⼝会冲突)。
SMB服务使⽤的是,我把SMBv2/v3,以及windows authentication选项全部关闭。
测试以后终于能⽤了
⼼塞(* ̄︿ ̄)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论