implemented blacklist for RSD devices
authorBarthaM@N3SIM1218.D03.arc.local
Fri, 06 Jun 2014 10:38:21 +0100
changeset 183a4ea59670b6b
parent 182 6e9b8f105de1
child 184 416e097660da
implemented blacklist for RSD devices
OpenSecurity/bin/blacklist.usb
OpenSecurity/bin/vmmanager.pyw
     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