Esempio n. 1
0
def testSHNAMEMAPPINGS(file_cnt):
    ## attemps to move a set of files to names that already exist, and generated filenames should be returned
    ##   as a sequence of 2-tuples created from SHNAMEMAPPINGS handle
    temp_dir = os.environ["temp"]
    orig_fnames = [
        win32api.GetTempFileName(temp_dir, "sfo")[0] for x in range(file_cnt)
    ]
    new_fnames = [
        win32api.GetTempFileName(temp_dir, "sfo")[0] for x in range(file_cnt)
    ]
    pFrom = "\0".join(orig_fnames)
    pTo = "\0".join(new_fnames)
    rc, banyaborted, NameMappings = shell.SHFileOperation((
        0,
        shellcon.FO_MOVE,
        pFrom,
        pTo,
        shellcon.FOF_MULTIDESTFILES
        | shellcon.FOF_NOCONFIRMATION
        | shellcon.FOF_RENAMEONCOLLISION
        | shellcon.FOF_WANTMAPPINGHANDLE,
    ))

    for old_fname, new_fname in NameMappings:
        print("Old:", old_fname, "New:", new_fname)
    assert len(NameMappings) == file_cnt
Esempio n. 2
0
def testSHFileOperation(file_cnt):
    temp_dir = os.environ["temp"]
    orig_fnames = [
        win32api.GetTempFileName(temp_dir, "sfo")[0] for x in range(file_cnt)
    ]
    new_fnames = [
        os.path.join(temp_dir, "copy of " + os.path.split(orig_fnames[x])[1])
        for x in range(file_cnt)
    ]

    pFrom = "\0".join(orig_fnames)
    pTo = "\0".join(new_fnames)

    shell.SHFileOperation((
        0,
        shellcon.FO_MOVE,
        pFrom,
        pTo,
        shellcon.FOF_MULTIDESTFILES | shellcon.FOF_NOCONFIRMATION,
    ))
    for fname in orig_fnames:
        assert not os.path.isfile(fname)

    for fname in new_fnames:
        assert os.path.isfile(fname)
        shell.SHFileOperation((
            0,
            shellcon.FO_DELETE,
            fname,
            None,
            shellcon.FOF_NOCONFIRMATION | shellcon.FOF_NOERRORUI,
        ))
def demo():
    """
    Definition of buffer used with FSCTL_TXFS_CREATE_MINIVERSION:
    typedef struct _TXFS_CREATE_MINIVERSION_INFO{
        USHORT StructureVersion;
        USHORT StructureLength;
        ULONG BaseVersion;
        USHORT MiniVersion;}
    """
    buf_fmt='HHLH0L'   ## buffer size must include struct padding
    buf_size=struct.calcsize(buf_fmt)

    tempdir=win32api.GetTempPath()
    tempfile=win32api.GetTempFileName(tempdir,'cft')[0]
    print("Demonstrating transactions on tempfile", tempfile)
    f=open(tempfile,'w')
    f.write('This is original file.\n')
    f.close()

    trans=win32transaction.CreateTransaction(Description='Test creating miniversions of a file')
    hfile=win32file.CreateFileW(tempfile, win32con.GENERIC_READ|win32con.GENERIC_WRITE,
        win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE,
        None, win32con.OPEN_EXISTING, 0 , None, Transaction=trans)

    win32file.WriteFile(hfile, str2bytes('This is first miniversion.\n'))
    buf=win32file.DeviceIoControl(hfile, winioctlcon.FSCTL_TXFS_CREATE_MINIVERSION,None,buf_size,None)
    struct_ver, struct_len, base_ver, ver_1=struct.unpack(buf_fmt, buf)

    win32file.SetFilePointer(hfile, 0, win32con.FILE_BEGIN)
    win32file.WriteFile(hfile, str2bytes('This is second miniversion!\n'))
    buf=win32file.DeviceIoControl(hfile, winioctlcon.FSCTL_TXFS_CREATE_MINIVERSION,None,buf_size,None)
    struct_ver, struct_len, base_ver, ver_2=struct.unpack(buf_fmt, buf)
    hfile.Close()

    ## miniversions can't be opened with write access
    hfile_0=win32file.CreateFileW(tempfile, win32con.GENERIC_READ,
        win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE,
        None, win32con.OPEN_EXISTING, 0 , None, Transaction=trans, MiniVersion=base_ver)
    print('version:',base_ver,win32file.ReadFile(hfile_0, 100))
    hfile_0.Close()

    hfile_1=win32file.CreateFileW(tempfile, win32con.GENERIC_READ,
        win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE,
        None, win32con.OPEN_EXISTING, 0 , None, Transaction=trans, MiniVersion=ver_1)
    print('version:',ver_1,win32file.ReadFile(hfile_1, 100))
    hfile_1.Close()

    hfile_2=win32file.CreateFileW(tempfile, win32con.GENERIC_READ,
        win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE,
        None, win32con.OPEN_EXISTING, 0 , None, Transaction=trans, MiniVersion=ver_2)
    print('version:',ver_2,win32file.ReadFile(hfile_2, 100))
    hfile_2.Close()

    ## MiniVersions are destroyed when transaction is committed or rolled back
    win32transaction.CommitTransaction(trans)

    os.unlink(tempfile)
