cy214
驱动牛犊
驱动牛犊
  • 注册日期2008-02-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1441回复:4

求助 如何通过SID得到访问本地共享的远程机信息

楼主#
更多 发布于:2008-10-07 16:32
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 小弟实在没什么思路

各位大拿若能指点一下 感激不尽!
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2008-10-07 18:09
分析了一下,
如果没错的话。调用LsaCallAuthenticationPackage。LsaConnectUntrusted。然后ProtocolReturnBuffer,的缓冲区里就是机器名。这是LUID的方式,不需要SID
cy214
驱动牛犊
驱动牛犊
  • 注册日期2008-02-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-10-08 08:57
谢谢您提供的思路!!
不过Lsa系列的api没接触过 马上去研究
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2008-10-11 14:10
不好意思。。说错了。。
不是LsaConnectUntrusted

我也是之前实验了下。
如果需要代码。。我还是不帖出来了。。主要是怕如果思路不好会被笑。。。

楼主要需要可以发个消息过来。
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2008-10-11 14:11
LsaRegisterLogonProcess

这东西需要SeTcbPrivilege 特权
游客

返回顶部