一、SID简介   
    SID也就是安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 2000 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户 具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。
    一个完整的SID包括:
    • 用户和组的安全描述 
    • 48-bit的ID authority 
    • 修订版本 
    • 可变的验证值Variable sub-authority values 
例:S-1-5-21-343818398-299502267-839522115-500
参考资料:http://www.5dmail.net/html/2004-8-1/200481181008.htm

二、VBS脚本获取SID
    方法一:

Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName'获取当前的机器名
strUserName=objNetwork.UserName'获取当前的用户名
Set objLocalSam =GetObject("WinNT://" & strComputer & "/" & strUserName)'这里做了修改,scottlocke中默认strUserName为"Administrator"是不保险的
Wscript.echo SIDArray(objLocalSam.objectSID)

Function SIDArray(bar)
  ' Converts Binary Array into Human readable eg: S-1-5-21-XXXXX-XXXXX-XXXXX-XXX
  dim seperator,sid,length
  seperator = ""
  sid = ""
  for length = 1 to lenb(bar)
    sid = sid & seperator & right("0" & hex(ascb(midb(bar,length,1))),2)
    seperator = ","
  Next
  SIDArray = sid
  SID = Split(SIDArray,",")

' Convert into standard viewable format - little endian format for 4 byte groups
SID1 = (HexToDec(Mid(SID(15), 1, 1))*268435456) + (HexToDec(Mid(SID(15), 2, 2))*16777216) + (HexToDec(Mid(SID(14), 1, 1))*1048576) + (HexToDec(Mid(SID(14), 2, 2))*65536) + (HexToDec(Mid(SID(13), 1, 1))*4096) + (HexToDec(Mid(SID(13), 2, 2))*256) + (HexToDec(Mid(SID(12), 1, 1))*16) + HexToDec(Mid(SID(12), 2, 2))
SID2 = (HexToDec(Mid(SID(19), 1, 1))*268435456) + (HexToDec(Mid(SID(19), 2, 2))*16777216) + (HexToDec(Mid(SID(18), 1, 1))*1048576) + (HexToDec(Mid(SID(18), 2, 2))*65536) + (HexToDec(Mid(SID(17), 1, 1))*4096) + (HexToDec(Mid(SID(17), 2, 2))*256) + (HexToDec(Mid(SID(16), 1, 1))*16) + HexToDec(Mid(SID(16), 2, 2))
SID3 = (HexToDec(Mid(SID(23), 1, 1))*268435456) + (HexToDec(Mid(SID(23), 2, 2))*16777216) + (HexToDec(Mid(SID(22), 1, 1))*1048576) + (HexToDec(Mid(SID(22), 2, 2))*65536) + (HexToDec(Mid(SID(21), 1, 1))*4096) + (HexToDec(Mid(SID(21), 2, 2))*256) + (HexToDec(Mid(SID(20), 1, 1))*16) + HexToDec(Mid(SID(20), 2, 2))
RID = (HexToDec(Mid(SID(27), 1, 1))*268435456) + (HexToDec(Mid(SID(27), 2, 2))*16777216) + (HexToDec(Mid(SID(26), 1, 1))*1048576) + (HexToDec(Mid(SID(26), 2, 2))*65536) + (HexToDec(Mid(SID(25), 1, 1))*4096) + (HexToDec(Mid(SID(25), 2, 2))*256) + (HexToDec(Mid(SID(24), 1, 1))*16) + HexToDec(Mid(SID(24), 2, 2))

' Cheating here by just prepending the S-1-5-21-
SIDArray = "S-1-5-21-" & SID1 & "-" & SID2 & "-" & SID3 & "-" & RID
End Function

Function HexToDec(ByVal sHex)
HexToDec = "" & CLng("&H" & sHex)
End Function

参考资料:http://www.scottlocke.net/vbscript-to-retrieve-sid.html

方法二:

Function ShowSID(strUser)
    On Error Resume Next
    Dim oWMI, oAs, oA, sSid
    Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
    If strUser <> "" Then
        Set oAs = oWMI.ExecQuery("Select SID From Win32_Account" & _
                  " WHERE SIDType=1 AND Name='" & strUser & "'")
        For Each oA In oAs
            sSid= Mid(oA.SID, InStrRev(oA.SID, "-") + 1)
            WScript.Echo "Short SID: " & sSid & " (" & HEX(sSid) & "H)"
        Next
    Else
        Set oAs = oWMI.ExecQuery("Select Name, SID From Win32_Account WHERE SIDType=1")
        For Each oA In oAs
            WScript.Echo "User: " & oA.Name & _
                    vbCrLf & vbTab & "SID: " & oA.SID
        Next
    End If

Set oA = Nothing
    Set oAs = Nothing
    Set oWMI = Nothing
    If Err.Number <> 0 Then
        WScript.Echo "Error ocurred: " & Err.Description
        Err.Clear
    End If
