@@ -0,0 +1,1251 @@
+from datetime import timedelta%0Aimport logging%0A%0Afrom core.observables import Hash%0Afrom core.feed import Feed%0Afrom core.errors import ObservableValidationError%0A%0A%0Aclass FeodoTrackerBinaries(Feed):%0A%0A    default_values = %7B%0A        %22frequency%22:%0A            timedelta(hours=24),%0A        %22name%22:%0A            %22FeodoTrackerBinaries%22,%0A        %22source%22:%0A            %22https://feodotracker.abuse.ch/downloads/malware_hashes.csv%22,%0A        %22description%22:%0A            %22Feodo Tracker Binary Feed. This feed shows a full list of known md5s.%22,%0A    %7D%0A%0A    def update(self):%0A        for line in self.update_csv(delimiter=',', quotechar='%22'):%0A            self.analyze(line)%0A%0A    def analyze(self, line):%0A        if not line or line%5B0%5D.startswith(%22#%22):%0A            return%0A%0A        first_seen, md5_hash, family = tuple(line)%0A%0A        tags = %5B%5D%0A        tags.append(family.lower())%0A        tags.append(%22blocklist%22)%0A%0A        context = %7B%0A            %22first_seen%22: first_seen,%0A            %22source%22: self.name%0A        %7D%0A%0A        try:%0A            hash = Hash.get_or_create(value=md5_hash.rstrip())%0A            hash.add_context(context)%0A            hash.tag(tags)%0A%0A        except ObservableValidationError as e:%0A            logging.error(%22Invalid line: %7B%7D%5CnLine: %7B%7D%22.format(e, line))%0A

Create feodo_tracker_binaries.py (#372)