|
| 1 | +import windows |
| 2 | +import windows.security |
| 3 | +import windows.generated_def as gdef |
| 4 | + |
| 5 | +tok = windows.current_process.token |
| 6 | +print("Our process token is {0}".format(tok)) |
| 7 | +print("Retrieving some infos") |
| 8 | +print("Username: <{0}>".format(tok.username)) |
| 9 | +print("User: {0!r}".format(tok.user)) |
| 10 | +print(" - lookup : {0}".format(windows.security.lookup_sid(tok.user))) |
| 11 | +print("Primary group: {0!r}".format(tok.primary_group)) |
| 12 | +print(" - lookup : {0}".format(windows.security.lookup_sid(tok.primary_group))) |
| 13 | + |
| 14 | +print("") |
| 15 | +groups = tok.groups |
| 16 | +print("Token Groups is {0}".format(groups)) |
| 17 | +print("First group SID is {0!r}".format(groups.sids[0])) |
| 18 | +print("Some sid and attributes:") |
| 19 | +for i, group in zip(range(3), groups.sids_and_attributes): |
| 20 | + print(" - {0}: {1}".format(group.Sid, group.Attributes)) |
| 21 | + |
| 22 | +# Let's play with duplicate ! |
| 23 | +print("") |
| 24 | +imp_tok = tok.duplicate(type=gdef.TokenImpersonation, impersonation_level=gdef.SecurityImpersonation) |
| 25 | +print("Duplicate token is {0}".format(imp_tok)) |
| 26 | +print("Enabling <SeShutDownPrivilege>") |
| 27 | +imp_tok.enable_privilege("SeShutDownPrivilege") |
| 28 | + |
| 29 | +cur_thread = windows.current_thread |
| 30 | +print("Current thread token is <{0}>".format(cur_thread.token)) |
| 31 | +print("Setting impersonation token !") |
| 32 | +cur_thread.token = imp_tok |
| 33 | +print("Current thread token is {0}".format(cur_thread.token)) |
0 commit comments