End Function

转载于:https://www.cnblogs.com/yechanglv/p/6923081.html

VBS脚本获取安全标识符SID(Security Identifiers)的方法相关推荐

  1. Windows vbs脚本获取系统信息

    Windows vbs脚本获取系统信息 运行的进程 硬盘序列号 获取制造商 获取型号 获取生产日期 获取主板信息 获取SN号 获取系统类型及安装日期 获取CPU信息 获取内存信息 获取显卡信息 获取声 ...

  2. Bash脚本获取自身完整路径的可靠方法

    本文翻译自:Reliable way for a Bash script to get the full path to itself [duplicate] This question alread ...

  3. html文档php 取mac地址_cpu序列号_硬盘序列号,用vbs脚本获取网卡MAC,CPUID,硬盘序列号的实现代码...

    这里先给大家分享一个分配静态ip地址的代码 ' Assign a Static IP Address strComputer = "." Set objWMIService = G ...

  4. 完全剖析安全标识符--SID (From pconline)

    SID也就是安全标识符(Security Identifiers),是标识用户.组和计算机帐户的唯一的号码.在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID.Windows 2000 ...

  5. 转:获取脚本运行路径的VBS脚本

    有一篇蛮不错的文章,收录如此,供参考! -------------------------------------------------------------------------------- ...

  6. vbs获取群聊当前内容_通过VBS脚本批量检测服务器状态 - 易本地工作室-Ebend SoftwareNetwork Studio - 群发,采集,管理类软件定制开发服务【易本地工作室】...

    脚本名称:通过VBS脚本批量检测服务器状态 脚本语言:VBS 原创作者:易本地工作室 艾云超 官方网站:易本地工作室 授权状态:免费 功能说明:通过VBS脚本批量检测服务器状态,是否可以访问,可以自定 ...

  7. vbs脚本拨测网址获取http状态码,判断网址是否正常

    1.新建文本文档,并修改后缀为vbs文件. 2.添加以下内容 On Error Resume Next url="http://192.168.142.161:8080" #url ...

  8. 浅浅认识之VBS脚本访问接口与COMODO拦截COM接口

    这2天测试了一个使用了WMI提供ASEC后门,里面使用了JS脚本往外请求http获取执行命令.但我的分析系统却没抓到这个行为,可在真机中确实抓到有HTTP请求.相当奇怪. 最后无奈windbg出手,内 ...

  9. VBS脚本常用经典代码收集

    在网上查找资料的时候发现好多经典的vbs代码,收集起来也为了以后学习. VBS脚本用途很多: 1. 计算 2. 处理文件和文件夹 3. 管理Windows 4. 处理Word, Excel, Powe ...

最新文章

  1. 设计模式之外观模式学习笔记
  2. 广告智能定向技术lookalike
  3. 前端加密的常见场景和方法
  4. “朝阳群众”APP上线!解读怎么做一款深入群众的应用
  5. 第十一篇、HTML5隐藏播放器播放背景音乐
  6. 量子计算机时空穿越,时光穿梭是否可行?未来人类真能穿越时空吗?科学家:不是不可能...
  7. 这三款提升工作效率的小工具,你都用过吗?
  8. 前序、中序、后序遍历的基础详解
  9. 下载百度翻译英文读音
  10. 2022-2028年中国电源滤波器行业市场发展规模及未来趋势预测报告
  11. 江苏电信技术研发与it岗
  12. 梅西:世界杯是我最重要的奖杯;很高兴斯卡洛尼能够续约
  13. Corsiniの时光漏
  14. cublas_学习笔记2
  15. baby_web (攻防世界)
  16. python微信抢红包神器_快过年啦,还怕手速慢,我用Python自动抢红包!
  17. Cyanine5.5 phosphoramidite,5‘-terminal可用于在寡核苷酸合成器中直接标记
  18. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::before伪元素
  19. Internet History, Technology, and Security(week1)——History: Dawn of Electronic Computing
  20. 使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

热门文章

  1. 003、关于Integer.valueOf(sss)与Integer.parseInt(sss)性能
  2. silverlight for olap version milestone 07 updated!
  3. Prototype 框架分析(一)
  4. 关于甲沟炎的一些办法
  5. 一句话讲清楚IOC容器以及什么时候使用@Autowired
  6. 银屑病缺乏的营养汇总(持续更新中)
  7. 数学狂想曲(十)——复变函数, 平稳离散时间随机过程, 功率谱
  8. 深度学习(十一)——Winograd(1)
  9. 圆形渐变shader_Flutter 中渐变的高级用法
  10. 微服务接入oauth2_微服务权限终极解决方案,Spring Cloud Gateway+Oauth2实现统一认证和鉴权!...