# TODO: review and add different/better solutions KEYWRDS = { "scan": 1, "response": 2, "control": 3, "callback": 4, "implant": 5, "zombie": 6, "trigger": 7, "infected": 8, "compromise": 9, "inject": 10, "execute": 11, "deploy": 12, "malware": 13, "exploit": 14, "payload": 15, "backdoor": 16, "zeroday": 17, "botnet": 18, } matches = {} def search(traffic): for word in KEYWRDS: c = traffic.count(word) if c > 0: matches[word] = c def count(founded): calculations = sum([v * KEYWRDS[k] for k, v in founded.items()]) print(calculations) def oxdfs_1st(traffic): score = 0 for word, weight in KEYWRDS.items(): score += traffic.count(word) * weight print(score) return score def oxdfs_2st(traffic): """ list moved to generics """ # return sum([traffic.count(word) * weight for word, weight in KEYWRDS.items()]) return sum(traffic.count(word) * weight for word, weight in KEYWRDS.items()) if __name__ == "__main__": search("payloadrandompayloadhtbzerodayrandombytesmalware") oxdfs_1st("payloadrandompayloadhtbzerodayrandombytesmalware") oxdfs_2st("payloadrandompayloadhtbzerodayrandombytesmalware") count(matches)