def _update_tracker_db(self):
     """Update Trackers DB."""
     try:
         if not is_internet_available():
             logger.warning('No Internet Connection. '
                            'Skipping Trackers Database Update.')
             return
         exodus_db = '{}/api/trackers'.format(settings.EXODUS_URL)
         resp = update_local_db('Trackers', exodus_db, self.tracker_db)
         # Check1: SHA256 Change
         if resp:
             # DB needs update
             # Check2: DB Syntax Changed
             data = json.loads(resp.decode('utf-8', 'ignore'))
             is_db_format_good = False
             if 'trackers' in data:
                 if '1' in data['trackers']:
                     if 'code_signature' in data['trackers']['1']:
                         is_db_format_good = True
             if is_db_format_good:
                 # DB Format is not changed. Let's update DB
                 logger.info('Updating Trackers Database....')
                 with open(self.tracker_db, 'wb') as wfp:
                     wfp.write(resp)
             else:
                 logger.info('Trackers Database format from '
                             'reports.exodus-privacy.eu.org has changed.'
                             ' Database is not updated. '
                             'Please report to: https://github.com/MobSF/'
                             'Mobile-Security-Framework-MobSF/issues')
     except Exception:
         logger.exception('[ERROR] Trackers DB Update')
예제 #2
0
 def update_maltrail_db(self):
     """Check for update in maltrail DB."""
     try:
         mal_db = self.maltrail
         resp = update_local_db('Maltrail', settings.MALTRAIL_DB_URL,
                                mal_db)
         if not resp:
             return
         # DB needs update
         # Check2: DB Syntax Changed
         lines = resp.decode('utf-8', 'ignore').splitlines()
         if len(lines) > 100:
             logger.info('Updating Maltrail Database')
             with open(mal_db, 'wb') as wfp:
                 wfp.write(resp)
         else:
             logger.warning('Unable to Update Maltrail DB')
     except Exception:
         logger.exception('[ERROR] Maltrail DB Update')
예제 #3
0
 def update_malware_db(self):
     """Check for update in malware DB."""
     try:
         mal_db = self.malwaredomainlist
         resp = update_local_db('Malware', settings.MALWARE_DB_URL, mal_db)
         if not resp:
             return
         # DB needs update
         # Check2: DB Syntax Changed
         line = resp.decode('utf-8', 'ignore').split('\n')[0]
         lst = line.split('",')
         if len(lst) == 10:
             # DB Format is not changed. Let's update DB
             logger.info('Updating Malware Database')
             with open(mal_db, 'wb') as wfp:
                 wfp.write(resp)
         else:
             logger.warning('Unable to Update Malware DB')
     except Exception:
         logger.exception('[ERROR] Malware DB Update')