Generates a header for the text format YARA rule set and uses the meta data section to fill the placeholders :param rules_response: the retrieved rule set as python object :return:
(rules_response)
| 14 | |
| 15 | |
| 16 | def generate_header(rules_response): |
| 17 | """ |
| 18 | Generates a header for the text format YARA rule set and uses the meta data section to fill the placeholders |
| 19 | :param rules_response: the retrieved rule set as python object |
| 20 | :return: |
| 21 | """ |
| 22 | header_elements = list() |
| 23 | |
| 24 | # Header comment |
| 25 | yara_set_header = YARA_SET_HEADER |
| 26 | yara_set_header = yara_set_header.replace('{{ date }}', datetime.utcnow().strftime("%Y-%m-%d %H:%M")) |
| 27 | yara_set_header = yara_set_header.replace('{{ user }}', rules_response['customer']) |
| 28 | yara_set_header = yara_set_header.replace('{{ len_rules }}', str(len(rules_response['rules']))) |
| 29 | yara_set_header = yara_set_header.replace('{{ legal_note }}', rules_response['legal_note']) |
| 30 | header_elements.append(yara_set_header) |
| 31 | |
| 32 | # Required modules |
| 33 | required_modules = set() |
| 34 | for rule in rules_response['rules']: |
| 35 | for module in rule['required_modules']: |
| 36 | required_modules.add(module) |
| 37 | for module in required_modules: |
| 38 | header_elements.append('import "{0}"'.format(module)) |
| 39 | return "\n".join(header_elements) |
| 40 |