1.1 --- a/OpenSecurity/bin/vmmanager.pyw Thu Jun 05 15:51:26 2014 +0100
1.2 +++ b/OpenSecurity/bin/vmmanager.pyw Fri Jun 06 10:38:21 2014 +0100
1.3 @@ -73,14 +73,15 @@
1.4 rsdHandler = None
1.5 hostonlyIFs = None
1.6 browsingManager = None
1.7 + blacklistedRSD = None
1.8 status_message = 'Starting up...'
1.9
1.10
1.11 def __init__(self):
1.12 -
1.13 self.systemProperties = self.getSystemProperties()
1.14 self.machineFolder = self.systemProperties["Default machine folder"]
1.15 self.hostonlyIFs = self.getHostOnlyIFs()
1.16 + VMManager.blacklistedRSD = self.loadRSDBlacklist()
1.17 # only proceed if we have a working background environment
1.18 if self.backend_ok():
1.19 self.cleanup()
1.20 @@ -207,18 +208,34 @@
1.21 return self.vmRootName+str(i)
1.22 return ''
1.23
1.24 + @staticmethod
1.25 + def loadRSDBlacklist():
1.26 + blacklist = dict()
1.27 + try:
1.28 + fo = open(Environment('OpenSecurity').prefix_path +"\\bin\\blacklist.usb", "r")
1.29 + except IOError:
1.30 + logger.error("Could not open RSD blacklist file.")
1.31 + return blacklist
1.32 +
1.33 + lines = fo.readlines()
1.34 + for line in lines:
1.35 + if line != "":
1.36 + parts = line.strip().split(' ')
1.37 + blacklist[parts[0].lower()] = parts[1].lower()
1.38 + return blacklist
1.39 +
1.40 + @staticmethod
1.41 + def isBlacklisted(device):
1.42 + if VMManager.blacklistedRSD:
1.43 + blacklisted = device.vendorid.lower() in VMManager.blacklistedRSD.keys() and device.productid.lower() == VMManager.blacklistedRSD[device.vendorid]
1.44 + return blacklisted
1.45 + return False
1.46 +
1.47 # check if the device is mass storage type
1.48 @staticmethod
1.49 def isMassStorageDevice(device):
1.50 - #TODO: implement filtering for card readers (this is olivers)
1.51 - # alternatively implement handling of multiple drives on same USB client
1.52 - if device.vendorid == '058f' and device.productid=='6362':
1.53 - return False
1.54 keyname = 'SYSTEM\CurrentControlSet\Enum\USB' + '\VID_' + device.vendorid+'&'+'PID_'+ device.productid
1.55 key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, keyname)
1.56 - #subkeys = _winreg.QueryInfoKey(key)[0]
1.57 - #for i in range(0, subkeys):
1.58 - # print _winreg.EnumKey(key, i)
1.59 devinfokeyname = win32api.RegEnumKey(key, 0)
1.60 win32api.RegCloseKey(key)
1.61
1.62 @@ -250,8 +267,9 @@
1.63 serial = None
1.64 if 'SerialNumber' in props.keys():
1.65 serial = re.search(r"(?P<ser>[0-9A-Fa-f]+)", props['SerialNumber']).groupdict()['ser']
1.66 - usb_filter = USBFilter( uuid, vid, pid, rev, serial)
1.67 - if VMManager.isMassStorageDevice(usb_filter):
1.68 + usb_filter = USBFilter( uuid, vid, pid, rev, serial)
1.69 +
1.70 + if VMManager.isMassStorageDevice(usb_filter) and not VMManager.isBlacklisted(usb_filter):
1.71 rsds[uuid] = usb_filter
1.72 logger.debug(usb_filter)
1.73 return rsds