new: [yara_gen.py] added

This commit is contained in:
Alexandre Dulaunoy 2024-03-15 22:31:05 +01:00
parent 5ddf34a4fc
commit 7de8d651a2
Signed by: adulau
GPG key ID: 09E2CD4944E6CBCD
2 changed files with 59 additions and 1 deletions

View file

@ -1,5 +1,5 @@
# My scripts # My scripts
- [url-check.sh](./url-check.sh) Read a list of URLs from stdin and print if the url is Ok (200 or 301 with one redirect to a 200) - [url-check.sh](./url-check.sh) Read a list of URLs from stdin and print if the url is Ok (200 or 301 with one redirect to a 200)
- [yara_gen.py](./yara_gen.py) Generate Yara rules from a list of strings

58
yara_gen.py Normal file
View file

@ -0,0 +1,58 @@
#!/usr/bin/python
#
# Generate Yara rules from a list of strings
import yara_tools
import yara
import argparse
import os
import fileinput
import sys
usage = "usage: %prog [options]"
parser = argparse.ArgumentParser(
description="Generate Yara rules from a list of strings", epilog=""
)
parser.add_argument(
"-n",
dest="name",
help="set name of the Yara rule",
type=str,
default="default_rule_name",
)
default_author = os.getlogin()
parser.add_argument(
"-a",
dest="author",
help="set name of the Yara rule author",
type=str,
default=default_author,
)
parser.add_argument(
"-p",
dest="purpose",
help="set the purpose of the Yara rule",
type=str,
default="Purpose not set",
)
options = parser.parse_args()
rule = yara_tools.create_rule(name=f'{options.name}', default_boolean='or')
rule.add_meta(key="author", value=f'{options.author}')
rule.add_meta(key="purpose", value=f'{options.purpose}')
s = []
for line in fileinput.input('-'):
l = line.rstrip()
if l:
s.append(l)
rule.add_strings(
strings=s, modifiers=['wide', 'ascii'], condition="any of ($IDENTIFIER*)"
)
generated_rule = rule.build_rule()
print(generated_rule)