Esempio n. 4
0
def window_capture():
    hwnd = 0
    hwndDC = win32gui.GetWindowDC(hwnd)
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    saveDC = mfcDC.CreateCompatibleDC()
    saveBitMap = win32ui.CreateBitmap()

    MoniterDev = win32api.EnumDisplayMonitors(None,None)
    w = MoniterDev[0][2][2]
    h = MoniterDev[0][2][3]

    print w, h

    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
    saveDC.SelectObject(saveBitMap)
    saveDC.BitBlt((0,0),(w, h) , mfcDC, (0,0), win32con.SRCCOPY)
    bmpname=win32api.GetTempFileName(".","")[0]+'.bmp'
    saveBitMap.SaveBitmapFile(saveDC, bmpname)
    return bmpname
Esempio n. 5
0
import win32api, win32security
import win32con, ntsecuritycon, winnt
import os

temp_dir = win32api.GetTempPath()
fname = win32api.GetTempFileName(temp_dir, 'rsk')[0]
print(fname)
## file can't exist
os.remove(fname)

## enable backup and restore privs
required_privs = ((win32security.LookupPrivilegeValue('', ntsecuritycon.SE_BACKUP_NAME), win32con.SE_PRIVILEGE_ENABLED),
                  (win32security.LookupPrivilegeValue('', ntsecuritycon.SE_RESTORE_NAME), win32con.SE_PRIVILEGE_ENABLED)
                  )
ph = win32api.GetCurrentProcess()
th = win32security.OpenProcessToken(ph, win32con.TOKEN_READ | win32con.TOKEN_ADJUST_PRIVILEGES)
adjusted_privs = win32security.AdjustTokenPrivileges(th, 0, required_privs)

try:
    sa = win32security.SECURITY_ATTRIBUTES()
    my_sid = win32security.GetTokenInformation(th, ntsecuritycon.TokenUser)[0]
    sa.SECURITY_DESCRIPTOR.SetSecurityDescriptorOwner(my_sid, 0)

    k, disp = win32api.RegCreateKeyEx(win32con.HKEY_CURRENT_USER, 'Python test key', SecurityAttributes=sa,
                                      samDesired=win32con.KEY_ALL_ACCESS, Class='some class', Options=0)
    win32api.RegSetValue(k, None, win32con.REG_SZ, 'Default value for python test key')

    subk, disp = win32api.RegCreateKeyEx(k, 'python test subkey', SecurityAttributes=sa,
                                         samDesired=win32con.KEY_ALL_ACCESS, Class='some other class', Options=0)
    win32api.RegSetValue(subk, None, win32con.REG_SZ, 'Default value for subkey')
