Files
2024-12-17 22:55:39 +01:00

58 lines
1.7 KiB
Python

import argparse
import json
import logging
import os
import sys
# TODO: Rather nasty hack, when volatility's actually installed this would be unnecessary
sys.path += ".."
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(levelname)-8s %(name)-12s: %(message)s")
console.setFormatter(formatter)
logger = logging.getLogger("")
logger.addHandler(console)
logger.setLevel(logging.DEBUG)
from volatility3 import schemas # noqa: E402
if __name__ == "__main__":
parser = argparse.ArgumentParser("Validates ")
parser.add_argument("-s", "--schema", dest="schema", default=None)
parser.add_argument("filenames", metavar="FILE", nargs="+")
args = parser.parse_args()
schema = None
if args.schema:
with open(os.path.abspath(args.schema)) as s:
schema = json.load(s)
failures = []
for filename in args.filenames:
try:
if os.path.exists(filename):
print(f"[?] Validating file: {filename}")
with open(filename) as t:
test = json.load(t)
if args.schema:
result = schemas.valid(test, schema, False)
else:
result = schemas.validate(test, False)
if result:
print(f"[+] Validation successful: {filename}")
else:
print(f"[-] Validation failed: {filename}")
failures.append(filename)
else:
print(f"[x] File not found: {filename}")
except Exception as e:
failures.append(filename)
print(f"[x] Exception occurred: {filename} ({repr(e)})")
print("Failures", failures)