首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在S#中将SID转换为帐户名称?

在S#中将SID转换为帐户名称,可以使用以下方法:

  1. 使用Windows API函数LookupAccountSid():
代码语言:csharp
复制
using System;
using System.Runtime.InteropServices;
using System.Security.Principal;

public static class SIDConverter
{
    [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    static extern bool LookupAccountSid(
        string lpSystemName,
        [MarshalAs(UnmanagedType.LPArray)] byte[] sid,
        System.Text.StringBuilder lpName,
        ref uint cchName,
        System.Text.StringBuilder ReferencedDomainName,
        ref uint cchReferencedDomainName,
        out SID_NAME_USE peUse);

    public static string ConvertSidToAccountName(string sidString)
    {
        SecurityIdentifier sid = new SecurityIdentifier(sidString);
        byte[] sidBytes = new byte[sid.BinaryLength];
        sid.GetBinaryForm(sidBytes, 0);

        uint cchName = 256;
        uint cchReferencedDomainName = 256;
        System.Text.StringBuilder name = new System.Text.StringBuilder((int)cchName);
        System.Text.StringBuilder domainName = new System.Text.StringBuilder((int)cchReferencedDomainName);
        SID_NAME_USE sidType;

        if (!LookupAccountSid(null, sidBytes, name, ref cchName, domainName, ref cchReferencedDomainName, out sidType))
        {
            throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
        }

        return domainName.ToString() + "\\" + name.ToString();
    }
}
  1. 使用WMI查询:
代码语言:csharp
复制
using System;
using System.Management;

public static class SIDConverter
{
    public static string ConvertSidToAccountName(string sidString)
    {
        string accountName = "";

        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                "SELECT * FROM Win32_UserAccount WHERE SID = '" + sidString + "'");

            foreach (ManagementObject account in searcher.Get())
            {
                accountName = account["Name"].ToString();
                break;
            }
        }
        catch (Exception ex)
        {
            throw new Exception("Error converting SID to account name: " + ex.Message);
        }

        return accountName;
    }
}

这两种方法都可以将SID转换为帐户名称。其中,第一种方法使用Windows API函数LookupAccountSid(),而第二种方法使用WMI查询。两种方法都可以在C#中使用,但是第一种方法更加通用,可以在不同的编程语言中使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kerberos 黄金门票

] * 域 KRBTGT 帐户 NTLM 密码哈希 * 用于模拟的用户 ID。...由于 Mimikatz 通过相对标识符 (RID) 将组成员身份添加到票证中,因此在 Kerberos 票证中将 519(企业管理员)RID 标识为在其中创建它的域的本地(基于 KRBTGT 帐户域)。...当用户使用新帐户登录到 DomainB 时,DomainA SID 与确定访问权限的 DomainB 用户组一起被评估。这意味着可以将 SID 添加到 SID 历史记录以扩展访问权限。...为了支持我对如何在 Kerberos 票证中使用 SID 历史记录跨信任(森林内和外部)扩展访问权限的研究,我在 6 月下旬联系了 Benjamin Delpy 并请求添加 SID 历史记录。...这意味着如果您需要帐户隔离,则需要 AD 林,而不是 AD 林中的域。