Esempio n. 6
0
    def testit(self):
        fname, tmp = win32api.GetTempFileName(win32api.GetTempPath(), 'stg')
        m = storagecon.STGM_READWRITE | storagecon.STGM_SHARE_EXCLUSIVE
        ##  file, mode, format, attrs (always 0), IID (IStorage or IPropertySetStorage, storage options(only used with STGFMT_DOCFILE)
        pss = pythoncom.StgOpenStorageEx(fname, m, storagecon.STGFMT_FILE, 0,
                                         pythoncom.IID_IPropertySetStorage)
        ###                               {"Version":2,"reserved":0,"SectorSize":512,"TemplateFile":u'somefilename'})

        ## FMTID_SummaryInformation FMTID_DocSummaryInformation FMTID_UserDefinedProperties
        psuser = pss.Create(pythoncom.FMTID_UserDefinedProperties,
                            pythoncom.IID_IPropertySetStorage,
                            storagecon.PROPSETFLAG_DEFAULT,
                            storagecon.STGM_READWRITE | storagecon.STGM_CREATE
                            | storagecon.STGM_SHARE_EXCLUSIVE
                            )  ## its very picky about flag combinations!
        psuser.WriteMultiple((3, 4), ('hey', 'bubba'))
        psuser.WritePropertyNames((3, 4), ('property3', 'property4'))
        expected_summaries = []
        expected_summaries.append(('property3', 3, pythoncom.VT_BSTR))
        expected_summaries.append(('property4', 4, pythoncom.VT_BSTR))
        psuser = None

        pssum = pss.Create(
            pythoncom.FMTID_SummaryInformation,
            pythoncom.IID_IPropertySetStorage, storagecon.PROPSETFLAG_DEFAULT,
            storagecon.STGM_READWRITE | storagecon.STGM_CREATE
            | storagecon.STGM_SHARE_EXCLUSIVE)
        pssum.WriteMultiple(
            (storagecon.PIDSI_AUTHOR, storagecon.PIDSI_COMMENTS),
            ('me', 'comment'))

        pssum = None
        pss = None  ## doesn't seem to be a close or release method, and you can't even reopen it from the same process until previous object is gone

        pssread = pythoncom.StgOpenStorageEx(
            fname, storagecon.STGM_READ | storagecon.STGM_SHARE_EXCLUSIVE,
            storagecon.STGFMT_FILE, 0, pythoncom.IID_IPropertySetStorage)
        found_summaries = []
        for psstat in pssread:
            ps = pssread.Open(
                psstat[0],
                storagecon.STGM_READ | storagecon.STGM_SHARE_EXCLUSIVE)
            for p in ps:
                p_val = ps.ReadMultiple((p[1], ))[0]
                if (p[1]==storagecon.PIDSI_AUTHOR and p_val=='me') or \
                   (p[1]==storagecon.PIDSI_COMMENTS and p_val=='comment'):
                    pass
                else:
                    self.fail("Uxexpected property %s/%s" % (p, p_val))
            ps = None
            ## FMTID_UserDefinedProperties can't exist without FMTID_DocSummaryInformation, and isn't returned independently from Enum
            ## also can't be open at same time
            if psstat[0] == pythoncom.FMTID_DocSummaryInformation:
                ps = pssread.Open(
                    pythoncom.FMTID_UserDefinedProperties,
                    storagecon.STGM_READ | storagecon.STGM_SHARE_EXCLUSIVE)
                for p in ps:
                    found_summaries.append(p)
                ps = None
        psread = None
        expected_summaries.sort()
        found_summaries.sort()
        self.assertEqual(expected_summaries, found_summaries)
Esempio n. 7
0
## demonstrates using BackupRead and BackupWrite to copy all of a file's data streams

import win32file, win32api, win32con, win32security, ntsecuritycon
from win32com import storagecon
import pythoncom, pywintypes
import struct, traceback
from pywin32_testutil import str2bytes, ob2memory

all_sd_info = win32security.DACL_SECURITY_INFORMATION | win32security.DACL_SECURITY_INFORMATION | \
              win32security.OWNER_SECURITY_INFORMATION | win32security.GROUP_SECURITY_INFORMATION

tempdir = win32api.GetTempPath()
tempfile = win32api.GetTempFileName(tempdir, 'bkr')[0]
outfile = win32api.GetTempFileName(tempdir, 'out')[0]
print('Filename:', tempfile, 'Output file:', outfile)

f = open(tempfile, 'w')
f.write('some random junk' + 'x' * 100)
f.close()

## add a couple of alternate data streams
f = open(tempfile + ':streamdata', 'w')
f.write('data written to alternate stream' + 'y' * 100)
f.close()

f = open(tempfile + ':anotherstream', 'w')
f.write('z' * 100)
f.close()

## add Summary Information, which is stored as a separate stream
m = storagecon.STGM_READWRITE | storagecon.STGM_SHARE_EXCLUSIVE | storagecon.STGM_DIRECT
Esempio n. 8
0
import win32api, win32security
import win32con, ntsecuritycon, winnt
import os

temp_dir = win32api.GetTempPath()
fname = win32api.GetTempFileName(temp_dir, "rsk")[0]
print(fname)
## file can't exist
os.remove(fname)

## enable backup and restore privs
required_privs = (
    (
        win32security.LookupPrivilegeValue("", ntsecuritycon.SE_BACKUP_NAME),
        win32con.SE_PRIVILEGE_ENABLED,
    ),
    (
        win32security.LookupPrivilegeValue("", ntsecuritycon.SE_RESTORE_NAME),
        win32con.SE_PRIVILEGE_ENABLED,
    ),
)
ph = win32api.GetCurrentProcess()
th = win32security.OpenProcessToken(
    ph, win32con.TOKEN_READ | win32con.TOKEN_ADJUST_PRIVILEGES
)
adjusted_privs = win32security.AdjustTokenPrivileges(th, 0, required_privs)

try:
    sa = win32security.SECURITY_ATTRIBUTES()
    my_sid = win32security.GetTokenInformation(th, ntsecuritycon.TokenUser)[0]
    sa.SECURITY_DESCRIPTOR.SetSecurityDescriptorOwner(my_sid, 0)
Esempio n. 9
0

def ProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize,
                    StreamBytesTransferred, StreamNumber, CallbackReason,
                    SourceFile, DestinationFile, Data):
    print(Data)
    print(TotalFileSize, TotalBytesTransferred, StreamSize,
          StreamBytesTransferred, StreamNumber, CallbackReason, SourceFile,
          DestinationFile)
    # if TotalBytesTransferred > 100000:
    # return win32file.PROGRESS_STOP
    return win32file.PROGRESS_CONTINUE


temp_dir = win32api.GetTempPath()
fsrc = win32api.GetTempFileName(temp_dir, 'cfe')[0]
fdst = win32api.GetTempFileName(temp_dir, 'cfe')[0]
print(fsrc, fdst)

f = open(fsrc, 'w')
f.write('xxxxxxxxxxxxxxxx\n' * 32768)
f.close()
# add a couple of extra data streams
f = open(fsrc + ':stream_y', 'w')
f.write('yyyyyyyyyyyyyyyy\n' * 32768)
f.close()
f = open(fsrc + ':stream_z', 'w')
f.write('zzzzzzzzzzzzzzzz\n' * 32768)
f.close()

operation_desc = 'Copying ' + fsrc + ' to ' + fdst
import win32security,win32api,win32con, win32process
fname, tmp = win32api.GetTempFileName(win32api.GetTempPath(),'tmp')
print(fname)
## You need SE_RESTORE_NAME to be able to set the owner of a security descriptor to anybody
## other than yourself or your primary group.  Most admin logins don't have it by default, so
## enabling it may fail
new_privs = ((win32security.LookupPrivilegeValue('',win32security.SE_SECURITY_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_TCB_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_SHUTDOWN_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_RESTORE_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_TAKE_OWNERSHIP_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_CREATE_PERMANENT_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_ENABLE_DELEGATION_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_CHANGE_NOTIFY_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_DEBUG_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_PROF_SINGLE_PROCESS_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_SYSTEM_PROFILE_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_LOCK_MEMORY_NAME),win32con.SE_PRIVILEGE_ENABLED)
            )

all_info=win32security.OWNER_SECURITY_INFORMATION|win32security.GROUP_SECURITY_INFORMATION| win32security.DACL_SECURITY_INFORMATION|win32security.SACL_SECURITY_INFORMATION

ph=win32process.GetCurrentProcess()
th = win32security.OpenProcessToken(ph,win32security.TOKEN_ALL_ACCESS)  ##win32con.TOKEN_ADJUST_PRIVILEGES)
win32security.AdjustTokenPrivileges(th,0,new_privs)
my_sid = win32security.GetTokenInformation(th,win32security.TokenUser)[0]
pwr_sid=win32security.LookupAccountName('','Power Users')[0]

sd=win32security.GetNamedSecurityInfo(fname,win32security.SE_FILE_OBJECT,all_info)
dacl=sd.GetSecurityDescriptorDacl()
if dacl is None:
import win32file, win32api, win32transaction
import win32con, winioctlcon
import struct
"""
Definition of buffer used with FSCTL_TXFS_CREATE_MINIVERSION:
typedef struct _TXFS_CREATE_MINIVERSION_INFO{
	USHORT StructureVersion;  
	USHORT StructureLength;
	ULONG BaseVersion;
	USHORT MiniVersion;}
"""
buf_fmt = 'HHLH0L'  ## buffer size must include struct padding
buf_size = struct.calcsize(buf_fmt)

tempdir = win32api.GetTempPath()
tempfile = win32api.GetTempFileName(tempdir, 'cft')[0]
print tempfile
f = open(tempfile, 'w')
f.write('This is original file.\n')
f.close()

trans = win32transaction.CreateTransaction(
    Description='Test creating miniversions of a file')
hfile = win32file.CreateFileW(tempfile,
                              win32con.GENERIC_READ | win32con.GENERIC_WRITE,
                              win32con.FILE_SHARE_READ
                              | win32con.FILE_SHARE_WRITE,
                              None,
                              win32con.OPEN_EXISTING,
                              0,
                              None,
import struct, traceback

stream_types = {
    win32con.BACKUP_DATA: "Standard data",
    win32con.BACKUP_EA_DATA: "Extended attribute data",
    win32con.BACKUP_SECURITY_DATA: "Security descriptor data",
    win32con.BACKUP_ALTERNATE_DATA: "Alternative data streams",
    win32con.BACKUP_LINK: "Hard link information",
    win32con.BACKUP_PROPERTY_DATA: "Property data",
    win32con.BACKUP_OBJECT_ID: "Objects identifiers",
    win32con.BACKUP_REPARSE_DATA: "Reparse points",
    win32con.BACKUP_SPARSE_BLOCK: "Sparse file",
}

tempdir = win32api.GetTempPath()
tempfile = win32api.GetTempFileName(tempdir, "bkr")[0]
print("Filename:", tempfile)

f = open(tempfile, "w")
f.write("some random junk" + "x" * 100)
f.close()

f = open(tempfile + ":streamdata", "w")
f.write("data written to alternate stream" + "y" * 100)
f.close()

f = open(tempfile + ":anotherstream", "w")
f.write("z" * 200)
f.close()

## add Summary Information, which is stored as a separate stream
Esempio n. 13
0
    f.write(input_buffer)
    ## python 2.3 throws an error if return value is a plain int
    return winerror.ERROR_SUCCESS


def WriteCallback(output_buffer, data, buflen):
    fnamebackup, fnameout, f = data
    file_data = f.read(buflen)
    ## returning 0 as len terminates WriteEncryptedFileRaw
    output_len = len(file_data)
    output_buffer[:output_len] = file_data
    return winerror.ERROR_SUCCESS, output_len


tmp_dir = win32api.GetTempPath()
dst_dir = win32api.GetTempFileName(tmp_dir, "oef")[0]
os.remove(dst_dir)
os.mkdir(dst_dir)
print("Destination dir:", dst_dir)

## create an encrypted file
fname = win32api.GetTempFileName(dst_dir, "ref")[0]
print("orig file:", fname)
f = open(fname, "w")
f.write("xxxxxxxxxxxxxxxx\n" * 32768)
f.close()
## add a couple of extra data streams
f = open(fname + ":stream_y", "w")
f.write("yyyyyyyyyyyyyyyy\n" * 32768)
f.close()
f = open(fname + ":stream_z", "w")
Esempio n. 14
0
        TotalFileSize,
        TotalBytesTransferred,
        StreamSize,
        StreamBytesTransferred,
        StreamNumber,
        CallbackReason,
        SourceFile,
        DestinationFile,
    )
    ##if TotalBytesTransferred > 100000:
    ##    return win32file.PROGRESS_STOP
    return win32file.PROGRESS_CONTINUE


