⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psec.py

📁 samba服务器!
💻 PY
字号:
#!/usr/bin/env python## Get or set the security descriptor on a printer#import sys, re, stringfrom samba import spoolssif len(sys.argv) != 3:    print "Usage: psec.py getsec|setsec printername"    sys.exit(1)op = sys.argv[1]printername = sys.argv[2]# Display security descriptorif op == "getsec":    try:        hnd = spoolss.openprinter(printername)    except:        print "error opening printer %s" % printername        sys.exit(1)    secdesc = hnd.getprinter(level = 3)["security_descriptor"]    print secdesc["owner_sid"]    print secdesc["group_sid"]    for acl in secdesc["dacl"]["ace_list"]:        print "%d %d 0x%08x %s" % (acl["type"], acl["flags"],                                   acl["mask"], acl["trustee"])    spoolss.closeprinter(hnd)    sys.exit(0)# Set security descriptorif op == "setsec":    # Open printer    try:        hnd = spoolss.openprinter(printername,                                  creds = {"domain": "NPSD-TEST2",                                           "username": "Administrator",                                           "password": "penguin"})    except:        print "error opening printer %s" % printername        sys.exit(1)    # Read lines from standard input and build security descriptor    lines = sys.stdin.readlines()    secdesc = {}    secdesc["owner_sid"] = lines[0]    secdesc["group_sid"] = lines[1]    secdesc["revision"] = 1    secdesc["dacl"] = {}    secdesc["dacl"]["revision"] = 2    secdesc["dacl"]["ace_list"] = []    for acl in lines[2:]:        match = re.match("(\d+) (\d+) (0[xX][\dA-Fa-f]+) (\S+)", acl)        secdesc["dacl"]["ace_list"].append(            {"type": int(match.group(1)), "flags": int(match.group(2)),             "mask": string.atoi(match.group(3), 0), "trustee": match.group(4)})    # Build info3 structure    info3 = {}    info3["flags"] = 0x8004             # self-relative, dacl present    info3["level"] = 3    info3["security_descriptor"] = secdesc    hnd.setprinter(info3)    spoolss.closeprinter(hnd)    sys.exit(0)print "invalid operation %s" % opsys.exit(1)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -