Source code for credsweeper.filters.value_allowlist_check

import re

from credsweeper.config import Config
from credsweeper.credentials import LineData
from credsweeper.file_handler.analysis_target import AnalysisTarget
from credsweeper.filters import Filter
from credsweeper.utils import Util


[docs]class ValueAllowlistCheck(Filter): """Check that patterns from the list is not present in the candidate value.""" ALLOWED = [ r"ENC\(.*\)", # r"ENC\[.*\]", # r"\$\{(\*|[0-9]+|[a-z_].*)\}", # r"\$([0-9]+\b|[a-z_]+[0-9a-z_]*)", # r"\$\$[a-z_]+(\^%[0-9a-z_]+)?", # r"#\{.*\}", # r"\{\{.+\}\}", # r"\S{0,5}\*{5,}", # r".*@@@hl@@@(암호|비번|PW|PASS)@@@endhl@@@", # ] ALLOWED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED), flags=re.IGNORECASE) ALLOWED_UNQUOTED_PATTERN = re.compile(r"[~a-z0-9_]+((\.|->)[a-z0-9_]+)+\(.*$", flags=re.IGNORECASE) def __init__(self, config: Config = None) -> None: pass
[docs] def run(self, line_data: LineData, target: AnalysisTarget) -> bool: """Run filter checks on received credential candidate data 'line_data'. Args: line_data: credential candidate data target: multiline target from which line data was obtained Return: True, if need to filter candidate and False if left """ if self.ALLOWED_PATTERN.match(line_data.value): return True if not line_data.is_well_quoted_value and self.ALLOWED_UNQUOTED_PATTERN.match(line_data.value): return True return False