temp_dir = win32api.GetTempPath()
fsrc = win32api.GetTempFileName(temp_dir, "cfe")[0]
fdst = win32api.GetTempFileName(temp_dir, "cfe")[0]
print(fsrc, fdst)

f = open(fsrc, "w")
f.write("xxxxxxxxxxxxxxxx\n" * 32768)
f.close()
## add a couple of extra data streams
f = open(fsrc + ":stream_y", "w")
f.write("yyyyyyyyyyyyyyyy\n" * 32768)
f.close()
f = open(fsrc + ":stream_z", "w")
f.write("zzzzzzzzzzzzzzzz\n" * 32768)
f.close()

operation_desc = "Copying " + fsrc + " to " + fdst
     win32con.SE_PRIVILEGE_ENABLED),
)
ph = win32api.GetCurrentProcess()
th = win32security.OpenProcessToken(
    ph, win32security.TOKEN_ALL_ACCESS | win32con.TOKEN_ADJUST_PRIVILEGES)
modified_privs = win32security.AdjustTokenPrivileges(th, 0, new_privs)

## look up a few sids that should be available on most systems
my_sid = win32security.GetTokenInformation(th, ntsecuritycon.TokenUser)[0]
pwr_sid = win32security.LookupAccountName('', 'Power Users')[0]
admin_sid = win32security.LookupAccountName('', 'Administrators')[0]
everyone_sid = win32security.LookupAccountName('', 'EveryOne')[0]

## create a dir and set security so Everyone has read permissions, and all files and subdirs inherit its ACLs
temp_dir = win32api.GetTempPath()
dir_name = win32api.GetTempFileName(temp_dir, 'sfa')[0]
os.remove(dir_name)
os.mkdir(dir_name)
dir_dacl = win32security.ACL()
dir_dacl.AddAccessAllowedAceEx(ACL_REVISION_DS,
                               CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE,
                               win32con.GENERIC_READ, everyone_sid)
## make sure current user has permissions on dir
dir_dacl.AddAccessAllowedAceEx(ACL_REVISION_DS,
                               CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE,
                               win32con.GENERIC_ALL, my_sid)
## keep dir from inheriting any permissions so it only has ACEs explicitely set here
win32security.SetNamedSecurityInfo(
    dir_name, SE_FILE_OBJECT,
    OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION
    | DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION, pwr_sid,
Esempio n. 16
0
)
ph = win32api.GetCurrentProcess()
th = win32security.OpenProcessToken(
    ph, win32security.TOKEN_ALL_ACCESS | win32con.TOKEN_ADJUST_PRIVILEGES
)
modified_privs = win32security.AdjustTokenPrivileges(th, 0, new_privs)

## look up a few sids that should be available on most systems
my_sid = win32security.GetTokenInformation(th, ntsecuritycon.TokenUser)[0]
pwr_sid = win32security.LookupAccountName("", "Power Users")[0]
admin_sid = win32security.LookupAccountName("", "Administrators")[0]
everyone_sid = win32security.LookupAccountName("", "EveryOne")[0]

