在win7 命令行下输入whoami/user获得当前用户SID信息
typedef struct _SID {
BYTE Revision;
BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
DWORD SubAuthority[ANYSIZE_ARRAY];
} SID, *PISID;
通过代码获得SID
HANDLE hProcess = GetCurrentProcess();
HANDLE hToken = NULL;
if (OpenProcessToken(hProcess, TOKEN_READ, &hToken))
{
DWORD dwNeedLen = 0;
if(GetTokenInformation(hToken, TokenUser, NULL, 0, &dwNeedLen) || GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
PBYTE buffer = new BYTE[dwNeedLen];
if (buffer != NULL)
{
TOKEN_USER* pTokenUser = (TOKEN_USER*)buffer;
GetTokenInformation(hToken, TokenUser, pTokenUser, dwNeedLen, &dwNeedLen);
PISID sid = (PISID)pTokenUser->User.Sid; //得到SID
delete[] buffer;
}
}
CloseHandle(hToken);
}
CloseHandle(hProcess);
其中sid指向的内存是这样的
这段内存就对应着上面的结构体
01 05 00 00 00 00 00 05 15 00 00 00 6f e0 5e a8 30 b9 bd 86 0b c3 b7 50 f4 01 00 00
其中Revision == 01
SubAuthorityCount ==05 //表示以下有5个小端字节序数。
IdentifierAuthority == 00 00 00 00 00 05 —-> 5 //表示标识符颁发机构为NT Authority。
(
可能的标识符颁发机构有:
0 – Null Authority
1 – World Authority
2 – Local Authority
3 – Creator Authority
4 – Non-unique Authority
5 – NT Authority
9 – Resource Manager Authority
)
SubAuthority包含5个小端字节序数。
分别为:
15 00 00 00 -->21 //21表明SID由一个域控制器或者一台单机颁发。随后的一长串数字(1683771068-12213551888-624655398)就是颁发SID的那个域或机器的SA。
6f e0 5e a8 -->2824790127
30 b9 bd 86 -->2260580656
0b c3 b7 50 -->1354220299
f4 01 00 00 -->500
-----------------------------------------------------------------
另附
特权名 描述
=============================== ==========================
SeIncreaseQuotaPrivilege 为进程调整内存配额
SeSecurityPrivilege 管理审核和安全日志
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权
SeLoadDriverPrivilege 加载和卸载设备驱动程序
SeSystemProfilePrivilege 配置文件系统性能
SeSystemtimePrivilege 更改系统时间
SeProfileSingleProcessPrivilege 配置文件单个进程
SeIncreaseBasePriorityPrivilege 提高计划优先级
SeCreatePagefilePrivilege 创建一个页面文件
SeBackupPrivilege 备份文件和目录
SeRestorePrivilege 还原文件和目录
SeShutdownPrivilege 关闭系统
SeDebugPrivilege 调试程序
SeSystemEnvironmentPrivilege 修改固件环境值
SeChangeNotifyPrivilege 绕过遍历检查
SeRemoteShutdownPrivilege 从远程系统强制关机
SeUndockPrivilege 从扩展坞上取下计算机
SeManageVolumePrivilege 执行卷维护任务
SeImpersonatePrivilege 身份验证后模拟客户端
SeCreateGlobalPrivilege 创建全局对象
SeIncreaseWorkingSetPrivilege 增加进程工作集
SeTimeZonePrivilege 更改时区
SeCreateSymbolicLinkPrivilege 创建符号链接