阅读:1441回复:4
求助 如何通过SID得到访问本地共享的远程机信息
SFilter的架构 在IRP_MJ_CREATE中通过Parameters.Create.SecurityContext....结构中的ClientToken 获取TOKEN_SOURCE 可以得到SourceName和LUID(或其他的TOKEN_XXXX来获得SID) 这个步骤网上有标准的代码 通过SourceName字符串可以判断出访问是否来自远程
目前头疼的问题就是不知道如何通过这个SID来获得远程机器的信息 试过两种方法: 1. GetSecurityUserInfo() 直接操作LUID 得到的是远程用户登录到本地以后的用户名/本机的机器名 2. 在ClientToken中通过TOKEN_USER获取SID 然后通过驱动与用户层的通讯机制 把SID传到应用层 最后用LookupAccountSid() 查询此SID 得到的信息依然是远程登录到本地对应的用户名(比如Guest)和本地机器的机器名 对这个SID 小弟实在没什么思路 各位大拿若能指点一下 感激不尽! |
|
沙发#
发布于:2008-10-07 18:09
分析了一下,
如果没错的话。调用LsaCallAuthenticationPackage。LsaConnectUntrusted。然后ProtocolReturnBuffer,的缓冲区里就是机器名。这是LUID的方式,不需要SID |
|
板凳#
发布于:2008-10-08 08:57
谢谢您提供的思路!!
不过Lsa系列的api没接触过 马上去研究 |
|
地板#
发布于:2008-10-11 14:10
不好意思。。说错了。。
不是LsaConnectUntrusted 我也是之前实验了下。 如果需要代码。。我还是不帖出来了。。主要是怕如果思路不好会被笑。。。 楼主要需要可以发个消息过来。 |
|
地下室#
发布于:2008-10-11 14:11
LsaRegisterLogonProcess
这东西需要SeTcbPrivilege 特权 |
|