## create a dir and set security so Everyone has read permissions, and all files and subdirs inherit its ACLs
temp_dir = win32api.GetTempPath()
dir_name = win32api.GetTempFileName(temp_dir, "sfa")[0]
os.remove(dir_name)
os.mkdir(dir_name)
dir_dacl = win32security.ACL()
dir_dacl.AddAccessAllowedAceEx(
    ACL_REVISION_DS,
    CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE,
    win32con.GENERIC_READ,
    everyone_sid,
)
## make sure current user has permissions on dir
dir_dacl.AddAccessAllowedAceEx(
    ACL_REVISION_DS,
    CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE,
    win32con.GENERIC_ALL,
    my_sid,
Esempio n. 17
0
from win32com.shell import shell, shellcon
import pythoncom, win32api, os, sys

temp_dir = win32api.GetTempPath()
linkname = win32api.GetTempFileName(temp_dir, 'cmd')[0]
os.remove(linkname)
linkname += '.lnk'
print 'Link name:', linkname
ish = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None,
                                 pythoncom.CLSCTX_INPROC_SERVER,
                                 shell.IID_IShellLink)
ish.SetPath(os.environ['cOMSPEC'])
ish.SetWorkingDirectory(os.path.split(sys.executable)[0])
ish.SetDescription('shortcut made by python')

console_props = {
    'Signature':
    shellcon.NT_CONSOLE_PROPS_SIG,
    'InsertMode':
    True,
    'FullScreen':
    False,  ## True looks like "DOS Mode" from win98!
    'FontFamily':
    54,
    'CursorSize':
    75,  ## pct of character size
    'ScreenBufferSize': (152, 256),
    'AutoPosition':
    False,
    'FontSize': (4, 5),
    'FaceName':
Esempio n. 18
0
    f.write(input_buffer)
    ## python 2.3 throws an error if return value is a plain int
    return winerror.ERROR_SUCCESS


def WriteCallback(output_buffer, data, buflen):
    fnamebackup, fnameout, f = data
    file_data = f.read(buflen)
    ## returning 0 as len terminates WriteEncryptedFileRaw
    output_len = len(file_data)
    output_buffer[:output_len] = file_data
    return winerror.ERROR_SUCCESS, output_len


tmp_dir = win32api.GetTempPath()
dst_dir = win32api.GetTempFileName(tmp_dir, 'oef')[0]
os.remove(dst_dir)
os.mkdir(dst_dir)
print 'Destination dir:', dst_dir

## create an encrypted file
fname = win32api.GetTempFileName(dst_dir, 'ref')[0]
print 'orig file:', fname
f = open(fname, 'w')
f.write('xxxxxxxxxxxxxxxx\n' * 32768)
f.close()
## add a couple of extra data streams
f = open(fname + ':stream_y', 'w')
f.write('yyyyyyyyyyyyyyyy\n' * 32768)
f.close()
f = open(fname + ':stream_z', 'w')
Esempio n. 19
0
from win32com.shell import shell, shellcon
import pythoncom, win32api, os, sys

temp_dir = win32api.GetTempPath()
linkname = win32api.GetTempFileName(temp_dir, "cmd")[0]
os.remove(linkname)
linkname += ".lnk"
print("Link name:", linkname)
ish = pythoncom.CoCreateInstance(
    shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink
)
ish.SetPath(os.environ["cOMSPEC"])
ish.SetWorkingDirectory(os.path.split(sys.executable)[0])
ish.SetDescription("shortcut made by python")

console_props = {
    "Signature": shellcon.NT_CONSOLE_PROPS_SIG,
    "InsertMode": True,
    "FullScreen": False,  ## True looks like "DOS Mode" from win98!
    "FontFamily": 54,
    "CursorSize": 75,  ## pct of character size
    "ScreenBufferSize": (152, 256),
    "AutoPosition": False,
    "FontSize": (4, 5),
    "FaceName": "",
    "HistoryBufferSize": 32,
    "InputBufferSize": 0,
    "QuickEdit": True,
    "Font": 0,  ## 0 should always be present, use win32console.GetNumberOfConsoleFonts() to find how many available
    "FillAttribute": 7,
    "PopupFillAttribute": 245,