credsweeper.deep_scanner package
Submodules
credsweeper.deep_scanner.abstract_scanner module
- class credsweeper.deep_scanner.abstract_scanner.AbstractScanner[source]
Bases:
ABCBase abstract class for all recursive scanners
- abstract data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Abstract method to be defined in DeepScanner
- deep_scan_with_fallback(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate][source]
Scans with deep scanners and fallback scanners if possible
- Parameters:
data_provider – DataContentProvider with raw data
depth – maximal level of recursion
recursive_limit_size – maximal bytes of opened files to prevent recursive zip-bomb attack
Returns: list with candidates
- abstract static get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int, limit: int) Tuple[List[Any], List[Any]][source]
Returns possibly scan methods for the data depends on content and fallback scanners
- static key_value_combination(structure: dict) Generator[Tuple[Any, Any], None, None][source]
Combine items by key and value from a dictionary for augmentation {…, “key”: “api_key”, “value”: “XXXXXXX”, …} -> (“api_key”, “XXXXXXX”)
- static read_compressed_with_limit(file: LZMAFile | GzipFile | BZ2File, limit: int) bytes[source]
Reads data with check limit for single compressed file
- recursive_scan(data_provider: DataContentProvider, depth: int = 0, recursive_limit_size: int = 0) List[Candidate][source]
Recursive function to scan files which might be containers like ZIP archives
- Parameters:
data_provider – DataContentProvider object may be a container
depth – maximal level of recursion
recursive_limit_size – maximal bytes of opened files to prevent recursive zip-bomb attack
- scan(content_provider: ContentProvider, depth: int, recursive_limit_size: int | None = None) List[Candidate][source]
Initial scan method to launch recursive scan. Skips ByteScanner to prevent extra scan
- Parameters:
content_provider – ContentProvider that might contain raw data
depth – maximal level of recursion
recursive_limit_size – maximal bytes of opened files to prevent recursive zip-bomb attack
- static structure_processing(structure: Any) Generator[Tuple[Any, Any], None, None][source]
Yields pair key, value from given structure if applicable
- structure_scan(struct_provider: StructContentProvider, depth: int, recursive_limit_size: int) List[Candidate][source]
Recursive function to scan structured data
- Parameters:
struct_provider – DataContentProvider object may be a container
depth – maximal level of recursion
recursive_limit_size – maximal bytes of opened files to prevent recursive zip-bomb attack
credsweeper.deep_scanner.byte_scanner module
- class credsweeper.deep_scanner.byte_scanner.ByteScanner[source]
Bases:
AbstractScanner,ABCImplements plain data scanning
credsweeper.deep_scanner.bzip2_scanner module
credsweeper.deep_scanner.cpio_scanner module
- class credsweeper.deep_scanner.cpio_scanner.CpioScanner[source]
Bases:
AbstractScanner,ABCImplements cpio scanning
- ASCII_HEADER = <_struct.Struct object>
- BIN_BE_HEADER = <_struct.Struct object>
- BIN_LE_HEADER = <_struct.Struct object>
- ODC_HEADER = <_struct.Struct object>
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts data file from .ar (cpioian) archive and launches data_scan
credsweeper.deep_scanner.crx_scanner module
credsweeper.deep_scanner.csv_scanner module
- class credsweeper.deep_scanner.csv_scanner.CsvScanner[source]
Bases:
AbstractScanner,ABCImplements CSV scanning
- CSV_PATTERN = re.compile(b'[^\r\n]{1,8000}[,;\t|\x1f][^\r\n]{1,8000}')
- DELIMITERS = ',;\t|\x1f'
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Tries to scan each row as structure with column name in key
- classmethod get_structure(text: str) List[Dict[str, Any]][source]
Reads a text as CSV standard with guessed dialect
- sniffer = <csv.Sniffer object>
credsweeper.deep_scanner.deb_scanner module
- class credsweeper.deep_scanner.deb_scanner.DebScanner[source]
Bases:
AbstractScanner,ABCImplements deb (ar) scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts data file from .ar (debian) archive and launches data_scan
credsweeper.deep_scanner.deep_scanner module
- class credsweeper.deep_scanner.deep_scanner.DeepScanner(config: Config, scanner: Scanner)[source]
Bases:
ByteScanner,Bzip2Scanner,CpioScanner,CrxScanner,CsvScanner,DexScanner,DocxScanner,EncoderScanner,GritScanner,GzipScanner,HtmlScanner,JclassScanner,JksScanner,LangScanner,LexerScanner,LzmaScanner,MxfileScanner,EmlScanner,OdsScanner,PatchScanner,PdfScanner,PickleScanner,PkcsScanner,PlistScanner,PngScanner,PptxScanner,ProtobufScanner,PycacheScanner,RtfScanner,RpmScanner,SquashfsScanner,Sqlite3Scanner,SnkScanner,StringsScanner,TarScanner,DebScanner,XmlScanner,XlsScanner,XlsxScanner,ZipScanner,ZlibScanner,ZstdScannerAdvanced scanner with recursive exploring of data
- MEDIA_PATTERNS: Dict[int, List[Tuple[bytes, Pattern | None]]] = {0: [(b'\x00\x00\x00\x0cjP \r\n\x87\n', None), (b'\x00\x00\x01\x00', None), (b'\x00\x00\x02\x00\x01\x00', None), (b'\x00\x01\x00\x00\x00', None), (b'\x00\x00\x00', re.compile(b'\x00\x00\x00[\x00-\xff]ftyp(3gp[4-9]|M4[ABPV] |qt |iso[2-9abcm]|mp4[12]|hei[cmsx]|dash|avi[fos]|jx[ls] |mif[12]|avc[1-4]|ccff)')), (b'\x00GITCRYPT\x00', None), (b'\x00asm', None), (b'\x00\x00\xff\xff\x00\x00d\x86', None)], 3: [(b'\x03\x00\x08\x00', None), (b'\x03\xf3\r\n', None), (b'\x03\x02#\x07', None)], 24: [(b'\x18\x00\x00\x00TFL3', None)], 26: [(b'\x1aE\xdf\xa3', None)], 28: [(b'\x1c\x00\x00\x00TFL3', None)], 30: [(b'\x1e\xe7', re.compile(b'\x1e\xe7(\xff\x00|\xff\x01|\x0fB)'))], 32: [(b' \x00\x00\x00TFL3', None)], 36: [(b'$\x00\x00\x00TFL3', None)], 55: [(b"7z\xbc\xaf'\x1c", None)], 56: [(b'8BPS\x00\x01\x00\x00\x00\x00\x00\x00', re.compile(b'8BPS\x00[\x01\x02]\x00\x00\x00\x00\x00\x00'))], 66: [(b'BM', re.compile(b'BM[\x00-\xff]{2}\x00{4}')), (b'BSJB\x01\x00\x01\x00\x00\x00\x00\x00', None)], 67: [(b'CWS', re.compile(b'CWS[\x06-+][^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 68: [(b'DDS ', re.compile(b'DDS [^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 70: [(b'FWS', re.compile(b'CWS[\x01-+][^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 71: [(b'GIF8', re.compile(b'GIF8[79]a[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'GOBJ\nMETADATA\r\n\x1a', None)], 73: [(b'II', re.compile(b'II[+*]\x00[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'II\xbc\x01', None), (b'ID3', re.compile(b'ID3[\x02\x03\x04]\x00\x00\x00'))], 77: [(b'MM', re.compile(b'MM\x00[+*][^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'MZ', re.compile(b'MZ[\x00-\xff]{4,80}?\x00\x00')), (b'Microsoft C/C++ ', re.compile(b'Microsoft C/C[+][+] (program database 2[.]00\r\n\x1aJG\x00\x00|MSF 7[.]00\r\n\x1aDS\x00\x00\x00)')), (b'MTME\x00\x00\x00', None), (b'MThd\x00\x00\x00', None)], 79: [(b'OggS', re.compile(b'OggS[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'OTTO\x00', re.compile(b'OTTO\x00[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 80: [(b'PACK\x00\x00\x00', None)], 82: [(b'RIF', re.compile(b'RIF[FX][\x00-\xff]{4}[ 0-9A-Za-z]{4}[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'RIDX\x00\x00\x00', None), (b'Rar!\x1a\x07', re.compile(b'Rar!\x1a\x07(\x00|\x01\x00)'))], 84: [(b'TZif', re.compile(b'TZif[\x00234]\x00{3}'))], 86: [(b'VCLMTF\x01\x00', None)], 88: [(b'XPCOM\nTypeLib\r\n\x1a', None), (b'XFIR', re.compile(b'XFIR[\x00-\xff]{4}[ 0-9A-Za-z]{4}[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 90: [(b'ZWS', re.compile(b'ZWS[\r-+][^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 102: [(b'ftyp', re.compile(b'ftyp(isom|MSNV)[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'fLaC', re.compile(b'fLaC[\x00-\x06]'))], 103: [(b'gimp xcf', re.compile(b'gimp xcf (file|v001|v002)\x00[^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]'))], 105: [(b'icns\x00', re.compile(b'icns\x00[\x00-\xff]{3}(IC(ON|N#)|ic([hms][#48]|s[bB]|l[48]|p[456]|0[45789]|1[0-4])|is32|s8mk|il32|l8mk|ih32|h8mk|it32|t8mk|sb24|SB24)'))], 116: [(b'ttcf\x00\x01\x00\x00', None), (b'ttcf\x00\x02\x00\x00', None)], 119: [(b'wOF', re.compile(b'wOF[2F][^\x00-\x08\x0c\x0e\x1f\x80-\xff]{0,4096}[\x00-\x08\x0c\x0e\x1f\x80-\xff]')), (b'wvpk', re.compile(b'wvpk[\x00-\xff]{4}[\x02-\x10]\x04'))], 120: [(b'xar!', re.compile(b'xar![\x00-\xff]{2}\x00\x01'))], 127: [(b'\x7fELF', re.compile(b'\x7fELF[\x01\x02][\x01\x02]\x01[\x00-\x12@-\xff]'))], 137: [(b'\x89PNG\r\n\x1a\n', None), (b'\x89HDF\r\n\x1a\n', None)], 147: [(b'\x93NUMPY', None)], 172: [(b'\xac\xed\x00\x05[p-~]', None)], 206: [(b'\xce\xfa\xed\xfe', None)], 207: [(b'\xcf\xfa\xed\xfe', None)], 208: [(b'\xd0\r\xfe\xed', None)], 222: [(b'\xde\x12\x04\x95', None)], 254: [(b'\xfe\xed\xfa\xce', None), (b'\xfe\xed\xfa\xcf', None)], 255: [(b'\xff', re.compile(b'\xff(\xd8\xff[\xdb\xee\xe1\xe0Q]|[\xfb\xf3\xf2])')), (b'\xfftOc\x00\x00\x00', None)]}
- static get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int, limit: int) Tuple[List[Any], List[Any]][source]
Returns possibly scan methods for the data depends on content and fallback scanners
credsweeper.deep_scanner.dex_scanner module
- class credsweeper.deep_scanner.dex_scanner.DexScanner[source]
Bases:
AbstractScanner,ABCImplements DEX scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts data from binary
credsweeper.deep_scanner.docx_scanner module
credsweeper.deep_scanner.eml_scanner module
credsweeper.deep_scanner.encoder_scanner module
- class credsweeper.deep_scanner.encoder_scanner.EncoderScanner[source]
Bases:
AbstractScanner,ABCImplements recursive iteration when data might be encoded from base64
- BASE64_PATTERN = re.compile(b'(\\xFF\\xFE|\\xFE\\xFF)?((?:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/+])|[\\s\\x00\\\\])+(?(a)(?(b)(?(c)(=+|$)|(?!x)x)|(?!x)x)|(?!x)x)|(?:(?P<e>[A-Z])|(?P<f>[a-z])|(?P<g>[0-9_-])|[\\s\\x00\\\\])+(?(e)(?)
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Tries to decode data from base64 encode to bytes and scan as bytes again
credsweeper.deep_scanner.grit_scanner module
- class credsweeper.deep_scanner.grit_scanner.GritScanner[source]
Bases:
AbstractScanner,ABCImplements pak files from grit scanning
credsweeper.deep_scanner.gzip_scanner module
credsweeper.deep_scanner.html_scanner module
- class credsweeper.deep_scanner.html_scanner.HtmlScanner[source]
Bases:
AbstractScanner,ABCImplements html scanning if possible
credsweeper.deep_scanner.jclass_scanner module
- class credsweeper.deep_scanner.jclass_scanner.JclassScanner[source]
Bases:
AbstractScanner,ABCImplements java .class scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts data from binary
- static get_utf8_constants(stream: BytesIO) List[str][source]
Extracts only Utf8 constants from java ClassFile
credsweeper.deep_scanner.jks_scanner module
credsweeper.deep_scanner.lang_scanner module
- class credsweeper.deep_scanner.lang_scanner.LangScanner[source]
Bases:
AbstractScanner,ABCImplements scanning of data if it is a script of some markup language
credsweeper.deep_scanner.lexer_scanner module
- class credsweeper.deep_scanner.lexer_scanner.LexerScanner[source]
Bases:
AbstractScanner,ABCImplements C source scanning with lexical info
- EASY_MATCHER = {'.c': <class 'pygments.lexers.c_cpp.CLexer'>, '.cc': <class 'pygments.lexers.c_cpp.CppLexer'>, '.cpp': <class 'pygments.lexers.c_cpp.CppLexer'>, '.cs': <class 'pygments.lexers.dotnet.CSharpLexer'>, '.cxx': <class 'pygments.lexers.c_cpp.CppLexer'>, '.h': <class 'pygments.lexers.c_cpp.CLexer'>, '.hh': <class 'pygments.lexers.c_cpp.CppLexer'>, '.hpp': <class 'pygments.lexers.c_cpp.CppLexer'>, '.hxx': <class 'pygments.lexers.c_cpp.CppLexer'>, '.java': <class 'pygments.lexers.jvm.JavaLexer'>, '.js': <class 'pygments.lexers.javascript.JavascriptLexer'>, '.m': <class 'pygments.lexers.objective.ObjectiveCLexer'>, '.mm': <class 'pygments.lexers.objective.ObjectiveCLexer'>, '.objj': <class 'pygments.lexers.javascript.ObjectiveJLexer'>, '.p6': <class 'pygments.lexers.perl.Perl6Lexer'>, '.pl': <class 'pygments.lexers.perl.PerlLexer'>, '.pl6': <class 'pygments.lexers.perl.Perl6Lexer'>, '.pm': <class 'pygments.lexers.perl.PerlLexer'>, '.raku': <class 'pygments.lexers.perl.Perl6Lexer'>, '.ts': <class 'pygments.lexers.javascript.TypeScriptLexer'>, '.v': <class 'pygments.lexers.hdl.VerilogLexer'>}
- GUESSED_LEXERS = (<class 'pygments.lexers.c_cpp.CLexer'>, <class 'pygments.lexers.c_cpp.CppLexer'>, <class 'pygments.lexers.jvm.JavaLexer'>, <class 'pygments.lexers.javascript.JavascriptLexer'>, <class 'pygments.lexers.dotnet.CSharpLexer'>, <class 'pygments.lexers.javascript.ObjectiveJLexer'>, <class 'pygments.lexers.perl.PerlLexer'>, <class 'pygments.lexers.perl.Perl6Lexer'>, <class 'pygments.lexers.javascript.TypeScriptLexer'>)
- LEXER_MATCHER = {('.c', '.h'): <class 'pygments.lexers.c_cpp.CLexer'>, ('.cpp', '.hpp', '.cc', '.hh', '.cxx', '.hxx'): <class 'pygments.lexers.c_cpp.CppLexer'>, ('.cs',): <class 'pygments.lexers.dotnet.CSharpLexer'>, ('.java',): <class 'pygments.lexers.jvm.JavaLexer'>, ('.js',): <class 'pygments.lexers.javascript.JavascriptLexer'>, ('.m', '.mm'): <class 'pygments.lexers.objective.ObjectiveCLexer'>, ('.objj',): <class 'pygments.lexers.javascript.ObjectiveJLexer'>, ('.p6', '.pl6', '.raku'): <class 'pygments.lexers.perl.Perl6Lexer'>, ('.pl', '.pm'): <class 'pygments.lexers.perl.PerlLexer'>, ('.ts',): <class 'pygments.lexers.javascript.TypeScriptLexer'>, ('.v',): <class 'pygments.lexers.hdl.VerilogLexer'>}
- SUPPORTED_EXTENSIONS = ('.c', '.h', '.cpp', '.hpp', '.cc', '.hh', '.cxx', '.hxx', '.java', '.js', '.cs', '.m', '.mm', '.objj', '.pl', '.pm', '.p6', '.pl6', '.raku', '.v', '.ts')
- SUPPORTED_LEXERS = (<class 'pygments.lexers.c_cpp.CLexer'>, <class 'pygments.lexers.c_cpp.CppLexer'>, <class 'pygments.lexers.jvm.JavaLexer'>, <class 'pygments.lexers.javascript.JavascriptLexer'>, <class 'pygments.lexers.dotnet.CSharpLexer'>, <class 'pygments.lexers.objective.ObjectiveCLexer'>, <class 'pygments.lexers.javascript.ObjectiveJLexer'>, <class 'pygments.lexers.perl.PerlLexer'>, <class 'pygments.lexers.perl.Perl6Lexer'>, <class 'pygments.lexers.hdl.VerilogLexer'>, <class 'pygments.lexers.javascript.TypeScriptLexer'>)
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Tries to scan C code with lexical structures
- static get_lexer(text: str, descriptor: Descriptor) Lexer[source]
Select a lexer for the source text.
A standard lexer is selected by file extension when available. Otherwise, the lexer is detected using the file path, file information, or, as a fallback, the source content itself.
- Parameters:
text – Source text to analyze.
descriptor – File descriptor containing the extension, path, and file information used for lexer detection.
- Returns:
A Pygments lexer suitable for parsing the source text.
- static get_lines_semicolon(text: str, lexer: Lexer) Tuple[List[str], List[int]][source]
Build logical source lines terminated by semicolons.
Joins consecutive physical lines until a semicolon terminating the current statement is encountered. Semicolons inside strings or other non-terminating lexical contexts do not split the statement.
Comments are extracted as separate logical lines and do not become part of the surrounding source statement.
- Returns:
logical source lines;
starting line number of each logical line in the original text.
- Return type:
A tuple of
credsweeper.deep_scanner.lzma_scanner module
credsweeper.deep_scanner.mxfile_scanner module
credsweeper.deep_scanner.ods_scanner module
credsweeper.deep_scanner.pandas_scanner module
credsweeper.deep_scanner.patch_scanner module
credsweeper.deep_scanner.pdf_scanner module
- class credsweeper.deep_scanner.pdf_scanner.PdfScanner[source]
Bases:
AbstractScanner,ABCImplements pdf scanning
credsweeper.deep_scanner.pickle_scanner module
- class credsweeper.deep_scanner.pickle_scanner.PickleScanner[source]
Bases:
AbstractScanner,ABCImplements pickle data scanning with pickletools
credsweeper.deep_scanner.pkcs_scanner module
credsweeper.deep_scanner.plist_scanner module
- class credsweeper.deep_scanner.plist_scanner.PlistScanner[source]
Bases:
AbstractScanner,ABCImplements binary plist data scanning
credsweeper.deep_scanner.png_scanner module
- class credsweeper.deep_scanner.png_scanner.PngScanner[source]
Bases:
AbstractScanner,ABCImplements PNG scanning for text chunks
credsweeper.deep_scanner.pptx_scanner module
credsweeper.deep_scanner.protobuf_scanner module
- class credsweeper.deep_scanner.protobuf_scanner.ProtobufScanner[source]
Bases:
AbstractScanner,ABCImplements protobuf (ar) scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts data file from protobuf payload and launches data_scan
- static match_protobuf(data: bytes | bytearray, offset: int, limit: int) bool[source]
Process data from start to end as simple protobuf chunk
Returns: True when whole chunk was utilized with protobuf structure
credsweeper.deep_scanner.pycache_scanner module
- class credsweeper.deep_scanner.pycache_scanner.PycacheScanner[source]
Bases:
AbstractScanner,ABCImplements python cache files scanning
- MATCHES_SIGNATURES = (b'\r\n\x00\x00\x00\x00', b'\r\n\x01\x00\x00\x00', b'\r\n\x03\x00\x00\x00')
credsweeper.deep_scanner.rpm_scanner module
- class credsweeper.deep_scanner.rpm_scanner.RpmScanner[source]
Bases:
AbstractScanner,ABCImplements rpm scanning
credsweeper.deep_scanner.rtf_scanner module
credsweeper.deep_scanner.snk_scanner module
- class credsweeper.deep_scanner.snk_scanner.SnkScanner[source]
Bases:
AbstractScanner,ABCImplements Snk files scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Scan .snk data for full (private+public) keys
credsweeper.deep_scanner.sqlite3_scanner module
- class credsweeper.deep_scanner.sqlite3_scanner.Sqlite3Scanner[source]
Bases:
AbstractScanner,ABCImplements SQLite3 database scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts data file from .ar (debian) archive and launches data_scan
credsweeper.deep_scanner.squashfs_scanner module
- class credsweeper.deep_scanner.squashfs_scanner.SquashfsScanner[source]
Bases:
AbstractScanner,ABCImplements squash file system scanning
credsweeper.deep_scanner.strings_scanner module
- class credsweeper.deep_scanner.strings_scanner.StringsScanner[source]
Bases:
AbstractScanner,ABCImplements known binary file scanning with ASCII strings representations
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Scan binary files for ASCII strings
credsweeper.deep_scanner.tar_scanner module
credsweeper.deep_scanner.tmx_scanner module
- class credsweeper.deep_scanner.tmx_scanner.TmxScanner[source]
Bases:
AbstractScanner,ABCRealises tmX files scanning for values only. Image tags are skipped.
credsweeper.deep_scanner.xls_scanner module
- class credsweeper.deep_scanner.xls_scanner.XlsScanner[source]
Bases:
PandasScanner,ABCImplements xls matching
credsweeper.deep_scanner.xlsx_scanner module
credsweeper.deep_scanner.xml_scanner module
- class credsweeper.deep_scanner.xml_scanner.XmlScanner[source]
Bases:
AbstractScanner,ABCRealises xml scanning
- XML_FIRST_BRACKET_PATTERN = re.compile(b'^\\s*<')
- XML_OPENING_TAG_PATTERN = re.compile(b'<([0-9A-Za-z_]{1,256})')
credsweeper.deep_scanner.zip_scanner module
- class credsweeper.deep_scanner.zip_scanner.ZipScanner[source]
Bases:
AbstractScanner,ABCImplements zip scanning
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Extracts files one by one from zip archives and launches data_scan
credsweeper.deep_scanner.zlib_scanner module
- class credsweeper.deep_scanner.zlib_scanner.ZlibScanner[source]
Bases:
AbstractScanner,ABCImplements zlib data inflate and scan
- data_scan(data_provider: DataContentProvider, depth: int, recursive_limit_size: int) List[Candidate] | None[source]
Inflate data from zlib compressed and launches data_scan
credsweeper.deep_scanner.zstd_scanner module
- class credsweeper.deep_scanner.zstd_scanner.ZstdScanner[source]
Bases:
AbstractScanner,ABCImplements zstd data inflate and scan