The STIX Pattern Validator provides an executable script (validate-patterns) in addition to being an importable Python library.

The validate-patterns script accepts patterns from either direct user input or a file passed as an option.

From Python Code

The run_validator function can be called on any Python string. It returns a list of errors encountered while parsing the pattern.

from stix2patterns.validator import run_validator

pattern = "[file-object:hashes.md5 = '79054025255fb1a26e4bc422aef54eb4']"
errors = run_validator(pattern)

User Input

When prompted, enter a pattern to validate and press enter. The validator will supply whether the pattern has passed or failed. If the pattern fails the test, the validator will supply where the first syntax error occurred. The validator will continue to prompt for patterns until Ctrl-C is pressed. Example:

$ validate-patterns

Enter a pattern to validate: [file-object:hashes.md5 = '79054025255fb1a26e4bc422aef54eb4']

PASS: [file-object:hashes.md5 = '79054025255fb1a26e4bc422aef54eb4']

File Input

$ validate-patterns -f <path_to_file>

Use <path_to_file> to specify the path to a file containing a set of patterns to validate. Each pattern must be on a separate line of the file so that the validator may determine where the pattern begins and ends. The validator will supply the PASS/FAIL result of each pattern.