1.1 --- a/OpenSecurity/bin/blacklist.usb Thu Jun 05 15:51:26 2014 +0100
1.2 +++ b/OpenSecurity/bin/blacklist.usb Fri Jun 06 10:38:21 2014 +0100
1.3 @@ -0,0 +1,18 @@
1.4 +0711 0712
1.5 +0760 0761
1.6 +e00a e4f0
1.7 +a604 ad01
1.8 +0103 0104
1.9 +0108 0111
1.10 +0111 0113
1.11 +0113 0115
1.12 +0115 0116
1.13 +0116 0117
1.14 +0118 0119
1.15 +0139 0151
1.16 +0151 0152
1.17 +0157 0158
1.18 +0159 0161
1.19 +0178 0184
1.20 +1037 1050
1.21 +058f 6362
2.1 --- a/OpenSecurity/bin/vmmanager.pyw Thu Jun 05 15:51:26 2014 +0100
2.2 +++ b/OpenSecurity/bin/vmmanager.pyw Fri Jun 06 10:38:21 2014 +0100
2.3 @@ -73,14 +73,15 @@
2.4 rsdHandler = None
2.5 hostonlyIFs = None
2.6 browsingManager = None
2.7 + blacklistedRSD = None
2.8 status_message = 'Starting up...'
2.9
2.10
2.11 def __init__(self):
2.12 -
2.13 self.systemProperties = self.getSystemProperties()
2.14 self.machineFolder = self.systemProperties["Default machine folder"]
2.15 self.hostonlyIFs = self.getHostOnlyIFs()
2.16 + VMManager.blacklistedRSD = self.loadRSDBlacklist()
2.17 # only proceed if we have a working background environment
2.18 if self.backend_ok():
2.19 self.cleanup()
2.20 @@ -207,18 +208,34 @@
2.21 return self.vmRootName+str(i)
2.22 return ''
2.23
2.24 + @staticmethod
2.25 + def loadRSDBlacklist():
2.26 + blacklist = dict()
2.27 + try:
2.28 + fo = open(Environment('OpenSecurity').prefix_path +"\\bin\\blacklist.usb", "r")
2.29 + except IOError:
2.30 + logger.error("Could not open RSD blacklist file.")
2.31 + return blacklist
2.32 +
2.33 + lines = fo.readlines()
2.34 + for line in lines:
2.35 + if line != "":
2.36 + parts = line.strip().split(' ')
2.37 + blacklist[parts[0].lower()] = parts[1].lower()
2.38 + return blacklist
2.39 +
2.40 + @staticmethod
2.41 + def isBlacklisted(device):
2.42 + if VMManager.blacklistedRSD:
2.43 + blacklisted = device.vendorid.lower() in VMManager.blacklistedRSD.keys() and device.productid.lower() == VMManager.blacklistedRSD[device.vendorid]
2.44 + return blacklisted
2.45 + return False
2.46 +
2.47 # check if the device is mass storage type
2.48 @staticmethod
2.49 def isMassStorageDevice(device):
2.50 - #TODO: implement filtering for card readers (this is olivers)
2.51 - # alternatively implement handling of multiple drives on same USB client
2.52 - if device.vendorid == '058f' and device.productid=='6362':
2.53 - return False
2.54 keyname = 'SYSTEM\CurrentControlSet\Enum\USB' + '\VID_' + device.vendorid+'&'+'PID_'+ device.productid
2.55 key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, keyname)
2.56 - #subkeys = _winreg.QueryInfoKey(key)[0]
2.57 - #for i in range(0, subkeys):
2.58 - # print _winreg.EnumKey(key, i)
2.59 devinfokeyname = win32api.RegEnumKey(key, 0)
2.60 win32api.RegCloseKey(key)
2.61
2.62 @@ -250,8 +267,9 @@
2.63 serial = None
2.64 if 'SerialNumber' in props.keys():
2.65 serial = re.search(r"(?P<ser>[0-9A-Fa-f]+)", props['SerialNumber']).groupdict()['ser']
2.66 - usb_filter = USBFilter( uuid, vid, pid, rev, serial)
2.67 - if VMManager.isMassStorageDevice(usb_filter):
2.68 + usb_filter = USBFilter( uuid, vid, pid, rev, serial)
2.69 +
2.70 + if VMManager.isMassStorageDevice(usb_filter) and not VMManager.isBlacklisted(usb_filter):
2.71 rsds[uuid] = usb_filter
2.72 logger.debug(usb_filter)
2.73 return rsds