1.3K20
  • 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器

    @@作为前缀,@@version;   ②全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值;   (2)有哪些全局变量?...,C#,Score},其中S#为学号,C#为课程号,而Score则为成绩。...S#为Student表的外键,C#为课程表的外键。...这时,如果我们要从A账户1000元到B账户的话,会在第一步从A账户扣除1000元时违反约束条件,从而出现错误,阻止了此次转账操作;但是,这并没有影响到第二步操作,于是B账户得到了天上掉下来的1000元...,cId,grade}和学生表Student{sId,sName,sAge},其中Score中的sId是Student中的主键,即Scroe中的sId为外键。

    1.3K20

    kerberos认证下的一些攻击手法

    /service –运行在目标服务器上的kerberos服务,该服务主体名称类型cifs,http,mssql等 /rc4 –服务的NTLM散列(计算机帐户或用户帐户) > PS:Server Session...> /user: /ptt" exit Mimikatz命令示例: /domain –完整的域名称:lab.adsecurity.org /sid –域的SID:S-1-5-21...[6]诸如Mimikatz之类的通用凭证储者通过打开进程,找到LSA秘密密钥并解密内存中存储凭证详细信息(包括Kerberos票证)的部分,来访问LSA子系统服务(LSASS)进程。...5.2 实战手法 1.SPN扫描具有服务帐户的SQL Server 2.确定目标之后,我们使用PowerShell请求此服务主体名称(SPN)的服务票证。...5.3 防御手法 确保所有服务帐户(具有服务主体名称的用户帐户)使用的长而复杂的密码必须大于25个字符,最好为30个或更多。这使得破解这些密码更加困难。

    3.1K61

    ATT&CK视角下的红蓝对抗之Windows访问控制模型

    表1-1 常见的SID以及他们的所属名称和具体作用SID名称作用S-1-5-21-domain-512Domain Admins一个全局组,其成员被授权管理该域。...SID与用户所在组的组SID进行比较,同时当我们要释放由AllocateAndInitializeSid分配的SID时,只需要调用FreeSid函数来进行释放即可,而不能直接使用其SID名称(考虑到不同版本的操作系统上有不同的名称...表1-2 可供调用的API函数列表API函数作用描述AllocateAndInitializeSid使用指定数量的子权限分配和初始化SIDConvertSidToStringSid将SID换为适合于显示...ConvertStringSidToSid将字符串格式的SID换为有效的功能性SIDCopySID将源SID复制到缓冲区EqualPrefixSid测试两个SID前缀值是否相等。...Enterprise管理员负责林级别的操作,添加新域或删除新域。DOMAIN_GROUP_RID_POLICY_ADMINS520策略管理员的组。

    23310

    没有 SPN 的 Kerberoasting

    这是此 GetUserSPNs.py 启动的流量储,因此现在我们可以详细检查所有描述的阶段: Kerberoasting 攻击的流量储 客户如何获得 TGT 每个客户端都必须向 KDC 进行身份验证并获得一个票证授予票证...PAC 包括客户端的名称、安全标识符 (SID) 和组。 为了让客户端使用 TGT,它需要构造一个 TGT 内存对象,该对象将包含 TGT 本身、其会话密钥和所有元数据。...解析为同一个帐户的所有主体名称都是相同的 如果您在 Kerberos 数据包中有一个 SPN 值,您可以将其替换为该 SPN 所属帐户的 SAM 帐户名称 (SAN) 值,并且不会有任何中断: 带有...但是,您可以看到 Impacket 在此类请求中使用了 SAN: Impacket 的 S4U2Self 请求的流量储 这些请求不符合规范,但会成功,因为 Windows KDC 对给定的主体名称格式不敏感...以下是如何在此结构中编写相同 Active Directory 对象的三个示例: CN=SQL ADMIN,OU=LAB Users,DC=CONTOSO,DC=COM CN="SQL ADMIN";OU

    1.3K40

    本地帐户和活动目录帐户

    在学习域的过程中,我们经常会听到各种各样的帐户:本地帐户、域帐户、服务帐户和机器帐户。那么这些帐户与我们之前在工作组中所知的帐户有什么区别和联系呢?...本地的Guest帐户将提升为域的Guest帐户、本地administrator帐户将提升为域的administrator帐户。...如图所示,任何情况下无法删除此帐户,无法更改该帐户名称,也无法在活动目录中启用krbtgt帐户。...有两种: UPN(User Principal Name): zhangsan@xie.com 。UPN的格式与电子邮件账号相同,在整个林内,这个名称必须是唯一的。...查询服务帐户 查询域内的服务帐户可以转换为查询域内注册的SPN。有很多种手段进行查询,且使用普通域用户权限即可查询。

    1.5K30

    解决服务器SID引起虚拟机不能加入AD域用户,无法远程登录的问题

    那么,《什么是SID》呢? 搜索了下,找到如下解释: SID 只是安全标识符的缩写而已。...SID 的全称是“安全标识符(Security Identify)”,是为域或本地计算机中创建的每个帐户分配的唯一 ID 字符串(例如,S-1-5-21-1454471165-1004336348-1606980848...实际上,计算机使用 SID 来跟踪每个帐户: 如果重命名管理员帐户,计算机仍然知道哪个帐户是管理员帐户。 这是因为 SID 不同于名称,它永远不会更改。...这就是前面为何在远程服务器添加域用户不成功的原因。 配置SID SID重复的原因是怎么回事呢? 这往往是系统通过克隆安装,或者复制的虚拟机的原因,这些方式尽管安装部署系统快速,但却造成了现在的问题。...It replaces current computer SID with new random SID.

    4.4K50

    Windows Server 2008 用户管理

    一、用户账户概述: ”用户”是计算机的使用者在计算机系统中的身份映射,不同的用户身份拥有不同的权限,每个用户包含一个名称和一个密码; 在Windows中,每个用户帐户有一个唯一的安全标识符(Security...位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList项,其中的子项名称就是用户的SID。...),就需要创建多个用户帐户。.../FQDN:用完全合格的 (Fully Qualified) 格式显示用户名可分辨名称(FQDN) 格式。 /USER:显示当前用户的信息以及安全标识符 (SID)。.../GROUPS:显示当前用户的组成员信息、帐户类型和安全、标识符 (SID) 和属性。 /CLAIMS:显示当前用户的声明,包括声明名称、标志、类型和值。

    3.6K120

    数据库关系代数表达式学习

    本文自: http://www.blogjava.net/decode360/archive/2009/04/15/292362.html 感谢原作者 关系代数是关系数据库系统查询语言的理论基础...、联接(等值联接)、自然联接(R S)、除法(÷) 注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性...,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) π CNAME,TEACHER(σSEX=’女’(S SC C)) 进行优化后转换为...: πCNAME,TEACHER(C πC#(πS#,C#(SC) πS#(σSEX=’女’(S)))) 优化前和优化后的语法树如下所示: 语法树知识链接 http://www.bianceng.cn...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.4K20

    通过SSH隧道传递票证

    欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。...No.4 名称解析 为了确保Kerberos进程功能,我们需要修改/etc/hosts攻击者计算机的文件,以包含目标域控制器的FQDN和目标主机的NetBIOS名称的条目。...通常为计算机账户)Hash加密 认证流程不一样 Golden Ticket 的利用过程需要访问域控,而Silver Ticket不需要 No.9 伪造票据 要生成银票,我们需要以下信息: 目标主机帐户...使用以下语法将kirbi文件转换为ccache文件: misc::convert ccache /path/to/ticket.kirbi 您可以使用以下语法转换多个kirbi票证: misc::convert...首先,我们需要在/etc/hosts文件中提供目标主机的FQDN ,而不是NetBIOS名称

    1.1K30

    acltoolkit:一款针对ACL的多功能安全工具

    get-objectacl [-h] [-object object] [-all] options: -h, --help 显示帮助信息和退出 -object object 储对象...ACL,参数可以是一个sAMAccountName、一个名称、一个DN或一个objectSid -all 枚举对象ACE get-objectacl将使用一个sAMAccountName...、一个名称、一个DN或一个objectSid作为-object的输入,并将列出它的Sid、name、DN、Class、adminCount、配置的LogonScript、PrimaryGroup、Owner...如果没有提供参数,则将列出有关用于身份验证的帐户的信息: $ acltoolkit waza.local/jsmith:Password#123@192.168.56.112 get-objectacl...设置目标对象SID -owner-sid owner_sid 新拥有者的SID set-objectowner需要提供一个目标SID和拥有者SID,并修改目标对象的拥有者。

    35010

    SAP 绝密小技巧大全

    :财务会计->应收帐目和应付帐目->客户帐户->主数据->创建客户主记录的准备->创建客户帐户编号范围 c,对客户帐户组分配编号范围: 财务会计->应收帐目和应付帐目->客户帐户->主数据->创建客户主记录的准备...逻辑系统的命名规范为 CLNT,TSTCLNT500 6 将创建的逻辑系统记入一个REQUEST,然后保存,逻辑系统定义完成。...4,凭证的类别 传统的会计核算中,将凭证的类别分为收、付、三类或直接就是一类记帐凭证。...> 是数据库名 对于4.6C 为 r3 对于4.70 为 数据库名(小写) db2 => connect to db2 => _select * from sap system --> status, 找出程序名称。 2。SE80;输入第一步中找到的程序名称。用菜单:GOTO --> Attributes, 找出Package 名称

    1.9K12

    红队战术-从域管理员到企业管理员

    在跨信任进行身份验证之前,Windows必须首先确定用户,计算机或服务所请求的域是否与请求帐户的登录域具有信任关系,为了确定信任关系,Windows安全系统计算接收访问资源请求的服务器的域控制器与请求资源请求的帐户所在域中的域控制器之间的信任路径...Kerberos.dll)网络登录(Netlogon.dll) LSA(Lsasrv.dll) 本地安全机构(LSA)是受保护的子系统,用于维护有关系统上本地安全所有方面的信息(统称为本地安全策略),并提供各种服务来在名称和标识符之间进行转换...作为帐户维护过程的一部分,信任域控制器每三十天更改一次存储在TDO中的密码。因为所有双向信任实际上都是两个方向相反的单向信任,所以对于双向信任,此过程发生两次。信任具有信任和信任的一面。...身份验证请求遵循这些信任路径,因此林中任何域的帐户都可以由林中的任何其他域进行身份验证。通过单个登录过程,具有适当权限的帐户可以访问林中任何域中的资源。...domain:当前域名 /sid:当前域sid /sids:目标域sid /krbtgt:hash" 关键在于:我们需要替换sids的最后三位值从502(krbtgt)替换为519(企业管理员),此过程的这一部分称为

    1.1K20
    领券